不知不覺中,就收集了超過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" />