drawable如何只让两个叫圆角_Android开发使用Drawable绘制圆角与圆形图案功能示例...

本文实例讲述了Android开发使用Drawable绘制圆角与圆形图案功能。分享给大家供大家参考,具体如下:

1. 创建类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;//默认是矩形

//设置类型

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;

}

/**

* 向外提供设置图片类型的方法

* @param type

*/

public void setType(Type type){

this.mType = type;

}

/**

* 暴露给外面设置圆角的大小

*

* @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. 实现方法

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);

}

}

希望本文所述对大家Android程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值