導航:首頁 > 操作系統 > android支持包

android支持包

發布時間:2025-04-12 15:51:45

android控制項RecyclerView和ListView的異同

Android是一個不斷進化的平台,Android
5.0的v7版本支持包中引入了新的RecyclerView控制項,正如官方文檔所言,RecyclerView是ListView的豪華增強版。它主要
包含以下幾處新的特性,如ViewHolder,ItemDecorator,LayoutManager,SmothScroller以及增加或刪除
item時item動畫等。官方推薦我們採用RecyclerView來取代ListView。

ViewHolder

ViewHolder是用來保存視圖引用的類,無論是ListView亦或是RecyclerView。只不過在ListView
中,ViewHolder需要自己來定義,且這只是一種推薦的使用方式,不使用當然也可以,這不是必須的。只不過不使用ViewHolder的
話,ListView每次getView的時候都會調用findViewById(int),這將導致ListView性能展示遲緩。而在
RecyclerView中使用 RecyclerView.ViewHolder 則變成了必須,盡管實現起來稍顯復雜,但它卻解決了ListView面臨的上述不使用自定義ViewHolder時所面臨的問題。 RecyclerView.ViewHolder 被BaseAdapter使用,以將posiiton綁定到上面(可以通過API查看 RecyclerView.ViewHolder#getPosition() 方法)。

LayoutManager

我們知道ListView只能在垂直方向上滾動,Android
API沒有提供ListView在水平方向上面滾動的支持。或許有多種方式實現水平滑動,但是請想念我,ListView並不是設計來做這件事情的。但是
RecyclerView相較於ListView,在滾動上面的功能擴展了許多。它可以支持多種類型列表的展示要求,主要如下:

LinearLayoutManager ,可以支持水平和豎直方向上滾動的列表。

StaggeredGridLayoutManager ,可以支持交叉網格風格的列表,類似於瀑布流或者Pinterest。

GridLayoutManager ,支持網格展示,可以水平或者豎直滾動,如展示圖片的畫廊。

ItemAnimator

列表動畫是一個全新的、擁有無限可能的維度。起初的Android API中,刪除或添加item時,item是無法產生動畫效果的。後面隨著Android的進化,Google的Chat Hasse推薦使用 ViewPropertyAnimator 屬性動畫來實現上述需求。

相比較於ListView, RecyclerView.ItemAnimator 則被提供用於在RecyclerView添加、刪除或移動item時處理動畫效果。同時,如果你比較懶,不想自定義ItemAnimator,你還可以使用 DefaultItemAnimator 。

Adapter

ListView的Adapter中,getView是最重要的方法,它將視圖跟position綁定起來,是所有神奇的事情發生的地方。同時我們也能夠
通過registerDataObserver在Adapter中注冊一個觀察者。RecyclerView也有這個特性, RecyclerView.AdapterDataObserver

就是這個觀察者。ListView有三個Adapter的默認實現,分別是ArrayAdapter、CursorAdapter和
SimpleCursorAdapter。然而,RecyclerView的Adapter則擁有除了內置的內DB游標和ArrayList的支持之外的
所有功能。 RecyclerView.Adapter 的實現的,我們必須採取措施將數據提供給Adapter,正如BaseAdapter對ListView所做的那樣。

ItemDecoration

在ListView中如果我們想要在item之間添加間隔符,我們只需要在布局文件中對ListView添加如下屬性即可:

1 android:divider="@android:color/transparent"
2 android:dividerHeight="5dp"

View Code

有趣的是,RecyclerView在默認情況下並不在item之間展示間隔符。盡管Google的傢伙有意地將這個問題遺留給我們去自定義間隔符,但這
的確增加了開發人員的負擔。如果你想要添加間隔符,你必須使用RecyclerView.ItemDecoration類來實現。或者,你可以應用官方示
例中的 DividerItemDecoration.java 文件。

OnItemTouchListener

ListView通過AdapterView.OnItemClickListener介面來探測點擊事件。而RecyclerView則通過
RecyclerView.OnItemTouchListener介面來探測觸摸事件。它雖然增加了實現的難度,但是卻給予開發人員攔截觸摸事件更多的
控制許可權。

Others

ListView可以設置選擇模式,並添加MultiChoiceModeListener,如下所示:

1 listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
2 listView.setMultiChoiceModeListener(new MultiChoiceModeListener() {
3 public boolean onCreateActionMode(ActionMode mode, Menu menu) { ... }
4 public void onItemCheckedStateChanged(ActionMode mode, int position,
5 long id, boolean checked) { ... }
6 public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
7 switch (item.getItemId()) {
8 case R.id.menu_item_delete_crime:
9 CrimeAdapter adapter = (CrimeAdapter)getListAdapter();
10 CrimeLab crimeLab = CrimeLab.get(getActivity());
11 for (int i = adapter.getCount() - 1; i >= 0; i--) {
12 if (getListView().isItemChecked(i)) {
13 crimeLab.deleteCrime(adapter.getItem(i));
14 }
15 }
16 mode.finish();
17 adapter.notifyDataSetChanged();
18 return true;
19 default:
20 return false;
21 }
22 public boolean onPrepareActionMode(ActionMode mode, Menu menu) { ... }
23 public void onDestroyActionMode(ActionMode mode) { ... }
24 });

View Code

而RecyclerView則沒有此功能。

總之,通過比較我們可以發現,RecyclerView充滿了大量的自定義功能,它可以用於實現復雜的列表或網格,但實現起來稍顯得復雜。

Ⅱ 各位,工程下libs文件夾與Android Private Libraries有什麼區別

Android工程中三種庫的區別:Private Libraries、Referenced Libraries、Dependency Libraries


一、v4、v7、v13的作用和用法

1、Android Support V4, V7, V13是什麼?

本質上就是三個java library。

2、為什麼要有support庫?

  是為了解決軟體的兼容問題。如果在低版本Android平台上開發一個應用程序,而應用程序又想使用高版本才擁有的功能,就需要使用Support庫。
  android api向來是高版本兼容低版本.如api-8(android2.2)必會兼容api-4(android 1.6).但是反之則不會,你使用2.2的平台版本build了一個apk,若想能在1.6上運行,則需要做向下兼容.
  android support-xx是google官方的向下兼容包.如名所示,會幫助構建程序向下兼容到1.6版本.不過也並非萬能的,還是會受限制.
  Android 為了兼容2.X以下的版本,所以出了android.support.v4的包,該包的主要作用是便於開發者在2.X的開發環境中,使用4.0的控制項。

3、三個Support 庫的區別和作用是什麼?

   簡單說明下這幾個版本間的區別:

Android Support v4: 這個包是為了照顧1.6及更高版本而設計的,這個包是使用最廣泛的,eclipse新建工程時,都默認帶有了。

Android Support v7: 這個包是為了考慮照顧2.1及以上版本而設計的,但不包含更低,故如果不考慮1.6,我們可以採用再加上這個包,另外注意,v7是要依賴v4這個包的,即,兩個得同時被包含。

Android Support v13 :這個包的設計是為了android 3.2及更高版本的,一般我們都不常用,平板開發中能用到。

4、Android Support 包里究竟有什麼

隨著Android5.0 Lollipop 的發布,Android 又為我們提供了更多的支持包,但是我相信大部分開發者都同我之前一樣不知道這些包里究竟有些什麼東西,我們應該在什麼時候使用它。現在,我們就來逐個看看每一個版本的 Support 包中所擁有的東西,讓用到他的時候不再迷茫。

首先,你需要了解每一個 Support 包版本後綴 vX 所代表的含義。當然我相信來看博客的諸位都一定知道 Android 對於每一個版本都有一個版本號,例如2.1是7,4.0是14,5.0是21。而這里,v 之後的數字,就代表著他能夠被使用的最低版本等級,之所以無法在更低版本進行使用的原因,是因為隨著版本的升級,在新版本中有很多之前不支持的特性或者 API,因此如果你在老版本中使用了這些支持包,就可能會導致應用崩潰。

現在,我們從頭開始逐個瀏覽目前所支持的 support 包:

(1)support-v4

support-v4包算是 Android 最低等級的支持包。所謂的 v4,代表著它最低支持 Android1.6(API Level4),這個版本算得上是一個真正意義上比較成熟的 Android版本,更何況現在我們寫應用的時候一般都只最低支持到 Android 2.x 系統,對於1.x 的系統基本已經已經完全拋棄了,因此你可已經他作為最基本的系統組件使用。

在 support-v4包中,它所擁有的類還是很多的,主要包含了對應用組件的支持,用戶交互體驗的一些工具類,一些數據網路方面的工具類,相面我們將詳細來看看它裡面具體的一些類。

1.系統組件部分

Fragment:其實 Fragment 是直到 Android3.0才正式進入 Android 框架體系的,但是 Android 為了低版本的兼容,因此他幫我們在低版本也適配了 Fragment 框架

NotificationCompat:這是通知欄的一些適配,可以幫助你在低版本的通知欄顯示更加豐富的信息

LocalBroadcastManager:這個是用於本地廣播通知的,當你希望發送的通知只被本應用接收時,你就應該使用它

2.用戶界面交互部分

ViewPager,這個相信我不用怎麼說了,他主要用於幫助我們進行界面間的滑動交互

PagerTitleStrip,PagerTabStrip 這兩個算是 ViewPager 的幫助類吧,他們的作用是進行 Tab 欄的切換輔助顯示

DrawerLayout,主要用於側滑欄的實現

SlidingPaneLayout,這個類也是用於側滑欄的實現,和 DrawerLayout 不同的是,DrawerLayout 側滑欄出來的時候,默認是覆蓋在當前頁面上,而 SlidingPaneLayout 則是會將當前頁面移走。

3. Accessbility訪問的幫助類

ExploreByTouchHelper,幫助自定義 View 實現 Accessibility 的工具類

AccessbilityEventCompat, AccessbilityNodeInfoCompat, , AccessbilityDelegateCompat,這幾個都是用作 Accessibility 功能適配的類

4.數據訪問幫助類

Loader,主要用於非同步載入數據

FileProvider,提供應用間的文件分享功能

(2)support-v7

1.Appcompat

這個包的主要作用是為了在低版本實現 Android 的 Holo 風格界面而引入的,與之類似的有一個開源項目叫做 SherlockActionbar

2.CardView

卡片布局是最近在 android5.0發布的時候才引入的新包,在我看來,他主要效果是讓應用進行卡片花顯示

3.GridLayout

網格布局能夠幫助你將整個布局按照一格兩格的格子形式進行排列

4.MediaRouter

這個布局主要是用來支持 GoogleCast 的,主要用於進行設備間的音頻,視頻交換顯示

5.Palette

這個包也是最新出來的,他的作用是幫助 Android 實現他的 MaterialDesign,讓你的 Actionbar 能夠根據界面進行對應的顏色改變

7.RecyclerView

這個包同樣也是剛出來的,他的作用是替換 ListView 和 GridView,但是可惜是沒有實現 OnItemClick 這些介面,你需要自己處理它

(3)support-v8

support-v8中其實只有一格特性,就是用來渲染腳本

(4)support-v13

這個包的作用主要是為 Android3.2級以上的系統提供更多地 Framgnet 特性支持,使用它的原因在於,android-support-v4包中雖然也對 Fragment 做了支持,由於要兼容低版本,導致他是自行實現的 Fragment 效果,在高版本的 Fragment 的一些特性丟失了,而對於 v13以上的 sdk 版本,我們可以使用更加有效,特性更多的代碼

(5)support-v17

這個包得主要作用是用於支持電視設備,並為電視設備提供了很多組件

例如下面的:

BrowseFragment, DetailFragment, PlaybasckOverlayFragment, SearchFragment

二、看一個javaee項目(使用myeclipse開發)

eclipse 中 構建路徑下的 order and export 是干什麼用的
  構建順序和 導出的時候要導出哪些資源,order就是使用class的順序(因為可能出現class同名的情況),export就是把用到的一些的lib和project同時發布。
  在order and Export條目中,不能重復將jar包打入到APK中,現在android將導出的jar包分為Android Dependencies和Android Private libraries兩種,目的是供開發者選擇,但是一般這兩個都要打入Apk中!

Ⅲ Android 應用只支持4.0以上還需要support v7兼容包么

android-support-v4是谷歌推出的兼容包,最低兼容Android1.6的系統,裡面有類似ViewPager等控制項。ViewPager在Android1.6以下的版本是不自帶的,所以要實現ViewPager需要使用v4包中的ViewPager。其餘控制項同理。android-support-v7是谷歌推出的版本兼容包,最低兼容Android2.1的系統,這個包通常和appcompat-v7這個工程一起使用。appcompat-v7這個工程可以讓開發者統一開發,在任何系統版本下保證兼容性。涉及的內容有Theme,value,布局,新的控制項,新的動畫實現方式,包含了support-v4的全部內容,開發Android工程時,要兼容低版本都要導入v7工程。androidstudio在創建工程的時候默認導入了v7工程,並且將style使用了兼容style,給開發者提供了極大的方便。並且最新的v7包增加了很多materialdesign的兼容類和素材,請及時更新。android-support-v13是谷歌推出的版本兼容包,最低兼容Android3.2的系統。當初是為了開發平板做設計的。Android3.x系統都是平板專用系統,但是3.x系統失敗了。所以使用v13的包沒有任何價值。v7版本適用於任何版本的開發,保證了兼容性,所以在使用的時候一定要採用。不要再用Eclipse做Android開發,ADT已經沒有更新過了,AndroidStudio是Android開發的首選工具,支持5.0開發,更好的開發享受。(1.3正式版將會有非常大的變化,非常期待)

閱讀全文

與android支持包相關的資料

熱點內容
在sqlserver伺服器內獲取客戶端的ip地址 瀏覽:995
數碼管顯示的單片機c程序 瀏覽:790
linux掛載文件系統 瀏覽:895
linux掛載windows磁碟 瀏覽:193
ctea演算法 瀏覽:32
命令可讀可寫 瀏覽:303
圈樑立柱立方計演算法 瀏覽:365
單片機測量頻率 瀏覽:854
江蘇揚州伺服器雲主機 瀏覽:877
自動發卡源碼模版 瀏覽:457
怎樣將pdf轉換成jpg 瀏覽:615
pdf51 瀏覽:917
單片機最小系統的功能 瀏覽:354
ssa的簡便演算法 瀏覽:284
java1m 瀏覽:806
之江匯app英語怎麼激活 瀏覽:639
在線查找伺服器地址 瀏覽:305
成都加密線最高時速 瀏覽:172
程序員私活沒完成 瀏覽:717
用電腦打開華為雲伺服器地址 瀏覽:232