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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!