Android 中任意View實現圓角

2021-07-24 13:02:38 字數 1100 閱讀 1762

在咱們實際的專案開發中,經常會遇到需要把整個view裁剪成圓角的那種。如果用shape來做,那麼圓角依舊裁剪不掉。

谷歌出品過乙個叫cardview的控制項,可以很方便的設定圓角。但是這個在android 5.0以下不相容。

最近專案要用到這個,所以我就想起了很早之前我在谷歌的原始碼裡找到過乙個比較簡單的實現方案,這裡貼一下,以後誰搜到我這篇部落格可以直接使用了。

**貼一下,就乙個類,很簡單。

public class cornerview extends framelayout 

public cornerview(context context)

private final rectf roundrect = new rectf();

private float rect_adius = 10;

private final paint maskpaint = new paint();

private final paint zonepaint = new paint();

private void init()

public void setcorner(float adius)

@override

protected void onlayout(boolean changed, int left, int top, int right, int bottom)

@override

public void draw(canvas canvas)

}

其中,rect_adius是角度,可以外部設定進去。framelayout可以換成relativelayout,linearlayout 等。

任何被包裹進去的view都會被裁剪成圓角。

2016-11-25補充:經過我們專案測試,這個在listview、recyclerview中效能很差,導致滑動不流暢,原因是繪製花費時間。

******************************=

如果你覺得幫到了你,請給作者打賞一口飯吃:

Android中View的測量

即精確值模式,當我們將空間的width或height制定為具體值 或者為match parent時,此時將佔據父容器的大小,使用的就是exactly。最大值模式,當空間的寬高屬性制動為自適應wrap content時,控制項大小一般隨著空間的子空間或內容的變化而發生改變,此時view的尺寸只要不超過...

Android中View繪製優化

1.優化布局層次 2.使用標籤復用布局檔案 includelayout layout titlebar 關於標籤的第乙個比較簡單的用法 關於使用標籤的一些限制 1 它只能作為xml布局宣告的root元素來使用 2 使用它來inflate乙個布局時,必須指定乙個viewgroup例項作為其父元素並且設...

android中的View的物件

我們知道android sdk中的ui控制項都是view或viewgroup的子類 viewgroup也是view的子類 我們將view細分為單獨view和容器view兩種,所亦就衍生兩個檢視基類 view和viewgroup。通過擴充套件這兩個基類,android sdk提供了一系列害能強大,設計...