当前位置: 移动技术网 > 移动技术>移动开发>Android > Android自定义View实现拖拽效果

Android自定义View实现拖拽效果

2019年08月01日  | 移动技术网移动技术  | 我要评论

腾讯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就可以,宽高给固定 

源码地址:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网