Android Bottom Sheet详解
来源:互联网 发布:lol韩服加速器mac版 编辑:程序博客网 时间:2024/06/05 08:04
转自:http://blog.csdn.net/qibin0506/article/details/51002241
最近Android更新了support library, 版本到了23.2, 从官方blog中我们还是可以看到几个令人心动的特性的,例如夜间模式的支持,BottomSheet.今天我们就来介绍一下这个Bottom Sheet,这可能会给我们开发中需要的一些效果带来便利.
虽然这里我们准备用整整一篇博客的时间来介绍它,不过这东西使用起来太简单了也太方便了,这还要感谢Behavior机制的引入,我记得在博客源码看CoordinatorLayout.Behavior原理中说过,Behavior其实是CoordinatorLayout
的核心内容,Behavior允许我们在不用自定义控件的前提下实现一些效果,Bottom Sheet正是通过Behavior实现的.
首先我们来看一个效果,
这个效果的实现很简单,甚至基本不需要Java代码,我们只需要给我们的下面的这个可滑动的view一个behavior就ok,把这个behavior指定为android.support.design.widget.BottomSheetBehavior
就可以达到这种效果了,是不是很简单? 来看看代码吧,
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
看到NestedScrollView
的behavior了吗? 我们仅仅指定了一下他的值就可以了,其他的地方没有任何特殊的.
虽然说我们不需要任何java代码就可以实现,不过这里我们还是希望可以通过按钮去控制它,从底部滑出毕竟太隐藏了,没有几个人可以猜到.
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
代码也很简单,首先我们从NestedScrollView
上获取到他的Behavior,因为我们知道是 BottomSheetBehavior
,所以这里直接死用BottomSheetBehavior.from
方法来获取,然后通过getState
方法来判断现在的状态,如果是展开的状态,我们就让它收缩起来,反之,展开它.
我们还可以给BottomSheetBehavior
一个callback来监听状态,
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
这个确实简单,不过有没有发现它的用户不是那么的广,接下来我们就要来介绍一个用户相对来说广泛点的BottomSheetDialog
,这个Dialog可以实现什么效果呢? 举个例子吧,现在我们在商城相关的app,当我们点击购买的时候需要选择一下要购买的商品的属性,以前我们可能是在底部弹出一个Popupwindow
来实现,现在好了,我们可以利用BottomSheetDialog
轻松的实现这个功能了.首先继续来看看效果吧.
这里是一个含有一个List的dialog,当我们点击按钮显示的时候,它会出现一部分,当我们拖动它的时候,他会占满屏幕,现在我们就来看一下代码如何实现,
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
别看代码长,主要是Adapter的代码!而且没有任何难度!我们来看select方法,这个方法中我们通过LayoutInflater
加载了一个布局,这个布局很简单,就是一个RecyclerView
.接下来的几行代码是配置RecyclerView
和它的Adapter
,相信不用多说大家也已经很熟悉了.关键是继续往下的3行代码,首先我们new了一个BottomSheetDialog
,然后通过setContentView
方法把我们inflate进来的布局设置到这个dialog上,最后调用dialog的show方法将dialog显示出来,这个效果就是这么容易就实现了,这个dialog特性的代码我们一行也没有写,android都已经帮我们完成好了.最后我们还在item的click事件中将这个dialog隐藏掉了.
好了,今天这篇博客很简单,主要是最新的support包中这个bottomSheet
的使用,以后大家在项目中又可以多一种实现dialog的方式了, 赶紧尝试一下吧.
- Android Bottom Sheet详解
- Android Bottom Sheet详解
- Android Bottom Sheet详解
- Android Bottom Sheet详解
- Android Bottom Sheet详解
- Android Bottom Sheet详解
- Android Bottom Sheet属性和使用详解
- Android: Bottom sheet
- Android Bottom Sheet详解之BottomSheetBehavior与BottomSheetDialog
- Bottom Sheet
- Android Custom view —- bottom sheet
- [译]三分钟玩转Android Bottom Sheet
- Bottom Sheet使用教程
- 使用Bottom Sheet实现底部菜单
- android-tabhost-bottom-layout
- android:layout_gravity="bottom"
- Android Bottom Navigation
- Bottom Sheet的使用和BottomSheetDialogFragment的封装
- 天气类App调研
- Jstack-线程监控
- 错误1error C2660: 函数不接受 10 个参数
- Android5.0 旋转菜单
- 实体类获取不到值
- Android Bottom Sheet详解
- SAP中如何查生产订单(已知物料求生产订单:事务码COOIS)
- 日志记录
- Java如何实现分页
- 编程练习题
- 刚体动力学仿真 in Matlab/Mathematica
- 机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 2)
- mysql分表和表分区详解
- 根据状态值改变PopupMenu显示的菜单项