Android怎么实现圆形和拖动圆跟随手指拖动-创新互联

这篇文章主要介绍“Android怎么实现圆形和拖动圆跟随手指拖动”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android怎么实现圆形和拖动圆跟随手指拖动”文章能帮助大家解决问题。

创新互联是一家集网站建设,黑龙江企业网站建设,黑龙江品牌网站建设,网站定制,黑龙江网站建设报价,网络营销,网络优化,黑龙江网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。创新互联专注于古浪网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供古浪营销型网站建设,古浪网站制作、古浪网页设计、古浪网站官网定制、小程序定制开发服务,打造古浪网络公司原创品牌,更为您提供古浪网站排名全网营销落地服务。

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


我在第一次自定义View圆遇到的小问题:


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


Android怎么实现圆形和拖动圆跟随手指拖动

2.在布局里自定的view会提示编译 点击Build编译一下就好了


Android怎么实现圆形和拖动圆跟随手指拖动

下面开始写代码: 先是单纯的创建一个圆形 创建一个类继承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);
    //参数为圆的横坐标 ,纵坐标,半径,创建 
    //如果圆形出不来 说明你xml里定义的宽和高的空间不够大 这里是圆在屏幕的坐标位置 xml定义的是圆能够显示的区域 如果你定义的太小 圆的坐标又超过了这个区域 就会显示不出来 xml里定义宽和高充满屏幕就可以了  
    canvas.drawCircle(point.x,point.y, 50, new Paint());
  }

}

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

 

一个圆就这样创建好了 直接运行就可以了 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);
    //参数为圆的横坐标 ,纵坐标,半径,创建
    //如果圆形出不来 说明你xml里定义的宽和高的空间不够大 这里是圆在屏幕的坐标位置 xml定义的是圆能够显示的区域 如果你定义的太小 圆的坐标又超过了这个区域 就会显示不出来 xml里定义宽和高充满屏幕就可以了 
    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怎么实现圆形和拖动圆跟随手指拖动”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注创新互联行业资讯频道,小编每天都会为大家更新不同的知识点。


文章名称:Android怎么实现圆形和拖动圆跟随手指拖动-创新互联
文章起源:http://scyanting.com/article/cehcho.html