導航:首頁 > 版本升級 > recyclerview最新版本

recyclerview最新版本

發布時間:2023-01-15 16:13:29

1. Android之RecyclerView介紹

從Android 5.0開始,谷歌公司推出了一個用於大量數據展示的新控制項RecylerView,可以用來代替傳統的ListView,更加強大和靈活。

RecyclerView是一個強大的滑動組件,與經典的ListView相比,同樣擁有item回收復用的功能,這一點從它的名字Recyclerview即回收view也可以看出。

RecyclerView 支持 線性布局、網格布局、瀑布流布局 三種,而且同時還能夠控制橫向還是縱向滾動。

RecyclerView 基礎使用關鍵點同樣有兩點:

另外,系統已經為我們提供了三個相關的實現類 LinearLayoutManager(線性布局效果)、GridLayoutManager(網格布局效果)、StaggeredGridLayoutManager(瀑布流布局效果)。

使用RecyclerView,當前版本需要直接在xml文件中定義:

效果圖:

2. Android控制項RecyclerView和ListView的異同

RecyclerView是一種新的視圖組,目標是為任何基於適配器的視圖提供相似的渲染方式。它被作為ListView和GridView控制項的繼承者,在最新的support-V7版本中提供支持。
在開發RecyclerView時充分考慮了擴展性,因此用它可以創建想到的任何種類的的布局。但在使用上也稍微有些不便。這就是Android——要完成一件事情總不是那麼容易。
如果使用RecyclerView,你需要了解以下三個元素:
RecyclerView.Adapter
LayoutManager
ItemAnimator

RecyclerView.Adapter
RecyclerView包含了一種新型適配器。它與現在使用的適配器類似,但也稍有不同,例如它需要使用ViewHolder。使用時需要重寫兩個主要方法:一個用來展現視圖和它的持有者,而另一個用來把數據綁定到視圖上。這么做的好處是,第一種方法只有當我們真正需要創建一個新視圖時才被調用,不需要檢查它是否已經被回收。

LayoutManager
這個類決定視圖被放在畫面中哪個位置,但這只是它的眾多職責之一。它可以管理滾動和循環利用。
LayoutManager只有一個叫做LinearLayoutManager的實現類,它有1500多行代碼。但從這一點就可以看出它有多復雜。管理器可以模擬列表視圖(包括橫向和縱向),但沒有頁眉和頁尾。
為LayoutManager編寫子類不太適合新手,我們需要依靠社區來發掘RecyclerView的全部潛力。與這個例子一起,在短時間內我會上傳一個GridView控制項的實現。
我認為這背後的關鍵是要仿照LinearLayoutManager的代碼創建一個BaseLayoutManager,並且基於此進行擴展。或許support-v7的最終版本會提供更多、更好的實現。

ItemAnimator
ItemAnimator會根據適配器上收到的通知動畫顯示視圖組的修改。基本上,它會自動顯示添加和移除條目動畫。這也不是一個簡單的類,但我們發現DefaultItemAnimator已經可以運行得很好了。

3. recyclerview怎麼導入

導入RecyclerView,CardView

由於RecyclerView,CardView是放在support library v7包中,所以我們想要使用就必須要導包。
下面就介紹下在Eclipse和Android Studio中是如何導入這兩個包的。

Eclipse:

第一步:通過SDK manager下載/更新Android Support Libraries(5.0版本最新為21)

第二步:導入CardView和RecyclerView項目(都在support v7中)
1.在Eclipse中點擊Import,導入Android項目
2.導入CardView和RecycleView,路徑為your sdk path\extras\android\support\v7\cardview(RecycleView則為相同目錄下的recyclerview)
3.導入時記得將工程到本地並建議重命名,這樣方便以後管理例如:

第三步:設置Library
1..將兩個工程設置為Library
2..在主工程中引入這兩個Library例如:

通過這三步就可以將這兩個包導入進來了。

Android Studio

Android Stuido相對於Eclipse簡單的多:
第一步:
首先要確保已經將Android Support Libraries升級到最新.

第二步:
打開項目中的build.gradle文件,在dependencies中添加如下代碼。

[html] view plain
dependencies {
compile 'com.android.support:recyclerview-v7:21.+'
compile 'com.android.support:cardview-v7:21.+'
}

第三步:
重新Build一下工程。

Build完成後就會發現這兩個包就已經導入進來了

4. 如何在Android Studio中添加RecyclerView-v7支持包

