Android自定义View实现拖拽效果

 更新时间:2020年05月29日 08:57:53   作者:zpf_  
这篇文章主要为大家详细介绍了Android自定义View实现拖拽效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

腾讯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组件之DrawerLayout实现抽屉菜单

    Android组件之DrawerLayout实现抽屉菜单

    DrawerLayout组件同样是V4包中的组件,也是直接继承于ViewGroup类,所以这个类也是一个容器类。接下来通过本文给大家介绍Android组件之DrawerLayout实现抽屉菜单,感兴趣的朋友一起学习吧
    2016-02-02
  • android中实现指针滑动的动态效果方法

    android中实现指针滑动的动态效果方法

    本次实现的是类似于墨迹天气中轨迹图片上指针随着数值滚动滑动的效果,基本思路是开启线程,控制指针所在的imageview控件的padding属性。
    2013-03-03
  • Android Studio 配置:自定义头部代码注释及添加模版方式

    Android Studio 配置:自定义头部代码注释及添加模版方式

    这篇文章主要介绍了Android Studio 配置:自定义头部代码注释及添加模版方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Android  断点续传的原理剖析与实例讲解

    Android 断点续传的原理剖析与实例讲解

    这篇文章主要介绍了Android 断点续传的原理剖析与实例讲解的相关资料,需要的朋友可以参考下
    2016-09-09
  • 全面总结Android中线程的异步处理方式

    全面总结Android中线程的异步处理方式

    这篇文章主要介绍了Android中线程的异步处理方式,讲解了Looper、Handler和Handler post三种方式,其中Handler自然是重点,需要的朋友可以参考下
    2016-04-04
  • 简单实现Android验证码

    简单实现Android验证码

    在登录或者注册的时候要求输入验证码,这篇文章主要为大家详细介绍了如何简单实现Android验证码的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Android编程之短信窃听器实现方法

    Android编程之短信窃听器实现方法

    这篇文章主要介绍了Android编程之短信窃听器实现方法,以实例形式较为详细的分析了Android编程实现窃听器的具体步骤与实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • Android判断应用程序退到后台的方法(示例代码)

    Android判断应用程序退到后台的方法(示例代码)

    判断手机是否退到后台,这是我们在Android开发中实现一些功能时,经常会考虑的问题,这篇文章主要介绍了android判断应用程序退到后台的方法,需要的朋友可以参考下
    2023-03-03
  • Android仿微信、录制音频并发送功能

    Android仿微信、录制音频并发送功能

    这篇文章主要介绍了Android仿微信、录制音频并发送功能的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • Kotlin中的扩展函数与属性示例详解

    Kotlin中的扩展函数与属性示例详解

    理论上来说,扩展函数很简单,它就是一个类的成员函数,不过定义在类的外面。下面这篇文章主要给大家介绍了关于Kotlin中扩展函数与属性的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-06-06

最新评论