Android開發貼士集合(5)

jopen 10年前發布 | 18K 次閱讀 Android Android開發 移動開發

這是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/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!