首先須要建立一個繼承View的類,並在這個類中重寫onDraw()方法---負責繪製小球,還須要重寫onTouuch(Motion event)方法---負責小球隨手指移動的事件,當手指移動時,須要使用invalidate()方法來通知組件從新繪製android
public class CustomView extends View { public float currentX = 40; public float currentY = 50; //定義、並建立畫筆 Paint paint = new Paint(); public CustomView(Context context) { super(context); } public CustomView(Context context, AttributeSet attrs) { super(context, attrs); } public CustomView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //設置畫筆的顏色 paint.setColor(Color.RED); //繪製一個圓 圓心的X座標,圓心的Y座標,圓心的半徑,繪製圓的畫筆 canvas.drawCircle(currentX, currentY, 15, paint); } //重寫觸摸事件,編寫自定義的觸摸處理方法 @Override public boolean onTouchEvent(MotionEvent event) { //修改currentX,currentY的兩個屬性 currentX = event.getX(); currentY = event.getY(); //通知當前組件重繪 invalidate(); //返回true表示該處理方法已經處理事件 return true; } }
第二步就是自定義view的使用canvas
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.example.dkt.myapplication.CustomView
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>