Android自定义View圆形和拖动圆、跟随手指拖动效果

 更新时间:2017年09月18日 09:06:42   作者:赢le  
单纯的自定义一个圆非常简单 只需要几步就完成 拖动圆添加实现触摸事件即可 。接下来通过本文给大家分享Android自定义View圆形和拖动圆、跟随手指拖动效果,感兴趣的朋友一起看看吧

单纯的自定义一个圆非常简单 只需要几步就完成 拖动圆添加实现触摸事件即可

我在第一次自定义View圆遇到的几个Bug:

1.拖动圆的话在xml里面设置的自定义圆的宽和高是它能活动的空间的大小 不是圆控件的大小 如果你定义了100dp 拖动它的时候超过100dp这个距离这个圆就会看不见 就像下面这样 如果想活动于整个屏幕直接给宽和高match_parent属性就好了

这里写图片描述

2.我在定义充满属性match_parent的时候运行会报错,什么方法都用了就是不行,耐心等待过一会就好了…有可能是studio没来得及编译过来

下面开始写代码: 先是单纯的创建一个圆形 创建一个类继承View 实现onDraw方法

public class CustomView extends View {
 //创建point对象 参数为x坐标和y坐标
 private PointF point = new PointF(100, 100);
 public CustomView(Context context) {
  super(context);
 }
 public CustomView(Context context, @Nullable AttributeSet attrs) {
  super(context, attrs);
 }
 public CustomView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
  super(context, attrs, defStyleAttr);
 }
 @Override
 protected void onDraw(Canvas canvas) {
  super.onDraw(canvas);
  //参数为圆的横坐标 ,纵坐标,半径,创建
  canvas.drawCircle(point.x,point.y, 50, new Paint());
 }
}

XML里、自己定义的view类的名字:

<ydtx.bwie.com.xiangmu_project02.CustomView
  android:layout_width="match_parent"
  android:layout_height="match_parent" />

一个圆就这样创建好了 直接运行就可以了 ManActivity里什么也不用改

@Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
 }

下面是添加拖动圆的功能 非常简单 实现触摸监听即可 代码非常少 如下:

public class CustomView extends View {
 //创建point对象 参数为x坐标和y坐标
 private PointF point = new PointF(100, 100);
 public CustomView(Context context) {
  super(context);
 }
 public CustomView(Context context, @Nullable AttributeSet attrs) {
  super(context, attrs);
 }
 public CustomView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
  super(context, attrs, defStyleAttr);
 }
 @Override
 protected void onDraw(Canvas canvas) {
  super.onDraw(canvas);
  //参数为圆的横坐标 ,纵坐标,半径,创建 
  canvas.drawCircle(point.x,point.y, 50, new Paint());
 }
 //触摸事件
 @Override
 public boolean onTouchEvent(MotionEvent event) {
  //获得触摸事件
  switch (event.getAction()) {
   case MotionEvent.ACTION_DOWN:
    break;
   //ACTION_MOVE不要设置break,否则圆形不会跟随手指活动 只会手指松开屏幕的时候圆形直接到了屏幕停止的位置
   case MotionEvent.ACTION_MOVE:
   case MotionEvent.ACTION_UP:
    //获取手指触摸位置的x坐标
    point.x = event.getX();
    //获取手指触摸位置的y坐标
    point.y = event.getY();
    //启动
    postInvalidate();
    break;
  }
  return true;
 }
}

总结

以上所述是小编给大家介绍的Android自定义View圆形和拖动圆、跟随手指拖动效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Android中自定义Window Title样式实例

    Android中自定义Window Title样式实例

    这篇文章主要介绍了Android中自定义Window Title样式实例,本文给出效果预览和实现方法,需要的朋友可以参考下
    2015-01-01
  • Android制作一个锚点定位的ScrollView

    Android制作一个锚点定位的ScrollView

    这篇文章主要介绍了Android制作一个锚点定位的ScrollView,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下
    2021-04-04
  • 详细讲解AsyncTask使用说明(值得收藏)

    详细讲解AsyncTask使用说明(值得收藏)

    AsyncTask就相当于Android给我们提供了一个多线程编程的一个框架,其介于Thread和Handler之间,我们如果要定义一个AsyncTask,就需要定义一个类来继承AsyncTask这个抽象类,并实现其唯一的一doInBackgroud 抽象方法,这篇文章主要介绍了AsyncTask详解,需要的朋友可以参考下
    2024-01-01
  • Android数据持久化之读写SD卡中内容的方法详解

    Android数据持久化之读写SD卡中内容的方法详解

    这篇文章主要介绍了Android数据持久化之读写SD卡中内容的方法,结合具体实例形式分析了Android持久化操作中针对SD卡进行读写操作的相关实现技巧与注意事项,需要的朋友可以参考下
    2017-05-05
  • Android手势ImageView三部曲 第二部

    Android手势ImageView三部曲 第二部

    这篇文章主要为大家详细介绍了Android手势ImageView三部曲的第二部,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • Android使用自定义ImageView实现圆形图片效果

    Android使用自定义ImageView实现圆形图片效果

    本篇文章主要介绍了Android使用自定义ImageView实现圆形图片效果,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Android界面效果UI开发资料汇总(附资料包)

    Android界面效果UI开发资料汇总(附资料包)

    android ui界面设计,友好的界面会提高用户体验度;同时也增强了android ui界面设计的难度,本文提供了一些常用开发资料(有下载哦)感兴趣的朋友可以了解下,希望会帮助到你
    2013-01-01
  • Android个人中心的头像上传,图片编码及截取实例

    Android个人中心的头像上传,图片编码及截取实例

    本篇文章主要介绍了Android个人中心的头像上传,图片编码及截取实例,非常具有实用价值,需要的朋友可以参考下。
    2016-12-12
  • Android 一个日历控件的实现代码

    Android 一个日历控件的实现代码

    本篇文章主要介绍了Android 一个日历控件的实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Android开发之资源文件用法实例总结

    Android开发之资源文件用法实例总结

    这篇文章主要介绍了Android开发之资源文件用法,结合实例形式总结分析了Android开发过程中针对资源文件的常见操作技巧,需要的朋友可以参考下
    2016-02-02

最新评论