导航:首页 > 操作系统 > 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支持包相关的资料

热点内容
androidfragment嵌套 浏览:271
单片机在线升级 浏览:94
程序员吃包子视频 浏览:805
安卓为什么不封app 浏览:462
电车租车app叫什么 浏览:725
编程员英文 浏览:263
负载均衡服务器如何部署项目 浏览:527
迷你世界的程序员怎么获取 浏览:366
洗澡杨绛pdf 浏览:218
程序员的诗词大会 浏览:728
怎么修改建行app名 浏览:814
云终端怎么加密 浏览:609
linuxxserver启动 浏览:96
迅雷把文件分解加密 浏览:89
好玩友app怎么查找游戏 浏览:870
互联网公司java 浏览:521
为什么能上网却提示找不到服务器 浏览:583
基于单片机的多功能门铃 浏览:955
南昌微型往复活塞空气压缩机 浏览:143
syuu服务器什么时候开服的 浏览:397