安卓案例-跟隨手指運動的小球

跟隨手指運動的小球這個案例使用了自動以的UI組件,這個UI組件將會在指定位置繪製一個小球,這個位置會隨着我們的手指的拖動而改變。

原理就是使用程序來監聽我們手指的動作,把手指動作的位置傳入自定義UI組件,並通知該組件重繪即可。

效果圖片如下:

image

自定義組件代碼如下

public class DrawView extends View {
    public float currentX = 40;
    public float currentY = 50;
    // 定義創建畫筆
    Paint p = new Paint();
    public DrawView (Context context){
        super(context);
    }
    public DrawView(Context context, AttributeSet set){
        super(context,set);
    }
    @Override
    public void onDraw(Canvas canvas){
        super.onDraw(canvas);
        p.setColor(Color.RED); // 畫筆顏色
        canvas.drawCircle(currentX,currentY,15,p);
    }
    @Override
    public boolean onTouchEvent(MotionEvent event){
        currentX = event.getX();
        currentY = event.getY();
        // 通知當前組件重繪自己
        invalidate();
        return true;
    }
}

DrawView 組件繼承了View 基類,並重寫了 onDraw 方法 – 該方法負責在該組件的指定位置繪製一個小球。除此之外,該組件還重寫了 onTouchEvent 方法,該方法用於處理該組件的觸碰事件,當用戶手指觸碰該組件時將會激發該方法。當手指在觸摸屏上移動時,將會不斷的觸發觸屏事件,事件監聽器中負責觸發事件的座標將被傳入 DrawView 組件,並通知重繪。

視圖代碼

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="pub.weber.bym.ball.MainActivity">

    <pub.weber.bym.ball.DrawView
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>

MainActivity 代碼

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

by web開發者 更多相關內容請訪問: http://weber.pub/

本文地址: http://weber.pub/安卓筆記15(案例)-跟隨手指運動的小球/317.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章