Android編程自定義組件實例詳解
本文實例講述了Android編程自定義組件。分享給大家供大家參考,具體如下:
在Android中,所有的UI界面都是由View類和ViewGroup類及其子類組合而成。其中,View類是所有UI組件的基類,而ViewGroup類是容納這些UI組件的容器。
其本身也是View類的子類。

在實際開發(fā)中,View類還不足以滿足程序所有的需求。這時,便可以通過繼承View類來開發(fā)自己的組件。
開發(fā)自定義組件的步驟:
1、創(chuàng)建一個繼承android.view.View類的View類,并且重寫構(gòu)造方法。
2、根據(jù)需要重寫相應的方法。
3、創(chuàng)建并實例化自定義View類,并將其添加到布局管理器中。
現(xiàn)在來學習使用自定義類
1、首先創(chuàng)建一個java文件來繪制圖片
package myview;
import com.example.allcode.R;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View;
public class MyView extends View{
public float bitmipx;
public float bitmipy;
public MyView(Context context) {
super(context);
bitmipx=550;
bitmipy=550;
// TODO Auto-generated constructor stub
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
//創(chuàng)建并實例化Paint對象
Paint paint = new Paint();
//根據(jù)圖片生成位圖對象
Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.image_equip_baibao_baicaodan);
canvas.drawBitmap(bitmap, bitmipx,bitmipy, paint); //繪制圖片
if(bitmap.isRecycled()) //判斷圖片是否可以回收
{
bitmap.recycle(); //強制回收圖片
}
}
}
2、在主activity中實例化圖片,并添加觸摸事件
package myview;
import com.example.allcode.R;
import android.app.Activity;
import android.os.Bundle;
import android.provider.ContactsContract.CommonDataKinds.Event;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.FrameLayout;
public class ShowMyView extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.showmyview);
FrameLayout framelayout = (FrameLayout) findViewById(R.id.showview);
final MyView myview = new MyView(ShowMyView.this); //創(chuàng)建并示例化MyView類
//添加觸摸事件
myview.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
myview.bitmipx=event.getX();
myview.bitmipy=event.getY();
myview.invalidate();//重繪自定義組件
return true;
}
});
framelayout.addView(myview);
}
}
對應的布局文件
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/showview" //不要忘記這一行 > </FrameLayout>
效果圖如下:

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android開發(fā)入門與進階教程》、《Android調(diào)試技巧與常見問題解決方法匯總》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)》
希望本文所述對大家Android程序設(shè)計有所幫助。
相關(guān)文章
Android開發(fā)之StackView用法和遇到的坑分析
這篇文章主要介紹了Android開發(fā)之StackView用法和遇到的坑,結(jié)合實例形式分析了Android StackView圖片操作用法及常見問題解決方法,需要的朋友可以參考下2019-03-03
Android優(yōu)化方案之Fragment的懶加載實現(xiàn)代碼
本篇文章主要介紹了Android優(yōu)化方案之Fragment的懶加載實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03
詳解Kotlin Android開發(fā)中的環(huán)境配置
這篇文章主要介紹了詳解Kotlin Android開發(fā)中的環(huán)境配置的相關(guān)資料,需要的朋友可以參考下2017-06-06
Android源碼解析onResume方法中獲取不到View寬高
這篇文章主要為大家介紹了Android源碼解析onResume方法中獲取不到View寬高示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02
Android實現(xiàn)點匯聚成字的動態(tài)效果詳解
在引入?fl_chart?繪制圖表的時候,看到插件有下面這樣的動效,隨機散亂的圓點最后組合成了?Flutter?的?Logo,挺酷炫的。本篇我們來探討類似的效果怎么實現(xiàn)2022-07-07
Android巧用Fragment解耦onActivityResult詳解
這篇文章主要給大家介紹了關(guān)于Android巧用Fragment解耦onActivityResult的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-08-08

