仿QQ未读消息拖拽效果

仿QQ未读消息拖拽效果

技术参考文章

贝塞尔曲线介绍

Android自定义控件:类QQ未读消息拖拽效果

补充说明

Android自定义控件:类QQ未读消息拖拽效果,这篇文章在求解A,B,C,D四个点上不尽详述,所以下面进行补充说明。

图示:

在这里插入图片描述

计算过程:

在这里插入图片描述

技术总结

  1. 计算A,B,C,D四点坐标
  2. 了解拖拽过程连接固定圆和拖拽圆之间的曲线实现,即贝塞尔曲线
  3. 如何让QQDotView拖拽区域为整个屏幕?使用WindowManager的addView方法,把QQDotView添加到Window上。
  4. WindowManager.LayoutParams设置format为PixelFormat.TRANSLUCENT,背景为半透明。View添加到特定坐标位置时,需要设置gravity=Gravity.LEFT | Gravity.TOP,否则View添加的位置会不正确。
  5. 使用事件代理,将固定点的触摸事件代理给QQDotView。
  6. 在ListView中拖动圆点ListView可能会发生滚动,在QQDot按下时调用requestDisallowInterceptTouchEvent(true),不允许父容器拦截事件。
  7. 在ListView中由于View复用,在滚动后固定点坐标没有更新。重写QQDot的dispatchTouchEvent(MotionEvent ev)方法,更新固定点坐标。
  8. 回弹动画,使用translationX,translationY属性动画。
  9. 消失动画使用帧动画。

完整例子

demo链接

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值