原文出处:http://blog.youkuaiyun.com/mmmlllii/article/details/8226030
附1.后台线程设置优先级 Process.setThreadPriority()
附2.耗时的广播,使用IntentService处理繁重任务
如果onReceive()衍生了一个线程并且返回,则包涵新线程在内的整个进程都被会判为失活状态(除非进程内的其它应用程序组件仍处于活跃状态),于是它就有可能被杀掉。这个问题的解决方法是令onReceive()启动一个新服务,并用其完成任务,于是系统就会知道进程中仍然在处理着工作。
int THREAD_PRIORITY_AUDIO //标准音乐播放使用的线程优先级
int THREAD_PRIORITY_BACKGROUND //标准后台程序
int THREAD_PRIORITY_DEFAULT // 默认应用的优先级
int THREAD_PRIORITY_DISPLAY //标准显示系统优先级,主要是改善UI的刷新
int THREAD_PRIORITY_FOREGROUND //标准前台线程优先级
int THREAD_PRIORITY_LESS_FAVORABLE //低于favorable
int THREAD_PRIORITY_LOWEST //有效的线程最低的优先级
int THREAD_PRIORITY_MORE_FAVORABLE //高于favorable
int THREAD_PRIORITY_URGENT_AUDIO //标准较重要音频播放优先级
int THREAD_PRIORITY_URGENT_DISPLAY //标准较重要显示优先级,对于输入事件同样适用
1.onCLick
if (System.currentTimeMillis() - mLastClickTime < 300) {
// in order to avoid user click bottom too quickly
return;
}
if (!button.isEnabled())
return;
mLastClickTime = System.currentTimeMillis();
mLastButtonId = button.getId();
这样写,在一般场景下会更严谨,防止一些重复点击之类的操作,可以根据自己的情况,在进行添加.
2.TextView跑马灯
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:singleLine="true"
这个跑马灯需要在获取焦点的时候才能有效果.
不获取焦点也有跑马灯效果.
自定义一个TextView,它继承TextView,并且重写isFocuse()方法,让它永远返回true.
3.SlidingDrawer 点击事件传递到下面布局的问题.
今天看到一个,在使用了SlidingDrawer ,open状态下,仍然能触发抽屉覆盖的View点击事件.
解决办法.在content 添加 android:clickable="true" 属性. 猜测应该是因为 默认的content没有任何事件,就传递到下面.
4.Android 4.0 HttpURLConnection 下载失败问题
http://blog.youkuaiyun.com/mmmlllii/article/details/8000081
5.View高度获取
在OnCreate()方法中获取控件的高度和宽度,需要使用的一个观察者(否则得到的height, paddingTop等数据为0,因onCreate()执行时,控件还未加载完成)
ViewTreeObserver vto = imageview.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// 此句若不执行,不影响控件宽高的获取结果,但是当前的onGlobalLayout()会执行多次,执行此句,当前方法只会执行一次
imageview.getViewTreeObserver().removeGlobalOnLayoutListener(
this);
Log.i("TAG", imageview.getMeasuredHeight()
+ " -- - " + imageview.getHeight());
}
});
6.页面跳转动画 android:minSdkVersion="8"
Intent intent = new Intent(TransitionActivity.this, DeviceActivity.class);
startActivity(intent);
finish();
//页面切换 -- 淡入淡出效果
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
7. Dialog宽度设置.
WindowManager m = getWindowManager();
Display d = m.getDefaultDisplay(); //为获取屏幕宽、高
LayoutParams p = getWindow().getAttributes(); //获取对话框当前的参数值
Point outSize = new Point();
d.getSize(outSize);
Log.i(TAG, outSize.x + "-" + outSize.y);
p.width = (int) (outSize.x * 0.6);
p.alpha = 1.0f;
p.dimAmount = 0.7f;
p.gravity = Gravity.CENTER;
getWindow().setAttributes(p);
8.Android 4.0 WebView loadData 加载中文乱码
10.Webview--让加载进来的页面自适应手机屏幕分辨率居中显示.
10让Webview加载的页面居中显示有我知道的俩种方法第一种:
[java]
WebSettings settings = webView.getSettings();
settings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
LayoutAlgorithm是一个枚举用来控制页面的布局,有三个类型:
1.NARROW_COLUMNS:可能的话使所有列的宽度不超过屏幕宽度
2.NORMAL:正常显示不做任何渲染
3.SINGLE_COLUMN:把所有内容放大webview等宽的一列中
用SINGLE_COLUMN类型可以设置页面居中显示,页面可以放大缩小,但这种方法不怎么好,有时候会让你的页面布局走样而且我测了一下,只能显示中间那一块,超出屏幕的部分都不能显示。
第二种方法:
[java]
//设置加载进来的页面自适应手机屏幕
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
第一个方法设置webview推荐使用的窗口,设置为true。第二个方法是设置webview加载的页面的模式,也设置为true。
这方法可以让你的页面适应手机屏幕的分辨率,完整的显示在屏幕上,可以放大缩小。
推荐使用第二张方法