七十一、android自动跳转
有些时候需要类似这样的功能,在一个页面停留2秒后,跳转到另外一个页面!
第一种方法:
- Timer timer = new Timer();
- TimerTask timerTask = new TimerTask() {
- @Override
- public void run() {
- // 你要干的活
- }
- };
- timer.schedule(timerTask, 1000 * 2); //2秒后执行
第二种方法:
- 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);
- }
没有选中,在GalleryActivity中,设置gallery.setUnselectedAlpha(0.3f); 透明度为0.3
选中,在ImageAdapter的getView(int position, View convertView, ViewGroup parent)中,设置imageview.setBackgroundColor(Color.alpha(1)); 背景色为1
七十三、TextView颜色设置
- android:textColor //设置文本颜色
- android:textColorHighlight //被选中文字的底色,默认为蓝色
- android:textColorHint //设置提示信息文字的颜色,默认为灰色。与hint一起使用。
- <?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顾名思义就是层图形对象。下面直接用一个简单的代码表示:
- 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出现三次,这个解决方案我暂时只想到两种方案:
- 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);
- 首先记录它上次的条数
- 然后再记录它这次的条数,如果改变了,那就代表它改变了
最近在做一个闹钟的项目,当闹钟响起的时候需要用到自动解锁和点亮屏幕,因此记录一下解屏幕锁与点亮屏幕的代码:
- 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" />