Android Support Library Revision 24.2.0

圖片描述

Google正式發佈更新了Android Support Library Revision 24.2.0 版本。此次更新絕對知足了每一位 Android Developer 的胃口,我也是第一時間整理,翻譯學習,記錄於此,快來看看都有哪些變化吧。html

值得注意的是,24.2.0版本的Support包再也不支持Android 2.2(API Level 8)以及更低版本,而以前僅存在於這些系統的classes和methods已經被標記爲deprecated(廢棄)而且不該該再被使用了,他們可能會被移除而且以一個新的特性出如今新版本中。android

v4 包的分割

新版Support包中,以前廣爲人知的大而全的v4包將被分割成幾個更小的包,分別爲:框架

support-compat
New Framework APIs的兼容包,好比 Context.getDrawable() 的兼容使用;工具

support-core-utils
工具類的兼容包,好比AsyncTaskLoader 和 PermissionChecker;佈局

support-core-ui
UI組件的兼容包,常見如ViewPager、NestedScrollView 和 ExploreByTouchHelper;學習

support-media-compat
多媒體框架的兼容包,包括 MediaBrowser 和 MediaSession;ui

support-fragment
Fragment框架的兼容包,這個就不用舉例說明了,相信每個人都用過;spa

通過這樣的分類隔離,之後不會再由於單獨使用某一個功能而將整個v4包導入項目中,而是各取所需,大大減少了APK的大小,真是貼心之至啊。翻譯

API 的更新

  1. 客戶端可使用 Custom Tabs 控制 使用打開 Install Apps 功能;htm

  2. TextInputLayout 支持密碼的顯示隱藏控制;

  3. 新 android.support.transition 包支持 Transitions 框架到 API Level 14以及更高版本;

  4. Custom Tabs support library 添加支持自定義 RemoteViews 到第二層 Toolbar 上;

  5. AppCompatResources 經過 getDrawable( ) 方法,添加支持加載 <vector> (API level 9及更高版本)和 <animated-vector>(API level 11及更高版本) 資源;

  6. CoordinatorLayout 支持定義 inset views,而且指定其餘 Views 避開這些 inset views 。這個翻譯過來有點生澀,若是你知道FloatingActionButton如何在Snackbar展現的時候躲避移動的話,就好理解了,這裏就是制定相似的behavior規則,只不過能夠適用於其餘協調者佈局裏面的 Children Views 了;

  7. 新工具類 DiffUtil 可以提供計算兩個集合(collections)之間的不一樣,而且生成適用於 相似RecyclerView的適配器(Adapter)的一系列更新操做的list對象;(有木有感覺到一會兒少些了不少代碼的嗖嗖涼意)

  8. 自定義的Behavior新增了 RecyclerView.OnFlingListener 來響應滑動事件。

Behavior 的改變

  • 當你使用兼容包中的 day/night 功能時,任什麼時候候的夜間模式的改變都會致使系統自動從新建立Activity。致使夜間模式切換的緣由多是一天中時間的變化,也多是程序執行了 AppCompatDelegate.setLocalNightMode() 方法;

  • 狀態欄若是是半透明的話,Snackbar 將繪製顯示在導航欄後面。

一些廢棄 APIs

新版兼容包提出了在將來的版本中即將廢棄的一些類和方法,並使用新的 APIs替代,開發者應該儘快適應熟悉這些 APIs。

  1. 如下這些類僅支持 API Level 8 以及更低版本,而且應該使用新的 APIs 替代她們:
    1: KeyEventCompat: Replace with KeyEvent
    2: MotionEventCompat: Use MotionEvent
    3: ViewCompat: Use View
    4: ViewConfigurationCompat: Use ViewConfiguration

  2. AccessibilityServiceInfoCompat.getDescription()方法的廢棄;

  3. 你不能再直接實例化 ActivityCompat 類,非靜態方法 getReferrer(Activity) 將在將來的新版本中改成靜態方法;

  4. CoordinatorLayout.Behavior.isDirty()已經被廢棄,全部相關的實現都應該被移除掉;

  5. MediaSessionCompat.obtain() 已經被廢棄,取而代之的方法是 fromMediaSession() ;

  6. MediaSessionCompat.QueueItem.obtain() 已經被廢棄,取而代之的方法是 fromQueueItem();

  7. 如下抽象類已經被廢棄,而且使用了接口類取而代之:
    1: AccessibilityManagerCompat.AccessibilityStateChangeListenerCompat:替代接口類爲 AccessibilityManagerCompat.AccessibilityStateChangeListener;
    2: SearchViewCompat.OnCloseListenerCompat:替代接口類爲 earchViewCompat.OnCloseListener;
    3: SearchViewCompat.OnQueryTextListenerCompat:替代接口類爲 SearchViewCompat.OnQueryTextListener;
    4: SearchViewCompat.OnQueryTextListenerCompat:替代接口類爲:SearchViewCompat.OnQueryTextListener;

  8. CustomTabsSession.setToolbarItem() 已經被廢棄,取而代之的是 setSecondaryToolbarViews();

Bug 修復

如下幾天已知的問題已經在新發布的24.2.0版本中修復:

  1. AOSP issue 77712:確保調用 setRefreshing(true) 時 SwipeRefreshLayout 的指示器可以獲得顯示;

  2. AOSP issue 180454:修復了切換頁面時 TabLayout 的閃爍問題;

  3. AOSP issue 196430:修復了在 API Level 11 及更低版本解析 SavedState 時發生的 ClassNotFoundException 異常問題;

完整的 BUG 修復列表能夠在 AOSP Issue Tracker 上看到。

以上即是 24.2.0 版本的Support包的變化,目前來說,v4包的分割仍是最使人興奮的,畢竟給APK瘦身是最可以直接體如今用戶身上的。固然,其餘的一些變化也是值得注意的,畢竟要跟着 Google 的步伐與時俱進嘛!

Android Support Library Revision 24.2.0 官方英文介紹地址

by anonymous

相關文章
相關標籤/搜索