Android自定義組件實例
1.怎么自定義組件
定義一個繼承View的子類,然后重寫View類的方法
onFileshinflate() :這個是一個回調方法,應當從xml文件加載該組件并利用它來構建界面之后,該方法將被回調
onMeasure(int a,int b):該方法用來檢測View組件以及包含的所有子組件的大小
onLayout(boolean a,int b,int c,int d,int f):當該組件需要分配其子組件的位置、大小時,該方法就會被回調
onSize(int a,int b,int c,int d):當該組件的大小被改變時回調該方法
onDraw(Canvas canvas):當該組件將要繪制它內容的時回調該方法進行繪制
onKeyDown(int a,KeyEvent keyevent):當某個鍵按下時觸發該方法、
onKeyPut(int a,KeyEvent keyevent):當某個見鍵松開時觸發該方法
onTrackballEvent(MotionEvent me):當發生軌跡球事件時觸發該方法
onTouchEvent(MotionEvent me):當發生觸屏事件時觸發該方法
onWindowFocusChanged(boolean a):當得到、失去焦點的時觸發該方法
onAttachedToWindow():當把該組件放入某個窗口時觸發該方法
onDetachedFormWindow():當把該組件從某個窗口上分離時觸發該方法
onWindowVisbilityChange(int a):當包含該組件的窗口的可見性發生改變時觸發該方法
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
public class DrawView extends View{
//當前的值
public float currentX=40;
public float currentY=50;
//定義、并創建畫筆
Paint p=new Paint();
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
//設置畫筆的顏色
p.setColor(Color.RED);
canvas.drawCircle(currentX, currentY, 15, p);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
//修改currentX與currentY兩個屬性的值
currentX=event.getX();
currentY=event.getY();
invalidate();
return true;
}
public DrawView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public DrawView(Context context,AttributeSet set) {
super(context,set);
// TODO Auto-generated constructor stub
}
} <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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<com.android.xiong.drawview.DrawView
android:layout_height="match_parent"
android:layout_width="match_parent"
/>
</RelativeLayout> import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/* LinearLayout li=new LinearLayout(this);
setContentView(li);
DrawView dr=new DrawView(this);
//設置自定義控件的幾個參數
dr.setMinimumHeight(300);
dr.setMinimumWidth(500);
li.addView(dr);*/
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
} 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!