国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

20行Android代碼寫一個CircleImageView

2019-12-12 05:45:15
字體:
來源:轉載
供稿:網友

一提到弄一個圓形的頭像,很多人馬上會想到用CircleIamgeView,但其實自己寫一個也并不難自己寫的部分也就20行代碼,主要是用到PoterDuffXfermode來設置兩個圖層交集區域的顯示方式

首先寫一個繼承自ImageView的控件

public class CircleImageView extends ImageView

 然后創建構造方法

public CircleImageView(Context context, AttributeSet attrs) {  super(context, attrs); }

之后重寫onDraw方法

@Override protected void onDraw(Canvas canvas) {  //獲得圖片的寬度  int width=getWidth();  //獲得圖片的高度  int height=getHeight();  //短的二分之一作為半徑  int radius=height>width?width/2:height/2;  //重新定義的一個畫布,這一步很關鍵  Paint mPaint = new Paint();  //抗鋸齒  mPaint.setAntiAlias(true);  Bitmap bitmap = Bitmap.createBitmap(width,height,    Bitmap.Config.ARGB_8888);  Canvas bitmapCanvas = new Canvas(bitmap);  super.onDraw(bitmapCanvas);  //圓形的框  Bitmap cB = Bitmap.createBitmap(width, height,    Bitmap.Config.ARGB_8888);  Canvas cCanv = new Canvas(cB);  //在控件中間畫一個  cCanv.drawCircle(width/ 2, height/ 2, radius,    mPaint);  canvas.drawBitmap(bitmap, 0.0f, 0.0f, mPaint);  //dst是后畫的圖形  mPaint.setXfermode(new PorterDuffXfermode(    PorterDuff.Mode.DST_IN));  //一定要用之前的畫布,不然會出現邊角是黑色  bitmapCanvas.drawBitmap(cB, 0.0f, 0.0f, mPaint);  //給圖形加邊框  Paint paint =new Paint();  paint.setAntiAlias(true);  paint.setStyle(Paint.Style.STROKE);  paint.setStrokeWidth(5);  paint.setColor(Color.BLACK);  canvas.drawCircle(width/ 2, height/ 2, radius,    paint); }

一個簡單的CircleImageView就做成了,你們還可以把邊框弄成一個屬性還有配置相應的方法,讓使用者更加方便的使用

它的用法也是和ImageView一模一樣的

<com.example.jkgeekjk.roadtodevelop3.CircleImageView  android:layout_width="match_parent"  android:src="@drawable/avastar"  android:layout_height="match_parent" />

效果圖:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 呼伦贝尔市| 富阳市| 新泰市| 交口县| 淮安市| 桃园县| 长垣县| 乌苏市| 宁津县| 繁峙县| 手游| 方城县| 兰西县| 蕉岭县| 米泉市| 通州市| 青冈县| 香港 | 宝鸡市| 固镇县| 磐石市| 双辽市| 遵义市| 龙江县| 朝阳县| 巧家县| 襄城县| 革吉县| 政和县| 中阳县| 镶黄旗| 昌邑市| 林州市| 枣阳市| 普定县| 兖州市| 慈溪市| 南昌县| 介休市| 施甸县| 岢岚县|