Android自5.0后增加了不少新控件,帮助开发者实现了更酷更炫的UI效果。可是对于初学者来说,这些新控件的用法不像老控件那么简单,网上相关的使用介绍也不如老控件那样丰富,种种情况无疑加大了我们学习这些新控件的难度。为此,博主初步整理了Android在5.0和6.0之后的新增控件,及其对应的说明博文,给大家提供一个可资学习和借鉴的索引。
下面是新增控件的索引表格:
兼容包 | 名称 | 控件 | 引入版本 |
内核 | 水波图形 | RippleDrawable | Android 5.0 |
矢量图形 | VectorDrawable | Android 5.0 | |
矢量动画 | AnimatedVectorDrawable | Android 5.0 | |
矢量动画监听器 | AnimationCallback | Android 6.0 | |
媒体投影管理器 | MediaProjectionManager | Android 5.0 | |
摄像头二代camera2 | CameraManager | Android 5.0 | |
CameraDevice | Android 5.0 | ||
CameraCaptureSession | Android 5.0 | ||
电话管理器增加双卡双待 | TelephonyManager | Android 5.0 | |
PDF文件渲染器 | PdfRenderer | Android 5.0 | |
任务调度器 | JobScheduler | Android 5.0 | |
任务服务 | JobService | Android 5.0 | |
v4 | 下拉刷新布局 | SwipeRefreshLayout | Android 5.0 |
抽屉布局 | DrawerLayout | Android 5.0 | |
滑动面板布局 | SlidingPaneLayout | Android 5.0 | |
嵌套滚动视图 | NestedScrollView | Android 5.0 | |
appcompat-v7 | 工具栏 | Toolbar | Android 5.0 |
recyclerview-v7 | 循环视图 | RecyclerView | Android 5.0 |
线性布局管理器 | LinearLayoutManager | Android 5.0 | |
网格布局管理器 | GridLayoutManager | Android 5.0 | |
瀑布流网格布局管理器 | StaggeredGridLayoutManager | Android 5.0 | |
cardview-v7 | 卡片视图 | CardView | Android 5.0 |
palette-v7 | 调色板 | Palette | Android 5.0 |
design | 提示条 | Snackbar | Android 5.0 |
导航视图 | NavigationView | Android 5.0 | |
协调布局 | CoordinatorLayout | Android 5.0 | |
悬浮按钮 | FloatingActionButton | Android 5.0 | |
底部弹窗 | BottomSheetBehavior | Android 6.0 | |
应用栏布局 | AppBarLayout | Android 5.0 | |
可折叠工具栏布局 | CollapsingToolbarLayout | Android 5.0 | |
侧滑删除 | SwipeDismissBehavior | Android 5.0 | |
标签布局 | TabLayout | Android 5.0 | |
文本输入布局 | TextInputLayout | Android 5.0 | |
文本输入编辑框 | TextInputEditText | Android 6.0 |
以上的新控件,在项目中使用的时候,可分为三大类:
1、第一类是内核提供的控件,位于SDK的android.jar中。
这个与系统版本有关,每个版本的android.jar是固定的,有在该内核中定义的控件才能正常调用,没在内核中定义的控件在运行时会扔出类找不到的异常。比如水波图形RippleDrawable和矢量图形VectorDrawable,这两个控件在Android5.0之后的系统内核中提供,所以只有系统版本不低于5.0的手机才能使用它们,运行4. 系统的手机是无法正常调用这两个控件的。
2、第二类是v4兼容库提供的控件,位于SDK的android-support-v4.jar中。
v4库默认会被编译进App的安装包,所以它不需要系统内核支持,可直接运行在4.0之后的所有系统上,并且App工程无需手工导入v4库。使用v4控件唯一需要注意的地方,是布局文件中要引用完整路径的控件名称,如抽屉布局android.support.v4.widget.DrawerLayout、下拉刷新布局android.support.v4.widget.SwipeRefreshLayout等等。
3、第三类是v7兼容库和design库,它们有各自的库工程,开发者要在App工程中手工导入用到的兼容库。
v7与design库导入App工程后,编译出来的App即可兼容4.的系统。使用v7与design库的控件,类似于使用自定义控件,不但要在布局文件中引用完整路径的控件名称,还要在根布局声明命名空间(即添加属性xmlns:app=”http://schemas.android.com/apk/res-auto”),然后方可使用这些控件的自定义属性。这部分控件数量最多,实现的界面特效最丰富,而且互相之间存在依赖关系,如design库依赖于appcompat-v7库,部分design控件如NavigationView还依赖于recyclerview-v7库,所以若要正确使用design库的控件,往往得同时导入好几个相关的兼容库。
Android5.0和6.0之后补充了这么多新控件,自然有部分老控件变过时了,下面就列举部分新旧控件的替代关系:
Toolbar:替代ActionBar
RecyclerView:替代ListView和GridView
NestedScrollView:替代ScrollView
Snackbar:替代Toast
FloatingActionButton:替代ImageButton
TextInputEditText:替代EditText
camera2家族:替代Camera
点此查看Android开发笔记的完整目录
Android自5.0后增加了不少新控件,帮助开发者实现了更酷更炫的UI效果。可是对于初学者来说,这些新控件的用法不像老控件那么简单,网上相关的使用介绍也不如老控件那样丰富,种种情况无疑加大了我们学习这些新控件的难度。为此,博主初步整理了Android在5.0和6.0之后的新增控件,及其对应的说明博文,给大家提供一个可资学习和借鉴的索引。
下面是新增控件的索引表格:
兼容包 | 名称 | 控件 | 引入版本 |
内核 | 水波图形 | RippleDrawable | Android 5.0 |
矢量图形 | VectorDrawable | Android 5.0 | |
矢量动画 | AnimatedVectorDrawable | Android 5.0 | |
矢量动画监听器 | AnimationCallback | Android 6.0 | |
媒体投影管理器 | MediaProjectionManager | Android 5.0 | |
摄像头二代camera2 | CameraManager | Android 5.0 | |
CameraDevice | Android 5.0 | ||
CameraCaptureSession | Android 5.0 | ||
电话管理器增加双卡双待 | TelephonyManager | Android 5.0 | |
PDF文件渲染器 | PdfRenderer | Android 5.0 | |
任务调度器 | JobScheduler | Android 5.0 | |
任务服务 | JobService | Android 5.0 | |
v4 | 下拉刷新布局 | SwipeRefreshLayout | Android 5.0 |
抽屉布局 | DrawerLayout | Android 5.0 | |
滑动面板布局 | SlidingPaneLayout | Android 5.0 | |
嵌套滚动视图 | NestedScrollView | Android 5.0 | |
appcompat-v7 | 工具栏 | Toolbar | Android 5.0 |
recyclerview-v7 | 循环视图 | RecyclerView | Android 5.0 |
线性布局管理器 | LinearLayoutManager | Android 5.0 | |
网格布局管理器 | GridLayoutManager | Android 5.0 | |
瀑布流网格布局管理器 | StaggeredGridLayoutManager | Android 5.0 | |
cardview-v7 | 卡片视图 | CardView | Android 5.0 |
palette-v7 | 调色板 | Palette | Android 5.0 |
design | 提示条 | Snackbar | Android 5.0 |
导航视图 | NavigationView | Android 5.0 | |
协调布局 | CoordinatorLayout | Android 5.0 | |
悬浮按钮 | FloatingActionButton | Android 5.0 | |
底部弹窗 | BottomSheetBehavior | Android 6.0 | |
应用栏布局 | AppBarLayout | Android 5.0 | |
可折叠工具栏布局 | CollapsingToolbarLayout | Android 5.0 | |
侧滑删除 | SwipeDismissBehavior | Android 5.0 | |
标签布局 | TabLayout | Android 5.0 | |
文本输入布局 | TextInputLayout | Android 5.0 | |
文本输入编辑框 | TextInputEditText | Android 6.0 |
以上的新控件,在项目中使用的时候,可分为三大类:
1、第一类是内核提供的控件,位于SDK的android.jar中。
这个与系统版本有关,每个版本的android.jar是固定的,有在该内核中定义的控件才能正常调用,没在内核中定义的控件在运行时会扔出类找不到的异常。比如水波图形RippleDrawable和矢量图形VectorDrawable,这两个控件在Android5.0之后的系统内核中提供,所以只有系统版本不低于5.0的手机才能使用它们,运行4. 系统的手机是无法正常调用这两个控件的。
2、第二类是v4兼容库提供的控件,位于SDK的android-support-v4.jar中。
v4库默认会被编译进App的安装包,所以它不需要系统内核支持,可直接运行在4.0之后的所有系统上,并且App工程无需手工导入v4库。使用v4控件唯一需要注意的地方,是布局文件中要引用完整路径的控件名称,如抽屉布局android.support.v4.widget.DrawerLayout、下拉刷新布局android.support.v4.widget.SwipeRefreshLayout等等。
3、第三类是v7兼容库和design库,它们有各自的库工程,开发者要在App工程中手工导入用到的兼容库。
v7与design库导入App工程后,编译出来的App即可兼容4.的系统。使用v7与design库的控件,类似于使用自定义控件,不但要在布局文件中引用完整路径的控件名称,还要在根布局声明命名空间(即添加属性xmlns:app=”http://schemas.android.com/apk/res-auto”),然后方可使用这些控件的自定义属性。这部分控件数量最多,实现的界面特效最丰富,而且互相之间存在依赖关系,如design库依赖于appcompat-v7库,部分design控件如NavigationView还依赖于recyclerview-v7库,所以若要正确使用design库的控件,往往得同时导入好几个相关的兼容库。
Android5.0和6.0之后补充了这么多新控件,自然有部分老控件变过时了,下面就列举部分新旧控件的替代关系:
Toolbar:替代ActionBar
RecyclerView:替代ListView和GridView
NestedScrollView:替代ScrollView
Snackbar:替代Toast
FloatingActionButton:替代ImageButton
TextInputEditText:替代EditText
camera2家族:替代Camera
点此查看Android开发笔记的完整目录