触摸指示随着点击的位置不同而不断的变化位置
实现思路: 绘制一个组件,重写其触摸事件,使得其位置为触摸位置
首先创建一个类以自定义该组件:
public class DrawView extends View {
public float currentX = 40;
public float currentY = 50;
//定义并创建画笔
Paint paint = new Paint();
public DrawView(Context context) {
super(context);
}
public DrawView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
//设置画笔的颜色
paint.setColor(Color.RED);
//绘制小球
//参数依次是起始位置X,Y,小球直径,画笔
canvas.drawCircle(currentX,currentY,15,paint);
}
//位该组件的触碰事件重写事件处理方法
public boolean onTouchEvent(MotionEvent event) {
//修改currentX和currentY的属性
currentX = event.getX();
currentY = event.getY();
//通知当前组件重绘自己
invalidate();
//返回true表示该处理方法已经处理该事件
return true;
}
}
在布局中加入该组件:
<packagename.DrawView
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
或者在代码中将其添加到指定的组件中:
//获取容器
RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.root);
//创建DrewView组件
DrawView drawView = new DrawView(this);
//设置自定义组件的最小高度和宽度
drawView.setMinimumHeight(500);
drawView.setMinimumWidth(300);
relativeLayout.addView(drawView);