一般來說,V7包在使用compile 'com.android.support:appcompat-v7:xx.x.x'的時候都是已經有了,但是不排除有時候無法RecyclerView的時候,這時候在File=>Project Strutrue=》Dependencies=>綠色+號=》Libary Dependency=》輸入RecyclerView,找到com.android.support:recyclerview-v7:xx.xx.x確定即可

其中XX.XX.X版本要一致。
手打望採納

5. 簡單實現RecyclerView版本的豎向翻頁效果

1實現子頁面撐滿父布局,這樣頁面就只能顯示一個個頁面了
recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
子布局
<LinearLayout xmlns:android=" http://schemas.android.com/apk/res/android "
android:layout_width="match_parent"
android:layout_height="match_parent"
類似於這種長寬都和父親一樣大

2 設置每次滑動滑動頁面底部
SnapHelper snapHelper = new PagerSnapHelper();
snapHelper.attachToRecyclerView(recyclerView);

3監聽頁面載入到下一個頁面
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
LinearLayoutManager manager = (LinearLayoutManager) recyclerView1.getLayoutManager();
int first = manager.findFirstVisibleItemPosition();
if (first != last) {
last = first;
Toast.makeText(MainActivity.this, "" + first, Toast.LENGTH_SHORT).show();
}

參考項目:

6. 如何在Android Studio中添加RecyclerView-v7支持包

1、打開SDK Manager,在Extras樹下找到Android Support Library,下載好支持包。RecyclerView在v7-21版本就出來了。我這里不用更新了,說明是最新的,怎麼可能不行呢?

8、能導入包了,那就編寫代碼樂……

在extrasandroidsupportv7 ecyclerviewlibs 目錄下發現有android-support-v7-recyclerview.jar。要是上面的方法不行,這就是第二種解決辦法了,直接導入到libs中了

7. 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充滿了大量的自定義功能,它可以用於實現復雜的列表或網格,但實現起來稍顯得復雜。

8. ListView與RecyclerView的區別 Recycler有什麼優勢

RecyclerView 是Android-support-v7-21 版本中新增的一個 Widgets,官方對於它的介紹則是:RecyclerView 是 ListView 的升級版本,更加先進和靈活。

簡單來說就是:RecyclerView是一種新的視圖組,目標是為任何基於適配器的視圖提供相似的渲染方式。它被作為ListView和GridView控制項的繼承者,在最新的support-V7版本中提供支持。

9. 怎麼查看自己版本的recyclerview

1、右鍵點擊桌面「這台電腦」(windows8.1是這台電腦,windows7是計算機,windows xp是我的電腦)

選擇屬性,如圖

3、windows7下載網站很多,網路一下就有了

10. Android Support Library 23.2有哪些新東西

新特性:
支持Vector Drawable 和 Animated Vector Drawable

Vector drawables 讓自己可以用一個定義在XML里的矢量圖象替換多個png資源。而之前這一用法只局限於Lollipop以及更高的設備,VectorDrawable和AnimatedVectorDrawable現在可以分別通過兩個新的支持庫support-vector-drawable和support-animated-vector-drawable得到。

Android Studio 1.4 中介紹了一種通過在編譯時生成png的辦法對vector drawable提供了有限的支持。為了禁用這個功能(節省支持庫的空間,真正受益於新的庫),需要在 build.gradle文件里添加vectorDrawables.useSupportLibrary = true :

// Gradle Plugin 2.0+
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
需要注意這個新的屬性只有2.0版本的Gradle Plugin中才有。如果正在使用Gradle 1.5 ,則應該使用

// Gradle Plugin 1.5
android {
defaultConfig {
generatedDensities = []
}

// This is handled for you by the 2.0+ Gradle Plugin
aaptOptions {
additionalParameters "--no-version-vectors"
}
}
可以使用兼容到API7的VectorDrawableCompat和兼容到API11或者更高的AnimatedVectorDrawableCompat。鑒於安卓載入drawable的方式,並不是每個接受drawable id的地方(比如在一個XML文件中)都支持載入vector drawable。幸好,AppCompat 添加了幾個功能讓自己更容易使用新的vector drawable。

首先,當自己和ImageView(或者例如 ImageButton 和 FloatingActionButton這樣的子類) 一起使用AppCompat的時候,可以使用新的app:srcCompat屬性來飲用 vector drawable(而任何其它drawable則用 android:src):

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_add" />
並且,如果要在運行時動態的改變drawable,可以使用和之前相同的 setImageResource() 方法 - 這點並沒有變。使用AppCompat和app:srcCompat是在app中集成vector drawable最簡單可靠的方式。

