Android 開發(fā)的自定義View

1.自定義View

雖然Android提供了很多繼承了View類的UI組件汉操,但是在實際開發(fā)時愁铺,還會出現(xiàn)不足以滿足程序需要的情況鹰霍。這時用戶就可以通過繼承View類來開發(fā)自己的組件。開發(fā)自定義View組件的主要步驟如下:

(1)創(chuàng)建一個繼承android.view.View類的View類茵乱,并且重寫構造方法茂洒。

(2)根據(jù)需要重寫相應的方法。

在代碼中右擊瓶竭,彈出的快捷菜單中選擇“代碼/覆蓋/實現(xiàn)方法”選項督勺,將打開一個可以選擇要覆蓋或者要實現(xiàn)的方法的對話框,在該對話框中顯示了可以唄重寫的方法斤贰。只需要選中“被重寫的方法”的選框智哀,并單擊“確定”按鈕,Eclipse將自動重寫指定的方法荧恍。一般情況下瓷叫,不需要重寫全部方法。

(3)在項目的活動中,創(chuàng)建并實例化自定義View類赞辩,并將其添加到布局管理器中雌芽。

2.經(jīng)典案例

下面為大家通過一個實例來演示怎樣開發(fā)自定義View類。

【例】自定義View組件實現(xiàn)跟隨手指動的貓辨嗽。

(1)在Eclipse中創(chuàng)建Android應用項目世落,命名為cat_View。

(2)打開res\layout目錄下的main.xml布局文件糟需,其代碼修改為:


android:layout_width = "match_parent"

android:layout_height = "match_parent"

android:background = "@drawable/bj"

android:id = "@+id/mylayout">

(3)創(chuàng)建一個名為?CatView的java類屉佳,該類繼承android.view.View類,重寫帶一個參數(shù)Context的構造方法和onDraw()方法洲押。其中武花,在構造方法中設置小貓咪的默認顯示位置,在onDraw()方法中根據(jù)圖片回執(zhí)小貓咪杈帐,其代碼為:

public class CatView extends View {

public float bitmapX;//小貓咪顯示位置的X坐標

public float bitmapY体箕;//小貓咪顯示位置的Y坐標

public CatView(Context context) {

super(context);

bitmapX = 750;//默認小貓咪的顯示位置的X軸

bitmapY = 500;//默認小貓咪的顯示位置的Y坐標

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

Paint paint = new Paint();//創(chuàng)建并實例化paint的對象

Bitmap bitmap = BitmapFactory.decodeResource(this.getResource(),R.drawable.cat);//根據(jù)圖片生成位圖對象

canvas.drawBitmap(bitmap,bitmapX,bitmapY,paint);//繪制小貓咪

if (bitmap.isRecycled()){//判斷圖片是否回收

bitmap.recycled();//強制回收圖片

(4)打開主活動文件MainActivity,它的onCreate()方法中挑童,首先獲取幀布局管理器并實例化小貓咪對象cat累铅。接著為cat添加觸摸事件監(jiān)聽器,在重寫的觸摸事件中設置cat的顯示位置并重繪cat組件站叼,最后將cat添加到幀布局管理器中娃兽,其代碼為:

public class MainActivity extends Activity {

//第一次調(diào)用Activity

public void onCreate(Bundle saveInstanceState) {

super.onCreate(saveInstanceState);

setContentView(R.layout.main);

//獲取幀布局管理器

Framelayout framelayout = (FrameLayout)findViewById(R.id.mylayout);

//創(chuàng)建并實例化CatView類

final CatView cat = new CatView (MainActivity.this);

//為小貓咪添加觸摸事件監(jiān)聽

cat.setOnTouchListener(new OnTouchListener(){

public boolean onTouch(View v,MotionEvent event){

cat.bitmapX = event.getX();//小貓咪顯示位置的X坐標

cat.bitmapY = event.getY();//小貓咪顯示位置的Y坐標

cat.invalidate();//重繪 cat 組件

return true;

}

})尽楔;

frameLayout.addView(cat);//將cat添加到布局管理器中

}

運行程序投储,當用鼠標在屏幕上拖拽時,小貓咪將跟著鼠標的拖拽軌跡移動阔馋。

歡迎所有的朋友加QQ群:364595326玛荞,一起交流和學習

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市垦缅,隨后出現(xiàn)的幾起案子冲泥,更是在濱河造成了極大的恐慌,老刑警劉巖壁涎,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凡恍,死亡現(xiàn)場離奇詭異,居然都是意外死亡怔球,警方通過查閱死者的電腦和手機嚼酝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來竟坛,“玉大人闽巩,你說我怎么就攤上這事钧舌。” “怎么了涎跨?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵洼冻,是天一觀的道長。 經(jīng)常有香客問我隅很,道長撞牢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任叔营,我火速辦了婚禮屋彪,結果婚禮上,老公的妹妹穿的比我還像新娘绒尊。我一直安慰自己畜挥,他們只是感情好,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布婴谱。 她就那樣靜靜地躺著蟹但,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谭羔。 梳的紋絲不亂的頭發(fā)上矮湘,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天,我揣著相機與錄音口糕,去河邊找鬼。 笑死磕蛇,一個胖子當著我的面吹牛景描,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播秀撇,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼超棺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了呵燕?” 一聲冷哼從身側響起棠绘,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎再扭,沒想到半個月后氧苍,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡泛范,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年让虐,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片罢荡。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡赡突,死狀恐怖对扶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情惭缰,我是刑警寧澤浪南,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站漱受,受9級特大地震影響络凿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拜效,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一喷众、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧紧憾,春花似錦到千、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至般眉,卻和暖如春了赵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背甸赃。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工柿汛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人埠对。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓络断,卻偏偏與公主長得像,于是被迫代替她去往敵國和親项玛。 傳聞我的和親對象是個殘疾皇子貌笨,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內(nèi)容