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

首頁 > 系統 > Android > 正文

Android自定義Drawable實現圓形和圓角

2019-10-22 18:27:04
字體:
來源:轉載
供稿:網友

本文實例為大家分享了自定義Drawable實現圓形和圓角的具體代碼,供大家參考,具體內容如下

圓形

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 實現圓形圖片 * 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);//著色器 水平和豎直都需要填充滿    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; //設置系統默認,讓drawable支持和窗口一樣的透明度  }  //還需要從重寫以下2個方法,返回drawable實際寬高  @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 實現圓角圖片 * Created by hust_twj on 2017/9/26. */public class RoundCornerDrawable extends Drawable {  private Paint mPaint;  private RectF rectF;//定義矩形區域  private Bitmap mBitmap;  public RoundCornerDrawable(Bitmap bitmap) {    this.mBitmap = bitmap;    BitmapShader bitmapShader = new BitmapShader(mBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);//著色器 水平和豎直都需要填充滿    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:圓角矩形區域    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; //設置系統默認,讓drawable支持和窗口一樣的透明度  }  //還需要從重寫以下2個方法,返回drawable實際寬高  @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));

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


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 正定县| 彰化县| 平塘县| 赣榆县| 阿图什市| 丹棱县| 锡林郭勒盟| 贺州市| 闽侯县| 罗山县| 江陵县| 庄河市| 崇州市| 竹北市| 翼城县| 崇明县| 岳普湖县| 嘉善县| 夏津县| 保康县| 盘锦市| 太白县| 濮阳县| 灌云县| 耒阳市| 辉县市| 内丘县| 长春市| 怀远县| 三原县| 江永县| 南汇区| 来宾市| 丰宁| 乌鲁木齐市| 白水县| 广汉市| 建平县| 仁怀市| 新沂市| 迭部县|