美文网首页Android架构androidservice
android 圆角矩形图片并描边,重写imageview

android 圆角矩形图片并描边,重写imageview

作者: 释寒 | 来源:发表于2018-10-24 11:02 被阅读351次

    android开发中经常遇到需要处理图片的地方,今天说一下圆角矩形图片的处理

    1:直接处理图片本身;

    2:重写imageview;

    第一种方法这里暂且不谈,方法很多,这里主要谈谈第二种,因为第一种处理之后经常会遇到scaleType失效的问题,许多第三方图片下载处理中会与自己处理图片相冲突,这时候我们往往想到要对imageview直接处理,这样就不会影响imageview本身的各种属性:

    public class RoundImageView extends ImageView {

    private Path mPath;

    private RectF mRectF;

    private int mCorner = Const.DP_1 *3;

    private Paintm Paint;

    public RoundImageView(Context context, AttributeSet attrs) {

    super(context, attrs);

    //PS:一定不要再draw里面新建RectF,一定不要再draw里面新建RectF,一定不要再draw里面新建RectF,

    //重要的事情说三遍,会严重消耗内存

    mRectF =new RectF();

    mPath =new Path();

    mPaint =new Paint(Paint.ANTI_ALIAS_FLAG);

    mPaint.setStyle(Paint.Style.STROKE);

    mPaint.setStrokeWidth(Const.DP_1);

    mPaint.setColor(0xffE6EEF6);

    }

    @Override

        public void draw(Canvas canvas) {

    mPath.reset();

    //将mRectF设置为imageview本身的宽高

    mRectF.set(0,0, getWidth(), getHeight());

    //将path设置rect值

    mPath.addRoundRect(mRectF,mCorner,mCorner, Path.Direction.CW);

    //切割画布,只留下自己需要的部分

    canvas.clipPath(mPath);

    //保留imageview本身的绘制图片

    super.draw(canvas);

    //画出描边

    canvas.drawRoundRect(mRectF,mCorner,mCorner,mPaint);

    }

    }

    相关文章

      网友评论

        本文标题:android 圆角矩形图片并描边,重写imageview

        本文链接:https://www.haomeiwen.com/subject/cwettqtx.html