Android自定义View实现拖拽效果
程序员文章站
2023-11-14 14:26:34
腾讯qq有那种红点拖动效果,今天就来实现一个简单的自定义view拖动效果,再回到原处,并非完全仿qq红点拖动。
先来看一下效果图
简单说一下实现步骤
1.创建一个...
腾讯qq有那种红点拖动效果,今天就来实现一个简单的自定义view拖动效果,再回到原处,并非完全仿qq红点拖动。
先来看一下效果图
简单说一下实现步骤
1.创建一个类继承view
2.绘制出一个小球
3.重写ontouchevent,来根据手指放下,移动,抬起,来控制小球
4.直接在布局中引用
先贴一张图看下view的坐标系
下面就贴一下代码,最后会给出源码
public class customview extends view { private int lastx; private int lasty; private int startleft; private int startright; private int starttop; private int startbottom; public customview(context context, @nullable attributeset attrs) { super(context, attrs); } @override protected void ondraw(canvas canvas) { super.ondraw(canvas); //画一个小球 paint paint = new paint(); paint.setstrokewidth(30); paint.setcolor(color.parsecolor("#ff0000")); paint.setantialias(true); paint.setstyle(paint.style.fill_and_stroke); canvas.drawcircle(getwidth()/2,getheight()/2,30,paint); } @override public boolean ontouchevent(motionevent event) { int action = event.getaction(); //获取手机触摸的坐标 int x = (int) event.getx(); int y = (int) event.gety(); switch (action){ case motionevent.action_down://按下,获取小球初始的位置 startleft = getleft(); startright = getright(); starttop = gettop(); startbottom = getbottom(); lastx = x; lasty = y; break; case motionevent.action_move://移动,小球跟随手指的移动 int offsetx = x - lastx; int offsety = y - lasty; layout(getleft()+offsetx,gettop()+offsety, getright()+offsetx,getbottom()+offsety); break; case motionevent.action_up://当手指抬起时,回到小球初始的位置 layout(startleft, starttop, startright, startbottom); break; } return true; } }
直接在布局中引用该自定义view就可以,宽高给固定
源码地址:android自定义view简单拖拽效果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: Android RecyclerView实现点击条目删除
下一篇: Python中的默认参数详解
推荐阅读
-
Android自定义View简易折线图控件(二)
-
Android自定义ScrollView实现放大回弹效果实例代码
-
Android自定义View圆形进度条控件(三)
-
Android自定义View仿IOS圆盘时间选择器
-
Android自定义View 使用PathMeasure简单模仿系统ProgressBar(四)
-
Android 仿摩拜单车共享单车进度条实现StepView效果
-
Android自定义view实现太极效果实例代码
-
Android 使用ViewPager实现轮播图效果
-
Android中TabLayout+ViewPager实现tab和页面联动效果
-
Android中实现记事本动态添加行效果