①、建立myimageview類,並繼承view
②、設定view控制項的xml屬性,也就是attr
③、在layout中配置view
④、獲取view控制項的屬性,然後獲取,並顯示。
⑤、設定imageview的大小
二、製作:
1、首先繼承view類
public class myimageview extends view
public myimageview(context context, attributeset attrs)
public myimageview(context context, attributeset attrs, int defstyleattr)
}
知識點①:利用this()方便操作。
2、設定view的屬性
在layout/values下建立attr_image.xml
知識點②:format="reference" 的意思是 接收引用資源的id
3、在layout中新增view
"
4、在**中,獲取
public myimageview(context context, attributeset attrs, int defstyleattr)
private void initwidget(context context,attributeset attrs)
}
知識點③:型別,只能用drawable介面,無法直接使用bitmap接收。
將drawable轉換為bitmap,並顯示
@override
protected void ondraw(canvas canvas)
}//drawable轉換成bitmap
private bitmap drawabletobitmap()
知識點④:如何將drawable轉換成bitmap。
該知識點可用於drawable中的雙緩衝機制。雙緩衝機制也是先將圖畫在記憶體的緩衝區中,然後再將緩衝區中的資料轉換成bitmap之後再顯示。
5、設定imageview的大小問題。(讓myimageview相容wrap_content)
這樣設定的view,如果設定了wrap_content其實還是match_parent的狀態
//重寫了view的onmeasure()方法
//mphotowidth = drawble.getintrinsicwidth();
//mphotoheight = drawble.getintrinsicheight()
//由於使用次數頻繁,所以選擇復用
protected void onmeasure(int widthmeasurespec, int heightmeasurespec)
else if (widthmeasurespec == measurespec.at_most)
else if (heightmeasurespec == measurespec.at_most)
else
}
基本的操作就是這樣。
要完成乙個完整的imageview的話,還需要scaletype屬性~~~。
自定義圓形Imageview
1 學習一定要善於總結,和敢於使用新的知識 2 一直使用的都是別人寫好的控制項,今天趁著國慶放假有時間,嘗試自己寫經常要用到的框架 3 知識總結 一 用於建立canvas的bitmap不能是已經存在的bitmap 二 這個自定view中遇到乙個坑就是的大小和遮罩大小不匹配是,需要我們對bitmap做...
自定義ImageView控制項
package com.zdsoft.circleimageview import android.content.context import android.content.res.typedarray import android.graphics.bitmap import android....
自定義圓形 ImageView
android預設的imageview是矩形的,為了達到圓形的目的,需要自定義控制項,繼承imageview,重寫ondraw函式。最終效果 具體步驟 1.先根據控制項的短的一邊為半徑繪製乙個圓形 bitmap bitmap bitmapdrawable drawable getbitmap int...