您的位置:首页 > 其它

自定义View 小圆随手指移动

2017-12-28 08:12 381 查看
自定义View就是为了实现系统自带控件无法实现的功能

自定义一个View(小圆)首先要继承一个View

public class CircleView extends View {

private float cx = 100;
private float cy = 100;

public CircleView(Context context) {
super(context);
}

public CircleView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}

public CircleView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.FILL);

canvas.drawCircle(cx,cy,100,paint);

}

// 这是为了解决事件冲突
@Override
public boolean onTouchEvent(MotionEvent event) {

switch (event.getAction()){
case MotionEvent.ACTION_DOWN://按下
cx = event.getX();
cy = event.getY();

break;
case MotionEvent.ACTION_MOVE://移动
cx = event.getX();
cy = event.getY();

break;
case MotionEvent.ACTION_UP://抬起
cx = event.getX();
cy = event.getY();

break;
}

//需要重新绘制一下图形
//invalidate();//但是只能在主线程进行图形的绘制
postInvalidate();//主线程和子线程都可以....调用这两个方法的时候,会自动调用onDraw方法

//触摸事件自己处理
return true;
}


之后要在布局之中要用到他

<com.dash.a03_custom_view.view.CircleView
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: