不知不觉中,就收集了超过70条的本身感受有意思的代码片断,分为三篇文章:android有用代码片断、Android有用代码片断(二)、Android有用代码片断(三)、Android有用代码片断(四)这三篇,今天,开始第五篇的整理!这里解释一下,由于1、2、三都是每一个有20个片断,可是在四中,因为第70个代码过长,因此在第四篇中,只有10个片断。
七11、android自动跳转html
有些时候须要相似这样的功能,在一个页面停留2秒后,跳转到另一个页面!java
第一种方法:
android
- Timer timer = new Timer();
-
- TimerTask timerTask = new TimerTask() {
-
- @Override
- public void run() {
- // 你要干的活
-
- }
- };
- 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()方法里面写上你的跳转就能够了。
第二种方法:数组
- 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);
- }
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秒后跳转。
七12、Gally选中高亮状态ide
没有选中,在GalleryActivity中,设置gallery.setUnselectedAlpha(0.3f); 透明度为0.3post
选中,在ImageAdapter的getView(int position, View convertView, ViewGroup parent)中,设置imageview.setBackgroundColor(Color.alpha(1)); 背景色为1
ui
七十3、TextView颜色设置this
- android:textColor //设置文本颜色
-
- android:textColorHighlight //被选中文字的底色,默认为蓝色
-
- android:textColorHint //设置提示信息文字的颜色,默认为灰色。与hint一块儿使用。
android:textColor //设置文本颜色 android:textColorHighlight //被选中文字的底色,默认为蓝色 android:textColorHint //设置提示信息文字的颜色,默认为灰色。与hint一块儿使用。
七十4、Button使用Shape
- <?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>
<?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>
七十5、Android Drawable叠加处理方法spa
你们可能知道Bitmap的叠加处理在Android平台中能够经过Canvas一层一层的画就好了,而Drawable中如何处理呢? 除了使用BitmapDrawable的getBitmap方法将Drawable转换为Bitmap外,今天Android123给你们说下好用简单的LayerDrawable类,LayerDrawable顾名思义就是层图形对象。下面直接用一个简单的代码表示:
.net
- 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);
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便可实现简单的图片合成。
七十6、Android发信息时观察者
发信息大体的流程是:
观察者,ContentObserver
观察信息变化,它只能观察全部 就是 :Uri:content://sms/
你点击了发送按钮后,状态仍是正在发送,这时这条信息已在你不注意时插入到发件箱中(调用 onChange一次,你能够查一下outbox的内容),当发送成功后(就会打发件箱的临时信息删除 又调用一次 onChange),成功后插入到已发信息sent(这是又会调用 onChange),它会调用三次,因此大家在观察发送信息时会出现onChange出现三次,这个解决方案我暂时只想到两种方案:
- 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);
-
- 首先记录它上次的条数
-
- 而后再记录它此次的条数,若是改变了,那就表明它改变了
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); 首先记录它上次的条数 而后再记录它此次的条数,若是改变了,那就表明它改变了
七十7、Android屏幕解锁和点亮屏幕
最近在作一个闹钟的项目,当闹钟响起的时候须要用到自动解锁和点亮屏幕,所以记录一下解屏幕锁与点亮屏幕的代码:
- KeyguardManager km= (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); //获得键盘锁管理器对象
- KeyguardLock kl = km.newKeyguardLock("unLock"); //参数是LogCat里用的Tag
-
- kl.disableKeyguard(); //解锁
-
- PowerManager pm=(PowerManager) getSystemService(Context.POWER_SERVICE);//获取电源管理器对象
- PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, "bright");
- //获取PowerManager.WakeLock对象,后面的参数|表示同时传入两个值,最后的是LogCat里用的Tag
- wl.acquire();//点亮屏幕
- wl.release();//释放
-
- 要实现自动解锁和点亮屏幕的功能则须要在AndroidManifest.xml添加权限:
-
- <uses-permission android:name="android.permission.WAKE_LOCK" />
- <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />