导航:首页 > 版本升级 > 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最新版本相关的资料

热点内容
网络如何把人捧红 浏览:961
软件传输文件 浏览:184
密码记录器ios 浏览:412
两个电脑数据怎么一样 浏览:829
顺丰有什么买东西的app 浏览:377
数位板word 浏览:939
win7宽带连接出现多重网络 浏览:268
更改程序图标c语言 浏览:629
网络电视偷停怎么办 浏览:418
linux连接ftp 浏览:512
es文件浏览器视频笔记 浏览:874
mac无法打开描述文件 浏览:134
什么软件打文件 浏览:53
数据库无数据变成0 浏览:899
名企笔试如何刷编程题 浏览:49
js跳到页面某地 浏览:550
jsp展示clob字段 浏览:779
nyx在网络上是什么意思 浏览:145
乐播农业app是什么 浏览:530
编程框架如何开发 浏览:136

友情链接