Android开发使用Drawable绘制圆角与圆形图案功能示例
本文实例讲述了Android开发使用Drawable绘制圆角与圆形图案功能。分享给大家供大家参考,具体如下:
1.创建类RoundCircleDrawable继承Drawable
/**
*圆角矩形
*@ProjectApp_View
*@Packagecom.android.view.drawable
*@authorchenlin
*@version1.0
*@Date2016年4月21日
*@NoteTODO
*/
publicclassRoundCircleDrawableextendsDrawable{
privatePaintmPaint;//画笔
privateintmWidth;//图片宽与长度的最小值
privateintmRadius;//半径
privateintmRound;//圆角
privateRectFmRectF;//矩形
privateBitmapmBitmap;//图片
privateTypemType=Type.TYPE_ROUND;//默认是矩形
//设置类型
enumType{
TYPE_ROUND,TYPE_CICLE;
}
publicRoundCircleDrawable(Bitmapbitmap){
this.mBitmap=bitmap;
//初始化画笔
mPaint=newPaint();
mPaint.setAntiAlias(true);
BitmapShadershader=newBitmapShader(mBitmap,TileMode.CLAMP,TileMode.CLAMP);
mPaint.setShader(shader);
mWidth=Math.min(mBitmap.getWidth(),mBitmap.getHeight());
mRadius=mWidth/2;
}
/**
*向外提供设置图片类型的方法
*@paramtype
*/
publicvoidsetType(Typetype){
this.mType=type;
}
/**
*暴露给外面设置圆角的大小
*
*@paramround
*/
publicvoidsetRound(intround){
this.mRound=round;
}
@Override
publicvoidsetBounds(intleft,inttop,intright,intbottom){
super.setBounds(left,top,right,bottom);
mRectF=newRectF(left,top,right,bottom);
}
@Override
publicvoiddraw(Canvascanvas){
if(mType==Type.TYPE_ROUND){
canvas.drawRoundRect(mRectF,mRound,mRound,mPaint);
}else{
canvas.drawCircle(mWidth/2,mWidth/2,mRadius,mPaint);
}
}
@Override
publicintgetIntrinsicWidth(){
if(mType==Type.TYPE_CICLE){
returnmWidth;
}else{
returnmBitmap.getWidth();
}
}
@Override
publicintgetIntrinsicHeight(){
if(mType==Type.TYPE_CICLE){
returnmWidth;
}else{
returnmBitmap.getHeight();
}
}
@Override
publicvoidsetAlpha(intalpha){
mPaint.setAlpha(alpha);
}
@Override
publicvoidsetColorFilter(ColorFiltercf){
mPaint.setColorFilter(cf);
}
@Override
publicintgetOpacity(){
returnPixelFormat.TRANSLUCENT;
}
}
2.实现方法
publicclassRoundActivityextendsActivity{
privateImageViewmImageView;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_round_drawable);
mImageView=(ImageView)findViewById(R.id.iv_round);
Bitmapbitmap=BitmapFactory.decodeResource(getResources(),R.drawable.aa);
//RoundImageDrawabledrawable=newRoundImageDrawable(bitmap);
//drawable.setRound(30);
RoundCircleDrawabledrawable=newRoundCircleDrawable(bitmap);
drawable.setRound(50);
mImageView.setImageDrawable(drawable);
}
}
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android图形与图像处理技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。