不知不觉中,就收集了超过70条的自己感觉有意思的代码片段,分为三篇文章:android有用代码片段、Android有用代码片段(二)、Android有用代码片段(三)、Android有用代码片段(四)这三篇,今天,开始第五篇的整理!这里解释一下,因为一、二、三都是每个有20个片段,但是在四中,由于第70个代码过长,所以在第四篇中,只有10个片段。


七十一、android自动跳转

有些时候需要类似这样的功能,在一个页面停留2秒后,跳转到另外一个页面!

第一种方法:

[java] view plain copy print ?
  1. Timer timer = new Timer();
  2. TimerTask timerTask = new TimerTask() {
  3. @Override
  4. public void run() {
  5. // 你要干的活
  6. }
  7. };
  8. timer.schedule(timerTask, 1000 * 2); //2秒后执行
Timer timer = new Timer(); TimerTask timerTask = new TimerTask() { @Override public void run() { // 你要干的活 } }; timer.schedule(timerTask, 1000 * 2); //2秒后执行
在run()方法里面写上你的跳转就可以了。

第二种方法:

[java] view plain copy print ?
  1. private final int SPLASH_DISPLAY_LENGHT = 2000;
  2. @Override
  3. public void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
  6. WindowManager.LayoutParams.FLAG_FULLSCREEN);
  7. setContentView(R.layout.splash);
  8. new Handler().postDelayed(new Runnable() {
  9. @Override
  10. public void run() {
  11. Intent intent = new Intent(Splash.this, XXX.class);
  12. Splash.this.startActivity(intent);
  13. overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
  14. Splash.this.finish();
  15. }
  16. }, SPLASH_DISPLAY_LENGHT);
  17. }
private final int SPLASH_DISPLAY_LENGHT = 2000; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.splash); new Handler().postDelayed(new Runnable() { @Override public void run() { Intent intent = new Intent(Splash.this, XXX.class); Splash.this.startActivity(intent); overridePendingTransition(R.anim.fade_in, R.anim.fade_out); Splash.this.finish(); } }, SPLASH_DISPLAY_LENGHT); }
使用handler延迟2秒后跳转。


七十二、Gally选中高亮状态

没有选中,在GalleryActivity中,设置gallery.setUnselectedAlpha(0.3f); 透明度为0.3

选中,在ImageAdapter的getView(int position, View convertView, ViewGroup parent)中,设置imageview.setBackgroundColor(Color.alpha(1)); 背景色为1

七十三、TextView颜色设置

[html] view plain copy print ?
  1. android:textColor //设置文本颜色
  2. android:textColorHighlight //被选中文字的底色,默认为蓝色
  3. android:textColorHint //设置提示信息文字的颜色,默认为灰色。与hint一起使用。
android:textColor //设置文本颜色 android:textColorHighlight //被选中文字的底色,默认为蓝色 android:textColorHint //设置提示信息文字的颜色,默认为灰色。与hint一起使用。

七十四、Button使用Shape
[java] view plain copy print ?
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <selector
  3. xmlns:android="http://schemas.android.com/apk/res/android">
  4. <item android:state_pressed="true" >
  5. <shape>
  6. <gradient
  7. android:startColor="#ff8c00"
  8. android:endColor="#FFFFFF"
  9. android:angle="270" />
  10. <stroke
  11. android:width="2dp"
  12. android:color="#dcdcdc" />
  13. <corners
  14. android:radius="2dp" />
  15. <padding
  16. android:left="10dp"
  17. android:top="10dp"
  18. android:right="10dp"
  19. android:bottom="10dp" />
  20. </shape>
  21. </item> <item android:state_focused="true" >
  22. <shape>
  23. <gradient
  24. android:startColor="#ffc2b7"
  25. android:endColor="#ffc2b7"
  26. android:angle="270" />
  27. <stroke
  28. android:width="2dp"
  29. android:color="#dcdcdc" />
  30. <corners
  31. android:radius="2dp" />
  32. <padding
  33. android:left="10dp"
  34. android:top="10dp"
  35. android:right="10dp"
  36. android:bottom="10dp" />
  37. </shape>
  38. </item> <item>
  39. <shape>
  40. <gradient
  41. android:startColor="#ff9d77"
  42. android:endColor="#ff9d77"
  43. android:angle="270" />
  44. <stroke
  45. android:width="2dp"
  46. android:color="#fad3cf" />
  47. <corners
  48. android:radius="2dp" />
  49. <padding
  50. android:left="10dp"
  51. android:top="10dp"
  52. android:right="10dp"
  53. android:bottom="10dp" />
  54. </shape>
  55. </item>
  56. </selector>
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" > <shape> <gradient android:startColor="#ff8c00" android:endColor="#FFFFFF" android:angle="270" /> <stroke android:width="2dp" android:color="#dcdcdc" /> <corners android:radius="2dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item android:state_focused="true" > <shape> <gradient android:startColor="#ffc2b7" android:endColor="#ffc2b7" android:angle="270" /> <stroke android:width="2dp" android:color="#dcdcdc" /> <corners android:radius="2dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item> <shape> <gradient android:startColor="#ff9d77" android:endColor="#ff9d77" android:angle="270" /> <stroke android:width="2dp" android:color="#fad3cf" /> <corners android:radius="2dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> </selector>

七十五、Android Drawable叠加处理方法

大家可能知道Bitmap的叠加处理在Android平台中可以通过Canvas一层一层的画就行了,而Drawable中如何处理呢? 除了使用BitmapDrawable的getBitmap方法将Drawable转换为Bitmap外,今天Android123给大家说下好用简单的LayerDrawable类,LayerDrawable顾名思义就是层图形对象。下面直接用一个简单的代码表示:

