簡單自定義view,隨手指移動的小球

首先須要建立一個繼承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>
相關文章
相關標籤/搜索