會發現在Lollipop之前直接在app:srcCompat之外引用vector drawable會失敗。但是AppCompat卻支持其它drawable 容器比如StateListDrawable, InsetDrawable, LayerDrawable, LevelListDrawable, 或者 RotateDrawable載入vector drawable。使用這種間接的方法,可以在這種情況下使用vector drawable,比如TextView的android:drawableLeft 屬性,本來在正常情況下,它是不支持vector drawable的。

AppCompat夜間白天主題

雖然在能各個版本的app中使用矢量圖像已經是一個很大的變化了,但是這個版本還在AppCompat中添加了一個新主題:Theme.AppCompat.DayNight。

在API 14,之前,DayNight theme以及它的繼承者DayNight.NoActionBar, DayNight.DarkActionBar, DayNight.Dialog等和light是一樣的。但是在API 14 a或者跟高設備上,這個主題可以輕易的讓app既支持Light又支持 Dark theme。可以根據是否為「night」從一個Light 主題切換到Dark主題。

默認情況下,是不是『night』跟系統的值(從UiModeManager.getNightMode()得到)是對應的,但是可以使用AppCompatDelegate中的方法覆蓋這個值。對於這個貫穿整個app(直到進程重啟)的默認值,可以使用靜態的AppCompatDelegate.setDefaultNightMode()方法去設置,或者可以通過getDelegate()得到一個AppCompatDelegate,並使用setLocalNightMode()去改變當前的Activity或者對話框。

當使用AppCompatDelegate.MODE_NIGHT_AUTO時,一天的時間和最近的地點(如果自己的app有地理位置許可權)會被用於自動切換白天和黑夜,而MODE_NIGHT_NO和MODE_NIGHT_YES則分別用於強制主題從不或者總是使用dark theme。

在使用DayNight主題的時候,務必要徹底測試一下app,因為硬編碼顏色容易造成可讀性差的文字和圖標(沒看懂)。如果自己的text使用的是標準的 TextAppearance.AppCompat樣式或者顏色是從主題里(比如從 android:textColorPrimary)得到的,會發現這些都會自動幫自己更新。

但是,如果想專門為夜間模式自定義任何資源,可以在AppCompat的 night resource qualifier folder(夜間資源目錄)里自定義需要的任何資源。為了讓對這個模式的支持變得更輕松,請考慮使用標準的顏色或者利用AppCompat的tinting (著色)。

Design Support Library: Bottom Sheets

Design Support Library 提供了許多 material design 設計模式的實現。這個版本讓開發者可以輕松的把 bottom sheet 添加到他們的app中。

通過為 CoordinatorLayout的子View設置一個BottomSheetBehavior(比如:app:layout_behavior=」android.support.design.widget.BottomSheetBehavior」),將自動得到能在5個狀態間切換的觸摸檢測功能:

STATE_COLLAPSED: 這是折疊狀態 ,也是默認的狀態。只是在底部邊沿顯示布局的一部分。其高度可以使用 app:behavior_peekHeight 屬性來控制(默認是0)。
STATE_DRAGGING: 這是中間狀態,此時用戶直接上下拖動 bottom sheet。
STATE_SETTLING: 視圖被釋放之後-到達最終位置之間的瞬間。
STATE_EXPANDED: bottom sheet完全展開的狀態。 整個bottom sheet都是可見的(如果它的高度小於包含它的CoordinatorLayout)或者整個CoordinatorLayout都是填滿的。
STATE_HIDDEN: 默認禁用是的(使用app:behavior_hideable屬性來啟用 ), 如果這個啟用,用戶可以在 bottom sheet中下滑以完全隱藏bottom sheet
記住,bottom sheet 中的滾動容器必須支持嵌套滾動(比如,NestedScrollView, RecyclerView, 或者 API 21+上的ListView/ScrollView )。
如果想要收到狀態的回調,可以添加一個BottomSheetCallback:

// The View with the BottomSheetBehavior View bottomSheet = coordinatorLayout.findViewById(R.id.bottom_sheet);
BottomSheetBehavior behavior = BottomSheetBehavior.from(bottomSheet);
behavior.setBottomSheetCallback(new BottomSheetCallback() {
@Override
public void onStateChanged(@NonNull View bottomSheet, int newState) {
// React to state change
}
@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
// React to dragging events
}
});
雖然BottomSheetBehavior針對的是 持久性型 bottom sheet 的情景,但是這個版本還提供了BottomSheetDialog 和 BottomSheetDialogFragment 來完成 模態 bottom sheets 的用例。把AppCompatDialog 或者 AppCompatDialogFragment替換成相應的bottom sheet版本即可。讓自己的對話框使用bottom sheet風格的樣式。

