zoukankan      html  css  js  c++  java
  • 超简洁代码实现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);//绘制缓存图片 } }

  • 相关阅读:
    07-2. A+B和C (15)
    07-1. 换个格式输出整数 (15)
    07-0. 写出这个数 (20)
    06-3. 单词长度(15)
    06-2. 字符串字母大小写转换(10)
    06-1. 简单计算器(20)
    06-0. 混合类型数据格式化输入(5)
    05-3. 求a的连续和(15)
    05-2. 念数字(15)
    05-1. 约分最简分式(15)
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7217221.html
Copyright © 2011-2022 走看看