1. 程式人生 > >Android開發的一些小技巧

Android開發的一些小技巧

本篇講述的是Android開發中遇到的一些好用的小技巧,或者一些實用的API,很多人都知道,但也有人不知道,記錄下來,如果能幫助到大家,也是極好的.有些工具和類我也會經常用,所以我會根據自己的想法去寫.有些地方坐在並沒有將這個工具的作用講出來,我會補充上去.

正文:


Environment.getExternalStorageDirectory() 進入手機根目錄


getExternalCacheDir(); 進入本軟體包名下的Cache目錄


getExternalFilesDir(null);本軟體包名下的Files目錄


Collections.sort

("list",);可對資料集合的排序


Collections.swap(mData,fromPosition,toPosition);交換資料的位置


android:layout_height="?android:attr/actionBarSize"這是導航欄的高度


android:configChanges="keyboardHidden|screenSize|orientation"在AndroidManifest中這樣的配置可以遮蔽橫豎屏切換的生命週期



Activity.startActivities()) 常用於在應用程式中間啟動其他的Activity.


TextUtils.isEmpty()) 簡單的工具類,用於檢測是否為空


Html.fromHtml()) 用於生成一個Html,引數可以是一個字串.個人認為它不是很快,所以我不怎麼經常去用.(我說不經常用它是為了重點突出這句話:請多手動構建 Spannable 來替換 Html.fromHtml),但是它對渲染從 web 上獲取的文字還是很不錯的。


TextView.setError() 在驗證使用者輸入的時候很棒


Build.VERSION_CODES 這個標明瞭當前的版本號,在處理相容性問題的時候經常會用到.點進去可以看到各個版本的不同特性


Log.getStackTraceString()) 方便的日誌類工具,方法Log.v()、Log.d()、Log.i()、Log.w()和Log.e()都是將資訊列印到LogCat中,有時候需要將出錯的資訊插入到資料庫或一個自定義的日誌檔案中,那麼這種情況就需要將出錯的資訊以字串的形式返回來,也就是使用static String getStackTraceString(Throwable tr)方法的時候.


LayoutInflater.from() 顧名思義,用於Inflate一個layout,引數是layout的id.這個經常寫Adapter的人會用的比較多.


ViewConfiguration.getScaledTouchSlop() 使用 ViewConfiguration 中提供的值以保證所有觸控的互動都是統一的。這個方法獲取的值表示:使用者的手滑動這個距離後,才判定為正在進行滑動.當然這個值也可以自己來決定.但是為了一致性,還是使用標準的值較好.


PhoneNumberUtils.convertKeypadLettersToDigits 顧名思義.將字母轉換為數字,類似於T9輸入法,


Context.getCacheDir() 獲取快取資料資料夾的路徑,很簡單但是知道的人不多,這個路徑通常在SD卡上(這裡的SD卡指的是廣義上的SD卡,包括外部儲存和內部儲存)Adnroid/data/您的應用程式包名/cache/ 下面.測試的時候,可以去這裡面看是否快取成功.快取在這裡的好處是:不用自己再去手動建立資料夾,不用擔心使用者把自己建立的資料夾刪掉,在應用程式解除安裝的時候,這裡會被清空,使用第三方的清理工具的時候,這裡也會被清空.


ArgbEvaluator 用於處理顏色的漸變。就像 Chris Banes 說的一樣,這個類會進行很多自動裝箱的操作,所以最好還是去掉它的邏輯自己去實現它。這個沒用過,不明其所以然,回頭再補充.


ContextThemeWrapper 方便在執行的時候修改主題.


Space space是Android 4.0中新增的一個控制元件,它實際上可以用來分隔不同的控制元件,其中形成一個空白的區域.這是一個輕量級的檢視元件,它可以跳過Draw,對於需要佔位符的任何場景來說都是很棒的。


ValueAnimator.reverse() 這個方法可以很順利地取消正在執行的動畫.我超喜歡.


DateUtils.formatDateTime() 用來進行區域格式化工作,輸出格式化和本地化的時間或者日期.


AlarmManager.setInexactRepeating) 通過鬧鈴分組的方式省電,即使你只調用了一個鬧鐘,這也是一個好的選擇,(可以確保在使用完畢時自動呼叫 AlarmManager.cancel ()。原文說的比較抽象,這裡詳細說一下:setInexactRepeating指的是設定非準確鬧鐘,使用方法:alarmManager.setInexactRepeating(AlarmManager.RTC, startTime,intervalL, pendingIntent),非準確鬧鐘只能保證大致的時間間隔,但是不一定準確,可能出現設定間隔為30分鐘,但是實際上一次間隔20分鐘,另一次間隔40分鐘。它的最大的好處是可以合併鬧鐘事件,比如間隔設定每30分鐘一次,不喚醒休眠,在休眠8小時後已經積累了16個鬧鐘事件,而在手機被喚醒的時候,非準時鬧鐘可以把16個事件合併為一個, 所以這麼看來,非準時鬧鐘一般來說比較節約能源.


Formatter.formatFileSize()) 一個區域化的檔案大小格式化工具。通俗來說就是把大小轉換為MB,G,KB之類的字串.


ActionBar.hide())/.show()) 顧名思義,隱藏和顯示ActionBar,可以優雅地在全屏和帶Actionbar之間轉換.


Linkify.addLinks()) 在Text上新增連結.很實用.


StaticLayout 在自定義 View 中渲染文字的時候很實用。


Activity.onBackPressed()) 很方便的管理back鍵的方法,有時候需要自己控制返回鍵的事件的時候,可以重寫一下.比如加入 “點兩下back鍵退出” 功能.


GestureDetector 用來監聽和相應對應的手勢事件,比如點選,長按,慢滑動,快滑動,用起來很簡單,比你自己實現要方便許多.


DrawFilter 可以讓你在不呼叫onDrew方法的情況下,操作canvas,比了個如,你可以在建立自定義 View 的時候設定一個 DrawFilter,給父 View 裡面的所有 View 設定反別名。


ActivityManager.getMemoryClass()) 告訴你你的機器還有多少記憶體,在計算快取大小的時候會比較有用.


ViewStub 它是一個初始化不做任何事情的 View,但是之後可以載入一個佈局檔案。在慢載入 View 中很適合做佔位符。唯一的缺點就是不支援標籤,所以如果你不太小心的話,可能會在檢視結構中加入不需要的巢狀。


SystemClock.sleep()) 這個方法在保證一定時間的 sleep 時很方便,通常我用來進行 debug 和模擬網路延時。


DisplayMetrics.density 這個方法你可以獲取裝置畫素密度,大部分時候最好讓系統來自動進行縮放資源之類的操作,但是有時候控制的效果會更好一些.(尤其是在自定義View的時候).


Pair.create()) 方便構建類和構造器的方法。