Android中的組件相似於swxing中的Panel,它只是一片空白區域,對於UI組件來講,只是在其中繪製外觀。
java
開發者能夠繼承view,自定義本身的組件,而後重寫其中的方法:
android
構造器:當java建立或者xml建立組件時調用
canvas
下面經過一個例子,該例子設計一個組件,在手觸摸的地方繪製一個圓形:
ide
新建java類,添加以下代碼:this
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); }