超简洁代码实现CircleImageView

Posted liguangsunls

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了超简洁代码实现CircleImageView相关的知识,希望对你有一定的参考价值。

效果图:

技术分享

页面代码:

public class CircleView extends ImageView {
    private Paint mPaint = new Paint();

    public CircleView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }


    @Override
    protected void onDraw(Canvas canvas) {
        Drawable mDrawable = getDrawable();//获取xml文件设置的图片
        if (null == mDrawable) super.onDraw(canvas);//假设为空,交给父类处理
        Bitmap mBitmap = ((BitmapDrawable) mDrawable).getBitmap();//将图片转化成bitmap

        int len = getWidth() < getHeight() ?

getWidth() : getHeight();//获取xml的长宽属性值,选择较小的 Bitmap tempBitmap = Bitmap.createBitmap(len, len, Bitmap.Config.ARGB_8888);//新建一个bitmap对象。作为缓存 Canvas mCanvas = new Canvas(tempBitmap);//新建画布缓存bitmap对象 mPaint.setAntiAlias(true);//抗锯齿 mCanvas.drawCircle(len / 2, len / 2, len / 2, mPaint);//画一个圆 mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));//设置画笔的覆盖类型 Matrix matrix = new Matrix(); // 初始化Matrix对象 matrix.setScale((float) len / mBitmap.getWidth(), (float) len / mBitmap.getHeight()); //设置缩放比例 mCanvas.drawBitmap(mBitmap, matrix, mPaint);//画出缩放后的图片 mPaint.reset();//重置画笔 canvas.drawBitmap(tempBitmap, 0, 0, mPaint);//绘制缓存图片 } }

以上是关于超简洁代码实现CircleImageView的主要内容,如果未能解决你的问题,请参考以下文章

Android之CircleImageView使用

魔音,mp3音乐下载器兼播放器,界面简洁,歌曲资源超多,实现听歌自由!

代码片-下拉树实现

代码片-策略模式+工厂模式

代码片-策略模式+工厂模式

代码片-策略模式+工厂模式