Android開發貼士集合(5)
這是Android開發貼士的最后一篇。這些技巧都經過我親自測試。如果后面遇到新的技巧,我會繼續和大家分享。不過不會是每天都有了。祝大家愉快。
ViewDragHelper ——視圖拖動是一個比較復雜的問題。這個類可以幫助解決不少問題。如果你需要一個例子,DrawerLayout就是利用它實現掃滑。Flavient Laurent 還寫了一些關于這方面的優秀文章。
PopupWindow——Android到處都在使用PopupWindow ,甚至你都沒有意識到(標題導航條ActionBar,自動補全AutoComplete,編輯框錯誤提醒Edittext Errors)。這個類是創建浮層內容的主要方法。
Actionbar.getThemrContext()——導航欄的主題化是很復雜的(不同于Activity其他部分的主題化)。你可以得到一個上下文(Context),用這個上下文創建的自定義組件可以得到正確的主題。
ThumbnailUtils——幫助創建縮略圖。通常我都是用現有的圖片加載庫(比如,Picasso 或者 Volley),不過這個ThumbnaiUtils可以創建視頻縮略圖。
譯者注:該API從V8才開始支持。
Context.getExternalFilesDir()———— 申請了SD卡寫權限后,你可以在SD的任何地方寫數據,把你的數據寫在設計好的合適位置會更加有禮貌。這樣數據可以及時被清理,也會有更好的用戶體驗。此外,Android 4.0 Kitkat中在這個文件夾下寫數據是不需要權限的,每個用戶有自己的獨立的數據存儲路徑。
譯者注:該API從V8才開始支持。
SparseArray——Map的高效優化版本。推薦了解姐妹類SparseBooleanArray、SparseIntArray和SparseLongArray。
PackageManager.setComponentEnabledSetting()——可以用來啟動或者禁用程序清單中的組件。對于關閉不需要的功能組件是非常贊的,比如關掉一個當前不用的廣播接收器。
SQLiteDatabase.yieldIfContendedSafely()——讓你暫時停止一個數據庫事務, 這樣你可以就不會占用太多的系統資源。
Environment.getExternalStoragePublicDirectory()——還是那句話,用戶期望在SD卡上得到統一的用戶體驗。用這個方法可以獲得在用戶設備上放置指定類型文件(音樂、圖片等)的正確目錄。
View.generateViewId()——每次我都想要推薦動態生成控件的ID。需要注意的是,不要和已經存在的控件ID或者其他已經生成的控件ID重復。
ActivityManager.clearApplicationUserData()—— 一鍵清理你的app產生的用戶數據,可能是做用戶退出登錄功能,有史以來最簡單的方式了。
Context.createConfigurationContext() ——自定義你的配置環境信息。我通常會遇到這樣的問題:強制讓一部分顯示在某個特定的環境下(倒不是我一直這樣瞎整,說來話長,你很難理解)。用這個實現起來可以稍微簡單一點。
ActivityOptions ——方便的定義兩個Activity切換的動畫。 使用ActivityOptionsCompat 可以很好解決舊版本的兼容問題。
AdapterViewFlipper.fyiWillBeAdvancedByHostKThx()——僅僅因為很好玩,沒有其他原因。在整個安卓開源項目中(AOSP the Android ——pen Source Project Android開放源代碼項目)中還有其他很有意思的東西(比如 GRAVITY_DEATH_STAR_I)。不過,都不像這個這樣,這個確實有用。
譯者注:該API從V11才開始支持。
ViewParent.requestDisallowInterceptTouchEvent() ——Android系統觸摸事件機制大多時候能夠默認處理,不過有時候你需要使用這個方法來剝奪父級控件的控制權(順便說一下,如果你想對Android觸摸機制了解更多,這個演講會令你驚嘆不已。)
原文鏈接: danlew 翻譯: 伯樂在線 - JerrySher
譯文鏈接: http://blog.jobbole.com/72523/