介绍
使用Android如何实现一个长按圆环动画视图效果?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
最近想到一个需求,类似悦跑圈或者保持的结束按钮动画
该动画按钮的主要作用就是防止用户误操作,具体实现思路如下:
1,监听用户的触摸事件OnTouchListener,在ACTION_DOWN的时候,记录下xy坐标和触摸时间,同时开始自定义观点动画;在ACTION_MOVE的过程中,判断坐标差值的偏移量是否在一个可接受的范围内,是的话就保留当前动画,不是的话就清除按钮上绘制的路径;在ACTION_UP的时候,再次记录下触摸时间,比较两个时间是否达到了长按规定的时间,是的话就执行下一个事件,不是的话就停止动画重置路径。
val touchMax=50 var lastX=0 var lastY=0 circleView。setOnTouchListener(对象:View.OnTouchListener { 覆盖乐趣>乐趣startAnim () { 清晰=false valueAnimator=valueAnimator。ofFloat (359.9999 0 f, f) valueAnimator ! !。时间=App.LONG_CLICK_TIME valueAnimator ! !。addUpdateListener{动画→ mProgress=动画。animatedValue作为浮动 无效() } valueAnimator ! ! .start () }
最终实现效果图虽然没有上面那么好看,但基本效果还是达到了
包cn.xmliu.melongo.view 进口android.animation.ValueAnimator 进口android.content.Context 进口android.graphics。* 进口android.util.AttributeSet 进口android.view.View 进口androidx.core.content.ContextCompat 进口cn.xmliu.melongo.App 进口cn.xmliu.melongo.R/* * *日期:2020/8/12 13:21 *电子邮件:diyangxia@163.com *描述:长按动画视图 */类LongCircleView(背景:Context& # 63; attrs: AttributeSet& # 63;):视图(上下文,attrs) {/* * *画笔 */私人val涂=() 私人var arcPath: Path& # 63;=零 私人var rectF: RectF& # 63;=零 私人var lineColor=0/* * *中心点坐标,半径 */私人var centerX: Float& # 63;=零 私人var centerY: Float& # 63;=零 私人var半径:Float& # 63;=零 私人var=1 f 私人var=1 f 私人var=1 f 私人var=1 f 私人val抵消=10 私人var mProgress=1 f 私人var valueAnimator: valueAnimator, # 63;=零 私人var清晰=true init { lineColor=ContextCompat.getColor(上下文! !R.color.red) } 覆盖乐趣> & lt;使用 android: layout_width=皐rap_content" android: layout_marginTop=? dp" android: layout_height=皐rap_content"比; LinearLayout & lt; android: id=癅 + id/flashLayout" android: layout_centerInParent=皌rue" android: layout_width=?0 dp" android: layout_height=?0 dp" android:背景=癅drawable/btn_circle_white" android:重力=癱enter_horizontal" android:取向=皏ertical"比; & lt; ImageView android: id=癅 + id/flashIV" android: layout_width=?0 dp" android: layout_height=?0 dp" android:填充=? dp" android: src=https://www.yisu.com/zixun/癅drawable/menu_flash_black” android:文本="闪灯开” android:色=" @color/main_color "/>LinearLayout >
val touchMax=50 var lastX=0 var lastY=0 circleView。setOnTouchListener(对象:View.OnTouchListener { 覆盖乐趣>看完上述内容,你们掌握使用Android如何实现一个长按圆环动画视图效果的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!使用Android如何实现一个长按圆环动画视图效果