【Android开发】用户界面设计-开发自定义的View
效果圖:
Android中,所有的UI界面都是由View類和ViewGroup類及其子類組合而成的。View是所有UI組件的基類(父類),為ViewGroup類是容納這些UI組件的容器,其本身也是View的子類。
關(guān)系:
? ? ? ? ? ?ViewGroup
? ? ? ? | ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ?|
? ? ? ? | ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ?|
? ViewGroup ? View ? View
? ? ? | ? ? ? ? ?|
? ? ? | ? ? ? ? ?| ? ? ?
? ?View View
一般情況下,開(kāi)發(fā)Android應(yīng)用程序的UI界面,都不直接使用View和ViewGroup類,而是使用它們的子類。
例如,顯示一張圖片,就可以使用View類的字類ImageView。
用戶可以通過(guò)繼承View來(lái)開(kāi)發(fā)自己的組件。
開(kāi)發(fā)自定義的View組件大致分一下3個(gè)步驟:
1.創(chuàng)建一個(gè)繼承android.view.View類的View類,并且重寫構(gòu)造方法
2.根據(jù)需要重寫相應(yīng)方法。(Eclipse"源代碼" -"覆蓋/實(shí)現(xiàn)方法")
3.在項(xiàng)目的活動(dòng)中,創(chuàng)建并實(shí)例化自定義View類,并將其添加到自定義管理器中。
下面利用自定義View來(lái)做一個(gè)擁有可以用手指觸摸游走的小兔子界面
res/layout/main.xml:
在res/drawable/下放置rabbit.png的小兔子圖片和backgroud.jpg大草原背景圖片
RabbitView:
package com.example.test;import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.View;//顯示一個(gè)可以用手拖拉的小兔子的界面 public class RabbitView extends View {public float bitmapX;//小兔子顯示位置的X坐標(biāo)public float bitmapY;//小兔子顯示位置的Y坐標(biāo)public RabbitView(Context context) {super(context);bitmapX=50;//設(shè)置小兔子默認(rèn)顯示位置的X坐標(biāo)bitmapY=75;//設(shè)置小兔子默認(rèn)顯示位置的Y坐標(biāo)}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);//創(chuàng)建并實(shí)例化Paint的對(duì)象Paint paint=new Paint();//根據(jù)圖片生成位圖對(duì)象Bitmap bitmap=BitmapFactory.decodeResource(this.getResources(),R.drawable.rabbit);canvas.drawBitmap(bitmap, bitmapX, bitmapY,paint);//繪制小兔子if(bitmap.isRecycled()){//判斷圖片是否回收bitmap.recycle();//強(qiáng)制回收?qǐng)D片}} }
MainActivity:
package com.example.test;import android.app.Activity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.FrameLayout;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);//獲取幀布局管理器FrameLayout layout=(FrameLayout)findViewById(R.id.mylayout);//創(chuàng)建并實(shí)例化RabbitView類final RabbitView rabbit=new RabbitView(MainActivity.this);//為小兔子添加觸摸時(shí)間監(jiān)聽(tīng)器rabbit.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {rabbit.bitmapX=event.getX();//設(shè)置小兔子顯示位置的X坐標(biāo)rabbit.bitmapY=event.getY();//設(shè)置小兔子顯示位置的Y坐標(biāo)rabbit.invalidate();//重繪rabbit組件return true;}});layout.addView(rabbit);//將rabbit添加到布局管理器中} }
運(yùn)行效果如上圖,可以任意拖拉小兔子至任何位置
轉(zhuǎn)載請(qǐng)注明出處:http://blog.csdn.net/acmman/article/details/44727901
總結(jié)
以上是生活随笔為你收集整理的【Android开发】用户界面设计-开发自定义的View的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SQL应用与开发:(三)数据操作 #18
- 下一篇: LoaderManager使用详解(一)