Android小技巧(5)

發表於2015-04-13

前言

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

正文

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)。不過,都不像這個這樣,這個確實有用

ViewParent.requestDisallowInterceptTouchEvent() ——Android系統觸控事件機制大多時候能夠預設處理,不過有時候你需要使用這個方法來剝奪父級控制元件的控制權(順便說一下,如果你想對Android觸控機制瞭解更多,這個演講會令你驚歎不已。)

相關文章