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

首頁(yè) > 系統(tǒng) > Android > 正文

Android自定義Drawable實(shí)現(xiàn)圓形和圓角

2019-12-12 01:59:10
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例為大家分享了自定義Drawable實(shí)現(xiàn)圓形和圓角的具體代碼,供大家參考,具體內(nèi)容如下

圓形

package com.customview.widget;import android.graphics.Bitmap;import android.graphics.BitmapShader;import android.graphics.Canvas;import android.graphics.ColorFilter;import android.graphics.Paint;import android.graphics.PixelFormat;import android.graphics.Shader;import android.graphics.drawable.Drawable;import android.support.annotation.IntRange;import android.support.annotation.NonNull;import android.support.annotation.Nullable;/** * 自定義Drawable 實(shí)現(xiàn)圓形圖片 * Created by hust_twj on 2017/9/26. */public class CircleDrawable extends Drawable {  private Paint mPaint;  private int mWidth; //寬/高,直徑  private Bitmap mBitmap;  public CircleDrawable(Bitmap bitmap) {    this.mBitmap = bitmap;    BitmapShader bitmapShader = new BitmapShader(mBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);//著色器 水平和豎直都需要填充滿(mǎn)    mPaint = new Paint();    mPaint.setAntiAlias(true);    mPaint.setShader(bitmapShader);    mWidth = Math.min(mBitmap.getWidth(), mBitmap.getHeight()); //寬高的最小值作為直徑  }  @Override  public void draw(@NonNull Canvas canvas) {    canvas.drawCircle(mWidth/2, mWidth/2, mWidth/2, mPaint); //繪制圓形  }  @Override  public void setAlpha(@IntRange(from = 0, to = 255) int i) {    mPaint.setAlpha(i);  }  @Override  public void setColorFilter(@Nullable ColorFilter colorFilter) {    mPaint.setColorFilter(colorFilter);  }  @Override  public int getOpacity() {    return PixelFormat.TRANSLUCENT; //設(shè)置系統(tǒng)默認(rèn),讓drawable支持和窗口一樣的透明度  }  //還需要從重寫(xiě)以下2個(gè)方法,返回drawable實(shí)際寬高  @Override  public int getIntrinsicWidth() {    return mWidth;  }  @Override  public int getIntrinsicHeight() {    return mWidth;  }}

圓角:

package com.customview.widget;import android.graphics.Bitmap;import android.graphics.BitmapShader;import android.graphics.Canvas;import android.graphics.ColorFilter;import android.graphics.Paint;import android.graphics.PixelFormat;import android.graphics.RectF;import android.graphics.Shader;import android.graphics.drawable.Drawable;import android.support.annotation.IntRange;import android.support.annotation.NonNull;import android.support.annotation.Nullable;/** * 自定義Drawable 實(shí)現(xiàn)圓角圖片 * Created by hust_twj on 2017/9/26. */public class RoundCornerDrawable extends Drawable {  private Paint mPaint;  private RectF rectF;//定義矩形區(qū)域  private Bitmap mBitmap;  public RoundCornerDrawable(Bitmap bitmap) {    this.mBitmap = bitmap;    BitmapShader bitmapShader = new BitmapShader(mBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);//著色器 水平和豎直都需要填充滿(mǎn)    mPaint = new Paint();    mPaint.setAntiAlias(true);    mPaint.setShader(bitmapShader);    //rectF = new RectF(0, 0, bitmap.getWidth(), bitmap.getHeight());  }  @Override  public void draw(@NonNull Canvas canvas) {    //RectF:圓角矩形區(qū)域    canvas.drawRoundRect(new RectF(0, 0, mBitmap.getWidth(), mBitmap.getHeight()),100, 100, mPaint);//rx:x方向上的圓角半徑; ry:y方向上的圓角半徑。  }/*  @Override  public void setBounds(int left, int top, int right, int bottom) {    super.setBounds(left, top, right, bottom);    rectF = new RectF(left, top, right, bottom);  }*/  @Override  public void setAlpha(@IntRange(from = 0, to = 255) int i) {    mPaint.setAlpha(i);  }  @Override  public void setColorFilter(@Nullable ColorFilter colorFilter) {    mPaint.setColorFilter(colorFilter);  }  @Override  public int getOpacity() {    return PixelFormat.TRANSLUCENT; //設(shè)置系統(tǒng)默認(rèn),讓drawable支持和窗口一樣的透明度  }  //還需要從重寫(xiě)以下2個(gè)方法,返回drawable實(shí)際寬高  @Override  public int getIntrinsicWidth() {    return mBitmap.getWidth();  }  @Override  public int getIntrinsicHeight() {    return mBitmap.getHeight();  }}

MainActivity中:

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.XXX);imageView.setImageDrawable(new RoundCornerDrawable(bitmap));

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 淳安县| 织金县| 达日县| 丰原市| 陵水| 龙南县| 富顺县| 靖宇县| 淅川县| 建始县| 西昌市| 乌拉特后旗| 福海县| 枣庄市| 苗栗县| 思南县| 柳江县| 南乐县| 邹平县| 承德市| 龙泉市| 三门峡市| 明星| 玉山县| 武山县| 荔浦县| 泗水县| 五原县| 青铜峡市| 资阳市| 普陀区| 江华| 宜良县| 临沧市| 合阳县| 叶城县| 财经| 广河县| 凤山市| 屏南县| 固原市|