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

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

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

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

a24239a31557ed11a47843d1cee479ad.png

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类的名字:

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圆形和拖动圆、跟随手指拖动效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

时间: 2017-09-16

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值