Android中ImageView半边圆角处理记录2

Android  代码片段  2023年2月21日 am8:08发布2年前 (2023)更新 91es.com站长
92 0 0

前言

之前介绍过对ImageView进行圆角处理,具体文章《Android中ImageView半边圆角处理记录 -91易搜 - 阅读是一种生活方式 ()》,后面发现网上还有一种更简单的一种方式。

  1. 有点:代码少,简单
  2. 缺点:边界不够圆滑(存在锯齿)

正文

具体效果如下(左侧是RoundImageView2,右侧是之前RoundImageView),看圆角处,RoundImageView2就存在锯齿。

Android中ImageView半边圆角处理记录2

代码片段

public class RoundImageView2 extends androidx.appcompat.widget.AppCompatImageView {

    private final Path mPath;
    private float mWidth, mHeight;

    public RoundImageView2(Context context) {
        this(context, null);
    }

    public RoundImageView2(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public RoundImageView2(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        mPath = new Path();
    }

    @Override
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
        super.onLayout(changed, left, top, right, bottom);
        mWidth = getWidth();
        mHeight = getHeight();
    }

    @Override
    protected void onDraw(Canvas canvas) {
        int radius = 20; //圆角半径
        if (mWidth > radius && mHeight > radius) {
            mPath.moveTo(radius, 0);
            mPath.lineTo(mWidth - radius, 0);
            mPath.quadTo(mWidth, 0, mWidth, radius);
            mPath.lineTo(mWidth, mHeight - radius);
            mPath.quadTo(mWidth, mHeight, mWidth - radius, mHeight);
            mPath.lineTo(radius, mHeight);
            mPath.quadTo(0, mHeight, 0, mHeight - radius);
            mPath.lineTo(0, radius);
            mPath.quadTo(0, 0, radius, 0);
            canvas.clipPath(mPath);
        }
        super.onDraw(canvas);
    }

}

参考文章

  1. Android中ImageView半边圆角处理记录 -91易搜 - 阅读是一种生活方式 ()

 历史上的今天

  1. 2020: Android Studio的Gradle下载慢(0条评论)
版权声明 1、 本站名称: 91易搜
2、 本站网址: 91es.com3xcn.com
3、 本站内容: 部分来源于网络,仅供学习和参考,若侵权请留言
3、 本站申明: 个人流水账日记,内容并不保证有效

暂无评论

暂无评论...

随机推荐

AsyncTask源码分析

AsyncTask源码分析,当前使用的Android 6.0的代码,AsyncTask源码目录在如下:base\core\java\android\os\AsyncTask.java在分析源码之前,我们看看我们在项目中是如何使用AsyncTask的。下面是个简单的demo,只是写了AsyncT...

adb shell settings 参数命令集合

前言Android中配置有很多参数,一般可以通过Log日志打印,但是想偷懒因此这里介绍部分参数可以通过命令直接查看配置的值。下面就介绍一些使用adb shell settings 等命令获取Android中配置的值。PS:注意红色字体,不同的settings参数获取的方式不同小结用了ge...

戴望舒:雨巷

撑着油纸伞,独自彷徨在悠长、悠长又寂寥的雨巷我希望逢着一个丁香一样地结着愁怨的姑娘 她是有丁香一样的颜色丁香一样的芬芳丁香一样的忧愁在雨中哀怨哀怨又彷徨 她彷徨在这寂寥的雨巷撑着油纸伞像我一样像我一样地默默行着寒漠、凄清,又惆怅 ...

毕淑敏:世上千寒,心中永暖

记得当年做医学生实习时,轮到去产科学接生。见那刚生下来的宝宝,一出母体,便放声大哭。倘在别处,听到有人痛嚎,众人必是关切不安,以示慰问。在产科接生室内,哭声便是捷报。若是不闻哭声,助产士便要心焦了。民间流传说,老式的接生婆如果听不到新生儿哭,会立马把孩子头朝下倒拎着,在屁股上猛砸几巴掌,娃儿惊哭出来...

史铁生:我与地坛[节选]

现在让我想想,十五年中坚持到这园子来的人都是谁呢?好像只剩了我和一对老人。十五年前,这对老人还只能算是中年夫妇,我则货真价实还是个青年。他们总是在薄暮时分来园中散步,我不大弄得清他们是从哪边的园门进来,一般来说他们是逆时针绕这园子走。男人个子很高,肩宽腿长,走起路来目不斜视,胯以上直至脖颈挺直不...

FileProvider的使用

前言自Android 7.0开始,Android 框架开启了严格模式(StrictMode),禁止应用将file:///开头的Uri共享给其他的应用读写文件,否则会收到FileUriExposedException的异常。因此,Android提供了新的文件共享机制FileProvider。记录...