1:學習一定要善於總結,和敢於使用新的知識
2:一直使用的都是別人寫好的控制項,今天趁著國慶放假有時間,嘗試自己寫經常要用到的框架
3:知識總結:
一:用於建立canvas的bitmap不能是已經存在的bitmap
二:這個自定view中遇到乙個坑就是的大小和遮罩大小不匹配是,需要我們對bitmap做伸縮處理,這個用到bitmapshader渲染器,它的使用很簡單,只需要算出要畫的的寬高和整個view的寬高比,用矩陣設定bitmapshader後,再用bitmapshader設定paint,最後使用
rect destrect = new rect(0,0將畫出來這裡的destrect代表畫的目標區域大小,srcrect指的是原顯示的位置,getwidth(),getheight());
rect srcrect = new rect(0,0
,bitmap.getwidth(),bitmap.getheight());
canvas.drawbitmap(bitmap,srcrect,destrect,paint);
package com.xubaipei.viewlib;import android.content.context;
import android.graphics.bitmap;
import android.graphics.bitmapshader;
import android.graphics.canvas;
import android.graphics.color;
import android.graphics.matrix;
import android.graphics.paint;
import android.graphics.porterduff;
import android.graphics.porterduffxfermode
;import android.graphics.rect;
import android.graphics.rectf;
import android.graphics.shader;
import android.graphics.drawable.bitmapdrawable;
import android.graphics.drawable.drawable;
import android.util.attributeset;
import android.widget.imageview;
/*** created by administrator on 2016/10/6.
*/public class circleimageview extends imageview
public circleimageview(context context, attributeset attrs)
public circleimageview(context context, attributeset attrs, int defstyleattr)
public void
initview()
@override
protected void
onmeasure(int widthmeasurespec, int heightmeasurespec)
if (heightspecmode == measurespec.at_most
) int min = math.min(width,height);
setmeasureddimension(min,min);
} @override
protected void
ondraw(canvas canvas)
public void
drawcircle(canvas canvas)
private void
setshader(bitmap bitmap,paint paint)
public bitmap getcirclebitmap( )
}
自定義圓形 ImageView
android預設的imageview是矩形的,為了達到圓形的目的,需要自定義控制項,繼承imageview,重寫ondraw函式。最終效果 具體步驟 1.先根據控制項的短的一邊為半徑繪製乙個圓形 bitmap bitmap bitmapdrawable drawable getbitmap int...
自定義圓形ImageView控制項
首先自定義roundimageview繼承imageview package com.bawei.view import android.annotation.suppresslint import android.content.context import android.content.res...
自定義圓形或圓角imageview
package com.yelong.medicalscience.widgets import android.annotation.suppresslint import android.content.context import android.graphics.bitmap import ...