虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > Android编程 > Android自定义View圆形和拖动圆、跟随手指拖动效果

Android自定义View圆形和拖动圆、跟随手指拖动效果
类别:Android编程   作者:码皇   来源:互联网   点击:

单纯的自定义一个圆非常简单 只需要几步就完成 拖动圆添加实现触摸事件即可 。接下来通过本文给大家分享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 自定义view 圆形 拖动