[java] view plain copy print ?
  1. Bitmap bm = BitmapFactory.decodeResource(getResources(),R.drawable.cwj);
  2. Drawable[] array = new Drawable[3]; array[0] = new PaintDrawable(Color.BLACK); //黑色
  3. array[1] = new PaintDrawable(Color.WHITE); //白色
  4. array[2] = new BitmapDrawable(bm); //位图资源
  5. LayerDrawable ld = new LayerDrawable(array); //参数为上面的Drawable数组
  6. ld.setLayerInset(1, 1, 1, 1, 1); //第一个参数1代表数组的第二个元素,为白色
  7. ld.setLayerInset(2, 2, 2, 2, 2); //第一个参数2代表数组的第三个元素,为位图资源
  8. mImageView.setImageDrawable(ld);
Bitmap bm = BitmapFactory.decodeResource(getResources(),R.drawable.cwj); Drawable[] array = new Drawable[3]; array[0] = new PaintDrawable(Color.BLACK); //黑色 array[1] = new PaintDrawable(Color.WHITE); //白色 array[2] = new BitmapDrawable(bm); //位图资源 LayerDrawable ld = new LayerDrawable(array); //参数为上面的Drawable数组 ld.setLayerInset(1, 1, 1, 1, 1); //第一个参数1代表数组的第二个元素,为白色 ld.setLayerInset(2, 2, 2, 2, 2); //第一个参数2代表数组的第三个元素,为位图资源 mImageView.setImageDrawable(ld);

上面的方法中LayerDrawable是关键,Android开发网提示setLayerInset方法原型为public void setLayerInset (int index, int l, int t, int r, int b) 其中第一个参数为层的索引号,后面的四个参数分别为left、top、right和bottom。对于简单的图片合成我们可以将第一和第二层的PaintDrawable换成BitmapDrawable即可实现简单的图片合成。


七十六、Android发信息时观察者

发信息大致的流程是:

观察者,ContentObserver

观察信息变化,它只能观察所有 就是 :Uri:content://sms/

你点击了发送按钮后,状态还是正在发送,这时这条信息已在你不注意时插入到发件箱中(调用 onChange一次,你可以查一下outbox的内容),当发送成功后(就会打发件箱的临时信息删除 又调用一次 onChange),成功后插入到已发信息sent(这是又会调用 onChange),它会调用三次,所以你们在观察发送信息时会出现onChange出现三次,这个解决方案我暂时只想到两种方案:

[java] view plain copy print ?
  1. 1:就是在contetnobserver类里定义一个变量 int count=0;
  2. @Override
  3. public void onChange(boolean selfChange) {
  4. count++;
  5. //调用第三次才是已发信息
  6. if(count==3){
  7. //代表发送了一条信息
  8. Log.i("wet", "发送了一条信息");
  9. count=0;//以便第下次用
  10. }
  11. 2:还有一个是:
  12. 记录 context.getContentResolver().query(Uri.parse("content://sms/sent"), null, null, null, null);
  13. 首先记录它上次的条数
  14. 然后再记录它这次的条数,如果改变了,那就代表它改变了
1:就是在contetnobserver类里定义一个变量 int count=0; @Override public void onChange(boolean selfChange) { count++; //调用第三次才是已发信息 if(count==3){ //代表发送了一条信息 Log.i("wet", "发送了一条信息"); count=0;//以便第下次用 } 2:还有一个是: 记录 context.getContentResolver().query(Uri.parse("content://sms/sent"), null, null, null, null); 首先记录它上次的条数 然后再记录它这次的条数,如果改变了,那就代表它改变了
七十七、Android屏幕解锁和点亮屏幕

最近在做一个闹钟的项目,当闹钟响起的时候需要用到自动解锁和点亮屏幕,因此记录一下解屏幕锁与点亮屏幕的代码:

[java] view plain copy print ?
  1. KeyguardManager km= (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); //得到键盘锁管理器对象
  2. KeyguardLock kl = km.newKeyguardLock("unLock"); //参数是LogCat里用的Tag
  3. kl.disableKeyguard(); //解锁
  4. PowerManager pm=(PowerManager) getSystemService(Context.POWER_SERVICE);//获取电源管理器对象
  5. PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, "bright");
  6. //获取PowerManager.WakeLock对象,后面的参数|表示同时传入两个值,最后的是LogCat里用的Tag
  7. wl.acquire();//点亮屏幕
  8. wl.release();//释放
  9. 要实现自动解锁和点亮屏幕的功能则需要在AndroidManifest.xml添加权限:
  10. <uses-permission android:name="android.permission.WAKE_LOCK" />
  11. <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />

更多相关文章

  1. 《Android面试宝典》学习笔记(第四章:对话框、信息提示和菜单)
  2. Android(安卓)自定义 Dialog 大小 位置 样式
  3. Android中显示照片的Exif信息
  4. Android将drawable图像转化为二进制字节数组与逆转换
  5. Android:WebView与Javascript交互(相互调用参数、传值)
  6. Android(安卓)2.3 r1 中文API (78)—— ViewAnimator
  7. Android系统信息和安全机制(学习笔记)
  8. Android解析JSON
  9. Android(安卓)之 Socket 通信

随机推荐

  1. strcmp的返回值 字符串比较
  2. 手把手教你 Netty 实现自定义协议!
  3. 爱奇艺效果广告的个性化探索与实践
  4. 断点回归设计RDD精辟解释, 保证你一辈子
  5. 小诺奖得主3年后又成美国艺术与科学院士,
  6. 深度学习技术在美图个性化推荐的应用实践
  7. Django链接mysql数据库
  8. Linux之常用基础命令简介
  9. 0319作业-常用html元素(上)
  10. CSS:flex布局理解及实例演示flex容器中的