Android 笔记.代码段

来源:互联网 发布:mysql 清空数据库命令 编辑:程序博客网 时间:2024/04/30 03:05

原文出处:http://blog.csdn.net/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.csdn.net/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宽度设置.

在做项目中,有时候会遇到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 加载中文乱码

之前使用过loadData这种方式加载Html代码段.今天写一个功能需要使用,但是在我的手机(4.04)上却出现了中文乱码.无论如何设置编码,都无法发解决.
baidu一下,解决办法是 使用loadDataWithBaseURL.
解释:点击打开链接

9.Android ListView 点击后刷新.
<item name="android:choiceMode">singleChoice</item> 
这个标识ListView 为单选的属性.今天在开发的时候,发现点击完后,总会引发item里的图片再次刷新. 刚开始以为是Adapter的问题...  找了半天,去掉这个属性就好了.

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。

这方法可以让你的页面适应手机屏幕的分辨率,完整的显示在屏幕上,可以放大缩小。
推荐使用第二张方法


原创粉丝点击