博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android有用代码片断(五)
阅读量:6866 次
发布时间:2019-06-26

本文共 7487 字,大约阅读时间需要 24 分钟。

hot3.png

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

七十一、android自动跳转

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

第一种方法:

[java]
  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]
  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]
  1. android:textColor //设置文本颜色
  2. android:textColorHighlight //被选中文字的底色,默认为蓝色
  3. android:textColorHint //设置提示信息文字的颜色,默认为灰色。与hint一起使用。
android:textColor //设置文本颜色 android:textColorHighlight //被选中文字的底色,默认为蓝色 android:textColorHint //设置提示信息文字的颜色,默认为灰色。与hint一起使用。
七十四、Button使用Shape
[java]
  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]
  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]
  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]
  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" /> 

 

 

转载于:https://my.oschina.net/curitis/blog/57903

你可能感兴趣的文章
《JUnit实战(第2版)》—第2章2.1节探索JUnit核心
查看>>
Docker背后的内核知识:命名空间资源隔离
查看>>
《圣殿祭司的ASP.NET4.0专家技术手册》---- 1-13 ClientBuilderManager类别的编译功能...
查看>>
《Java编码指南:编写安全可靠程序的75条建议(英文版)》—— 2.7 修复错误...
查看>>
《Redis入门指南(第2版)》一3.2 字符串类型
查看>>
《Adobe Flash Professional CC经典教程》——1.3 使用“库”面板
查看>>
《Android应用开发入门经典(第3版)》——导读
查看>>
xmemcached发布1.3.6
查看>>
《Nmap渗透测试指南》—第6章6.4节IP欺骗
查看>>
Samba 系列(九):将 CentOS 7 桌面系统加入到 Samba4 AD 域环境中
查看>>
《精通自动化测试框架设计》目录—导读
查看>>
《C Primer Plus(第6版)中文版》一第1章 初识C语言1.1 C语言的起源
查看>>
升级到12c云数据库的最佳实践
查看>>
《C语言及程序设计》实践参考——分数的累加
查看>>
每个设计师需知的40个设计素材站
查看>>
《C语言及程序设计》实践参考——当年第几天
查看>>
[LeetCode]130.Surrounded Regions
查看>>
从月薪5千到月薪3万,优秀的程序员是这样做的...
查看>>
[转载]《吴恩达深度学习核心笔记》发布,黄海广博士整理!
查看>>
前端使用fis3开启本地服务器,并实现热加载功能
查看>>