Support v4: MediaBrowserServiceCompat

Support v4 library 作為許多支持庫的基礎,包含了許多在較新版本中才引入的framework功能(以及幾個獨特的功能)。

在上個版本中添加的 MediaSessionCompat 類為媒體播放提供了堅實的基礎,這個版本咱們添加了MediaBrowserServiceCompat 和 MediaBrowserCompat ,把最新的API(甚至是Marshmallow中添加的那些)向後兼容到API 4 及以上。這讓支持Android Auto上的音頻播放,Android Wear 上的媒體瀏覽變得簡單多了。另外,還為連接media playback service和UI提供了一個標準的介面。

RecyclerView

RecyclerView 控制項提供了靈活一種創建列表和網格的基本方案,而且還支持動畫。這個版本為 LayoutManager API帶來了一個非常激動人心的新特性:自動測量!讓RecyclerView可以根據其內容的大小調整自己。這意味著以前那些無解的場景,比如對RecyclerView的一個dimension 使用WRAP_CONTENT成為了可能。會發現所有的內置LayoutManager現在都支持自動測量。

因為這個變化的原因,得仔細檢查 item view的 layout parameters 了:以前會被自動忽略的 layout parameters(比如在滾動方向上的MATCH_PARENT ),現在會被完全考慮進去。如果有一個自定義的LayoutManager,且沒有繼承自內置的LayoutManager,那麼這就是一個可選的API - 需要調用setAutoMeasureEnabled(true) 並且根據這個方法的Javadoc中的描述做一些微小的改變。

注意,雖然RecyclerView可以讓自己的子View動畫,但是它不能動畫自己的邊界改變。如果想要讓RecyclerView的邊界變化也呈現動畫,可以使用 Transition API。

Custom Tabs

Custom Tabs 可以在保持app風格與外觀的同時無縫切換到web內容頁。而在這個版本中,可以向一個顯示在web內容旁邊的底部bar添加操作項。註:以前只能在頂部的溢出菜單裡面添加。

有了新的addToolbarItem()方法,就可以添加最多5個(MAX_TOOLBAR_ITEMS)actions到bottom bar 上,並使用setToolbarItem() 來更新它們。類似於之前的setToolbarColor()方法,可以找到一個 setSecondaryToolbarColor()方法來自定義bottom bar的背景顏色。

Leanback for Android TV

Leanback 庫給了把app帶到Android TV上所需要的工具, 裡面有許多專門為TV而優化的控制項。這個版本的GuidedStepFragment 做了一些列重大改進。

最大的改變可能就是引入了action button的第二列(通過重寫onCreateButtonActions()或者調用 setButtonActions()來添加)。不需要滾動完一個 GuidedActions列表就能到達所有的action。

說到GuidedAction,有幾個讓輸入更佳豐富的新特性,包括editable descriptions (通過descriptionEditable()), 表單中dropdown裡面的sub action(用subActions()),以及GuidedDatePickerAction。

閱讀全文

與recyclerview最新版本相關的資料

熱點內容
js跳到頁面某地 瀏覽:550
jsp展示clob欄位 瀏覽:779
nyx在網路上是什麼意思 瀏覽:145
樂播農業app是什麼 瀏覽:530
編程框架如何開發 瀏覽:136
金庸群俠傳3修改代碼 瀏覽:712
檢察院的文件類別有哪些 瀏覽:793
怎麼把九游殘留數據刪除 瀏覽:828
有什麼女生主動聊天的app 瀏覽:436
有哪些可以督促自己的app 瀏覽:244
用USB傳輸視頻文件夾顯示為空 瀏覽:710
恢復文件軟體免費版手機 瀏覽:648
lg怎麼隱藏文件 瀏覽:836
蘋果免費讀書app推薦 瀏覽:497
劉駿微信 瀏覽:113
書旗舊版本80 瀏覽:467
教編程考什麼證 瀏覽:990
下載編程貓後哪裡有客服 瀏覽:13
如何編輯歌曲文件格式 瀏覽:638
cf無限領取cdk工具 瀏覽:350

友情鏈接