它的做法非常簡單
首先,先把選好壹張圖片放進 package底下的res/drawable,
會看到drawable有三個,這三個的不同點在於show出來的解析度 或 大小會有些微不同,
所以這要依照需求的不同來放置,接著,看一小段簡單的例子
public class ViewTest extends View
{
Paint p=new Paint();
Bitmap bmp;
public ViewTest(Context context)
{
super(context);
bmp = BitmapFactory.decodeResource(getResources(),R.drawable.icon);
}
@Override
public void onDraw(Canvas c)
{
c.drawBitmap(bmp,10,10,p);
}
}
首先第一個步驟,先宣到一個Bitmap變數來存放圖片。
Bitmap bmp;
bmp = BitmapFactory.decodeResource(getResources(),R.drawable.icon)
接著,在onDraw(Canvas c)裡,用Canvas把 Bitmap圖片物件畫出來,
c.drawBitmap(bmp,10,10,p);
這邊使用的drawBitmap() method 第2個參數是X座標,第3個是Y座標,
而第4個參數paint,如果沒有特別用到它,也是可以給 null 。
這樣子canvas 貼圖就OK了。
我想請教一下,我這樣設置是沒有出現圖案的
回覆刪除我的做法是在onCreate時
new一個Canvas
然後呼叫onDraw(Canvas)
這樣是不是有哪裡錯誤呢,謝謝你
您的程式是寫錯了唷!
回覆刪除在 Activity的 onCreat 裡面,
我們是不需要自己去呼叫 onDraw 的,
這個method 是 系統自己會呼叫,
我們只需要在 onCreat 裡面寫,
MyView myview = new MyView(this);
setContentView(myview);
這樣就行了,不用在去呼叫 onDraw!!
希望這個解釋 您聽得懂 ^_^
我懂了,謝謝您!
回覆刪除請教一下,
回覆刪除如果前面因為自己的需求已經畫了一個.xml檔,
然後用setContentView去接它了,
那麼這時候再去接myview應該會蓋掉對吧0.0?
有沒有辦法令兩者共存而不衝突呢?
先謝謝啦~
我想請問一下這一段應該放在哪裡?
回覆刪除Bitmap bmp;
bmp = BitmapFactory.decodeResource(getResources(),R.drawable.bag);
作者已經移除這則留言。
回覆刪除至於,
回覆刪除Bitmap bmp; 這個 只是宣告一個 圖片的變數 宣告在 viewclass 底下就好。
bmp = BitmapFactory.decodeResource(getResources(),R.drawable.icon)
這個是讓程式 去讀取 package 底下的圖片物件, 可以寫在 view contruter 裡面, 也可以寫在 view 底下的 ondraw 裡面。
只要 是寫在 view 底下! 有被執行到!
不管寫在哪邊 大致上都是OK的!
抱歉! 這幾天 沒上來部落格^^" 所以沒注意到 回文!
回覆刪除關於 xml 那個問題, 我有點聽不太明白,
你的問題是說: 如果已經 制訂好一個xml界面,而且 還有一個 自訂一的view 嗎?!
這邊我還有一個疑問是 XML 跟 你的自定義view,兩者 是不是 要讓 自定義view 鑲嵌在 XML 裡面嗎? 還是 不用鑲嵌 用重疊的?
如果是要鑲嵌在XML面的話,這個可以辦到
<.view class="pakageName.ViewClassName"
android:layout_width="fillparent"
android:layout_height="fillparent"/.> (把view前面的.消掉 , 還有最後面的.消掉)
這樣子可以鑲嵌進XML!
不過要讓他們重疊 同時存在 這個恐怕 有困難! 我想不到方法!
請問一下
回覆刪除canvas如何調整用進來的圖片大小