如何在Android中自定义一个带圆角的ImageView
这篇文章给大家介绍如何在Android中自定义一个带圆角的ImageView,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
站在用户的角度思考问题,与客户深入沟通,找到高碑店网站设计与高碑店网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站制作、成都网站建设、企业官网、英文网站、手机端网站、网站推广、国际域名空间、雅安服务器托管、企业邮箱。业务覆盖高碑店地区。
Demo:
package com.yizooo.yizooo.ui; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PixelFormat; import android.graphics.RectF; import android.graphics.PorterDuff.Mode; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.widget.ImageView; import com.lidroid.xutils.bitmap.core.AsyncDrawable; /** * Created by 雪宝宝 on 2016/3/27. * 自定义圆角工具 */ public class RoundImageView extends ImageView { private Paint paint; public RoundImageView(Context context) { this(context,null); } public RoundImageView(Context context, AttributeSet attrs) { this(context, attrs,0); } public RoundImageView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); paint = new Paint(); } /** * 绘制圆角矩形图片 */ @Override protected void onDraw(Canvas canvas) { Drawable drawable = getDrawable(); Bitmap bitmap = null; if (null != drawable && drawable instanceof BitmapDrawable ) { BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable; bitmap = bitmapDrawable.getBitmap(); //Bitmap bitmap =( (BitmapDrawable)drawable).getBitmap(); Bitmap b = getRoundBitmap(bitmap, 10); final Rect rectSrc = new Rect(0, 0, b.getWidth(), b.getHeight()); final Rect rectDest = new Rect(0,0,getWidth(),getHeight()); paint.reset(); canvas.drawBitmap(b, rectSrc, rectDest, paint); }//防止出现类型转换异常 else if(this.getDrawable() instanceof AsyncDrawable){ bitmap = Bitmap .createBitmap( getWidth(), getHeight(), drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565); Canvas canvas1 = new Canvas(bitmap); // canvas.setBitmap(bitmap); drawable.setBounds(0, 0, getWidth(), getHeight()); drawable.draw(canvas1); } else { super.onDraw(canvas); } } /** * 获取圆角矩形图片方法 * @param bitmap * @param roundPx,一般设置成14 * @return Bitmap * @author caizhiming */ private Bitmap getRoundBitmap(Bitmap bitmap, int roundPx) { Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888); Canvas canvas = new Canvas(output); final int color = 0xff424242; final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); final RectF rectF = new RectF(rect); paint.setAntiAlias(true); canvas.drawARGB(0, 0, 0, 0); paint.setColor(color); int x = bitmap.getWidth(); canvas.drawRoundRect(rectF, roundPx, roundPx, paint); paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); canvas.drawBitmap(bitmap, rect, rect, paint); return output; } }
关于如何在Android中自定义一个带圆角的ImageView就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
当前标题:如何在Android中自定义一个带圆角的ImageView
链接分享:http://ybzwz.com/article/geiici.html