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

引言

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移动的时候,绘画阴影。

源码

具体的代码和调用Demo,可到源码地址处查看:https://github.com/zhangliangming/SwipeBackLayout.git

最后

如果有问题,可到github上面留言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值