仿照百度地图的上层地址列表的上拉、下拉的拖动效果,当手指离开屏幕时,地址列表有三种状态:全部展示,展示一半,隐藏到底部。

特点

  1. 继承于RelativeLayout,不用我们自己测量、布局、绘制View。
  2. 可以嵌套不同的View,包括RecyclerView、ListView等,并实现滑动事件冲突的处理。
  3. View的移动动画的实现,使用setY(),通过设置View的位置,实现移动动画。
  4. VelocityTracker的使用,根据VelocityTracker得到Y方向的移动速度和当前的View的位置,从而切换到不同的显示状态。

实现思路
  1. 需要兼容不同的View的拖动,所以使用一个外层布局SlideContentLayout,用于嵌套需要拖动的内容,也就是拖动的View。我们实现SlideContentLayout的拖动,就是相当于实现View的拖动。
  2. 嵌套View可能也是一个可拖动的View,所以需要处理滑动事件冲突。在SlideContentLayout中的onInterceptTouchEvent()方法中根据条件进行事件的拦截,在onTouchEvent()方法中实现当前SlideContentLayout的滑动操作。
  3. 由于不同的嵌套View,它的拦截条件可能不一样,所以把拦截判断抽象成一个接口,在用户使用时,根据自己使用的嵌套View,实现该接口,然后把接口对象传到SlideContentLayout中。
  4. 松开手时,SlideContentLayout根据当前的位置移动到对应的状态,这时使用属性动画进行View的移动。

事件拦截机制分析




手指下滑

当SlideContentLayout位于①,当嵌套View已经滑动到最顶端时,SlideContentLayout拦截事件,随手指滑动进行向下移动操作。

更多相关文章

  1. Android从零开搞系列:自定义View(15)仿天天美剧拖动卡片的效果(下)
  2. 从Wordpress API JSON响应反序列化嵌套的JSON标记和附件
  3. 拖动层的javasvript代码 十行代码即可写出兼容版拖动层
  4. javascript实现拖动层效果代码(许愿墙)
  5. 嵌套片段不保留其状态
  6. Java XML - 具有相同名称的嵌套元素

随机推荐

  1. Android获取剪贴板内容
  2. Android 获取本机号码
  3. Android 开发10个常用工具类
  4. android —— 自定义控件 竖向的ViewPage
  5. android-疑问2
  6. Android 解决AIDL bindService异常
  7. Android 节点进度条
  8. 谈谈Android Activity的生命周期管理
  9. This Android SDK requires Android Deve
  10. Android开发便签2:Activity的生命周期