自定義類似ImageView的控制項

2021-07-17 00:06:39 字數 1726 閱讀 7722

①、建立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...