圓形頭像嘛說到底就是張,所以自定義圓形控制項自然要繼承android原生的imgaeview,實現其中的setimagebitmap,setimagedrawable,setimageuri,setimageresource的方法。當然主要的ondraw方法也不能缺少,在其中要實現圓形頭像的繪製。這裡還要借助兩個主要的類matrix與bitmapshader,通過這兩個類實現的縮放效果。
bitmapshader有三個引數
tilex與tiley都是shader.tilemode型別,有三個選擇值
過大與過小都不好,不可能絕對的適中,所以縮放值的獲取是最重要的。我們要比較寬高與控制項寬高,通過錯位相乘來比較的寬高哪個與控制項的寬高相差更大。取相差大的值進行比較得到縮放值。下面是主要實現**:
mdrawablerec.set(0, 0, getwidth(), getheight());
if (mbitmapwidth * mdrawablerec.height() > mdrawablerec.width() * mbitmapheight) else
mbitmapshader = new bitmapshader(mbitmap, shader.tilemode.clamp, shader.tilemode.clamp);
mpaint.setshader(mbitmapshader);
mmatrix.setscale(scal, scal);
mbitmapshader.setlocalmatrix(mmatrix);
@override
protected void ondraw(canvas canvas)
//填充
canvas.drawcircle(getwidth() / 2.0f, getheight() / 2.0f, mradius, mfillpaint);
canvas.drawcircle(getwidth() / 2.0f, getheight() / 2.0f, mradius, mpaint);
//描邊
if (mstrokewidth != 0)
canvas.drawcircle(getwidth() / 2.0f, getheight() / 2.0f, mradius, mborderpaint);
}
這裡的順序不要打亂,否則回影響原有的顏色效果好了主要的實現方法就是這些了,其實只要理解上面的就基本上掌握了圓形頭像的設定了。
使用的話直接在xml檔案中使用自己自定義的circleimageview控制項,
更多原始碼:
個人部落格:
ios 裁剪圓形頭像 iOS中裁剪圓形頭像
void clipimage 0.載入 uiimage image uiimage imagenamed 阿狸頭像 1.開啟位圖上下文,跟尺寸一樣大 uigraphicsbeginimagecontextwithoptions image.size,no,0 2.設定圓形裁剪區域,正切與 2.1建立...
iOS 圓形頭像如何實現
思路 view有乙個屬性layer,通過設定cornerradius來設定圓角的半徑,view是正方形的才能保證通過調整圓角半徑來形成圓形頭像 view layer setcornerradius cgrectgetheight view bounds 2 view.layer.maskstobou...
IOS圓形頭像的設定
在開發中我們經常會用到頭像,但是系統的uiimageview預設是矩形,然而實際開發中一般都是需要將頭像設定為圓形,今天我和大家聊兩種比較常見的設定圓形頭像的方法。第一種 設定uiimageview的稜角。很簡單 頭像的寬高必須是一致的 cgfloat height 40.0 uiimageview...