Android開發(fā)使用Drawable繪制圓角與圓形圖案功能示例
本文實(shí)例講述了Android開發(fā)使用Drawable繪制圓角與圓形圖案功能。分享給大家供大家參考,具體如下:
1. 創(chuàng)建類RoundCircleDrawable繼承Drawable
/**
* 圓角矩形
* @Project App_View
* @Package com.android.view.drawable
* @author chenlin
* @version 1.0
* @Date 2016年4月21日
* @Note TODO
*/
public class RoundCircleDrawable extends Drawable{
private Paint mPaint;//畫筆
private int mWidth;//圖片寬與長度的最小值
private int mRadius;//半徑
private int mRound;//圓角
private RectF mRectF;//矩形
private Bitmap mBitmap;//圖片
private Type mType = Type.TYPE_ROUND;//默認(rèn)是矩形
//設(shè)置類型
enum Type{
TYPE_ROUND, TYPE_CICLE;
}
public RoundCircleDrawable(Bitmap bitmap){
this.mBitmap = bitmap;
//初始化畫筆
mPaint = new Paint();
mPaint.setAntiAlias(true);
BitmapShader shader = new BitmapShader(mBitmap, TileMode.CLAMP, TileMode.CLAMP);
mPaint.setShader(shader);
mWidth = Math.min(mBitmap.getWidth(), mBitmap.getHeight());
mRadius = mWidth / 2;
}
/**
* 向外提供設(shè)置圖片類型的方法
* @param type
*/
public void setType(Type type){
this.mType = type;
}
/**
* 暴露給外面設(shè)置圓角的大小
*
* @param round
*/
public void setRound(int round) {
this.mRound = round;
}
@Override
public void setBounds(int left, int top, int right, int bottom) {
super.setBounds(left, top, right, bottom);
mRectF = new RectF(left, top, right, bottom);
}
@Override
public void draw(Canvas canvas) {
if (mType == Type.TYPE_ROUND) {
canvas.drawRoundRect(mRectF, mRound, mRound, mPaint);
}else {
canvas.drawCircle(mWidth / 2, mWidth / 2, mRadius, mPaint);
}
}
@Override
public int getIntrinsicWidth() {
if (mType == Type.TYPE_CICLE) {
return mWidth;
}else {
return mBitmap.getWidth();
}
}
@Override
public int getIntrinsicHeight() {
if (mType == Type.TYPE_CICLE) {
return mWidth;
}else {
return mBitmap.getHeight();
}
}
@Override
public void setAlpha(int alpha) {
mPaint.setAlpha(alpha);
}
@Override
public void setColorFilter(ColorFilter cf) {
mPaint.setColorFilter(cf);
}
@Override
public int getOpacity() {
return PixelFormat.TRANSLUCENT;
}
}
2. 實(shí)現(xiàn)方法
public class RoundActivity extends Activity {
private ImageView mImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_round_drawable);
mImageView = (ImageView) findViewById(R.id.iv_round);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.aa);
//RoundImageDrawable drawable = new RoundImageDrawable(bitmap);
//drawable.setRound(30);
RoundCircleDrawable drawable = new RoundCircleDrawable(bitmap);
drawable.setRound(50);
mImageView.setImageDrawable(drawable);
}
}
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android圖形與圖像處理技巧總結(jié)》、《Android開發(fā)入門與進(jìn)階教程》、《Android調(diào)試技巧與常見問題解決方法匯總》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)》
希望本文所述對大家Android程序設(shè)計有所幫助。
- Android實(shí)現(xiàn)圓形圖片或者圓角圖片
- Android將Glide動態(tài)加載不同大小的圖片切圓角與圓形的方法
- Android自定義Drawable實(shí)現(xiàn)圓形和圓角
- Android中Glide加載圓形圖片和圓角圖片實(shí)例代碼
- Android自定義控件之圓形、圓角ImageView
- Android實(shí)現(xiàn)圓角矩形和圓形ImageView的方式
- Android自定義view實(shí)現(xiàn)圓形、圓角和橢圓圖片(BitmapShader圖形渲染)
- Android自定義控件之圓形/圓角的實(shí)現(xiàn)代碼
- android 實(shí)現(xiàn)圓角圖片解決方案
- Android基于Fresco實(shí)現(xiàn)圓角和圓形圖片
相關(guān)文章
Android Retrofit2數(shù)據(jù)解析代碼解析
這篇文章主要介紹了Android Retrofit2數(shù)據(jù)解析代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-12-12
詳解Android 基于TCP和UDP協(xié)議的Socket通信
這篇文章主要介紹了詳解Android 基于TCP和UDP協(xié)議的Socket通信,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11
Android中LeakCanary檢測內(nèi)存泄漏的方法

