为了账号安全,请及时绑定邮箱和手机立即绑定

Android右滑关闭Activity界面功能-自定义控件实现

标签:
Android

引言

Android右滑关闭Activity界面功能,网上已经有好多优秀的开源代码和项目,不过大部分都是结合ViewDragHelper来实现的,这里要讨论的是通过结合ValueAnimator来实现,目前我的控件只实现了从左往右(上往下)滑关闭界面。

需求

  • 在界面上从左往右滑,View位置根据手势移动。

  • 只拦截左右滑动,上下方向的滑动无影响。

  • 子View的左右滑动事件无影响。

预览图

image

实现思路

  • SwipeBackLayout:左右滑动View

  • onInterceptTouchEvent:该方法只要做左右移动拦截,上下移动不拦截。

  • ValueAnimator:该动画只要改变SwipeBackLayout View的位置,在ACTION_UP和界面打开时调用。

  • ACTION_MOVE时,根据移动的X位移,修改SwipeBackLayout View的位置。

主要代码分析

onFinishInflate

image

该方法只要实现两种方式,一种是通过布局xml文件来初始化SwipeBackLayout;另外一种是新new SwipeBackLayout。

onLayout

image
image

该方法只要是在初始化成功之后,修改SwipeBackLayout的位置。

onInterceptTouchEvent

image
image

该方法只要是拦截左右移动和判断是否在左右不拦截的子View集合里面。

onTouchEvent

image
该方法只要在用户左右移动的时候,修改SwipeBackLayout的位置。

image
image

该方法只要是ACTION_UP的时候,需要判断当前SwipeBackLayout的left位置,如果left位置小于屏幕的一半,则使用ValueAnimator动画,让SwipeBackLayout位置还原到正常位置。否则,关闭SwipeBackLayout。

dispatchDraw

image

该方法只要是在SwipeBackLayout移动的时候,绘画阴影。

原文链接:http://www.apkbus.com/blog-278062-77072.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消