Android 自定義view組件

    Android中的組件類似於swxing中的Panel,它只是一片空白區域,對於UI組件來說,只是在其中繪製外觀。

    開發者可以繼承view,自定義自己的組件,然後重寫其中的方法:

      構造器:當java創建或者xml創建組件時調用

      

wKiom1U3nG3QO6dcAAEALZ7cMLY825.jpg

wKiom1U3nG2SdpmFAAOc-e-yQMc865.jpg

下面通過一個例子,該例子設計一個組件,在手觸摸的地方繪製一個圓形:


新建java類,添加如下代碼:

package com.example.tupianliulanqi;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.MotionEvent;
import android.view.View;

public class MyView extends View {
	private Paint p = new Paint();
	private float myX = 0;
	private float myY = 0;
	public MyView(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
	}
	
	//用於重新繪製組件
	public void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		//設置畫筆屬性
		p.setColor(Color.RED);
		canvas.drawCircle(myX, myY, 15, p);
	}
	
	//觸摸事件發生時調用
	public boolean onTouchEvent(MotionEvent event) {
		myX = event.getX();
		myY = event.getY();
		//告訴需要重新繪製組件
		this.invalidate();
		return true;
	}
}


在Activity中添加:

public class MainActivity extends Activity {

	MyView myview;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		LinearLayout layout = (LinearLayout)this.findViewById(R.id.main);

		myview = new MyView(this);;
		layout.addView(myview);
	}



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