文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android怎么实现图片设置圆角形式

2023-06-21 20:46

关注

这篇文章主要讲解了“Android怎么实现图片设置圆角形式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android怎么实现图片设置圆角形式”吧!

自定义的图片圆角形式CircleImageView类

public class CircleImageView extends ImageView {    private static final Xfermode MASK_XFERMODE;    private Bitmap mask;    private Paint paint;    private int mBorderWidth = 10;    private int mBorderColor = Color.parseColor("#f2f2f2");    private boolean useDefaultStyle = false;    static {        PorterDuff.Mode localMode = PorterDuff.Mode.DST_IN;        MASK_XFERMODE = new PorterDuffXfermode(localMode);    }    public CircleImageView(Context context) {        super(context);    }    public CircleImageView(Context context, AttributeSet attrs) {        this(context, attrs, 0);    }    public CircleImageView(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CircularImage);        mBorderColor = a.getColor(R.styleable.CircularImage_border_color, mBorderColor);        final int def = (int) (2 * context.getResources().getDisplayMetrics().density + 0.5f);        mBorderWidth = a.getDimensionPixelOffset(R.styleable.CircularImage_border_width, def);        a.recycle();    }    private void useDefaultStyle(boolean useDefaultStyle) {        this.useDefaultStyle = useDefaultStyle;    }    @Override    protected void onDraw(Canvas canvas) {        if (useDefaultStyle) {            super.onDraw(canvas);            return;        }        final Drawable localDraw = getDrawable();        if (localDraw == null) {            return;        }        if (localDraw instanceof NinePatchDrawable) {            return;        }        if (this.paint == null) {            final Paint localPaint = new Paint();            localPaint.setFilterBitmap(false);            localPaint.setAntiAlias(true);            localPaint.setXfermode(MASK_XFERMODE);            this.paint = localPaint;        }        final int width = getWidth();        final int height = getHeight();                int layer = canvas.saveLayer(0.0F, 0.0F, width, height, null, 31);                localDraw.setBounds(0, 0, width, height);                localDraw.draw(canvas);        if ((this.mask == null) || (this.mask.isRecycled())) {            this.mask = createOvalBitmap(width, height);        }                canvas.drawBitmap(this.mask, 0.0F, 0.0F, this.paint);                canvas.restoreToCount(layer);        drawBorder(canvas, width, height);    }        private void drawBorder(Canvas canvas, final int width, final int height) {        if (mBorderWidth == 0) {            return;        }        final Paint mBorderPaint = new Paint();        mBorderPaint.setStyle(Paint.Style.STROKE);        mBorderPaint.setAntiAlias(true);        mBorderPaint.setColor(mBorderColor);        mBorderPaint.setStrokeWidth(mBorderWidth);        canvas.drawCircle(width / 2, height / 2, (width - mBorderWidth) / 2, mBorderPaint);        canvas = null;    }    public Bitmap createOvalBitmap(final int width, final int height) {        Bitmap.Config localConfig = Bitmap.Config.ARGB_8888;        Bitmap localBitmap = Bitmap.createBitmap(width, height, localConfig);        Canvas localCanvas = new Canvas(localBitmap);        Paint localPaint = new Paint();        final int padding = (mBorderWidth - 3) > 0 ? mBorderWidth - 3 : 1;                RectF localRectF = new RectF(padding, padding, width - padding, height - padding);        localCanvas.drawOval(localRectF, localPaint);        return localBitmap;    }}

1 在values目录下创建一个circle_attr.xml,文件内容:

<?xml version="1.0" encoding="utf-8"?><resources>    <declare-styleable name="CircularImage">        <attr name="border_width" format="dimension" />        <attr name="border_color" format="color" />    </declare-styleable></resources>

如下图:

Android怎么实现图片设置圆角形式

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">        <ImageView            android:layout_width="100dp"            android:layout_height="100dp"            android:src="@drawable/ic_sp" />        <com.demo.test.bitmap.CircleImageView            android:layout_width="100dp"            android:layout_height="100dp"            android:layout_marginLeft="50dp"            android:src="@drawable/ic_sp" />    </LinearLayout></LinearLayout>

MainActivity.java

public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }}

运行后结果:

 Android怎么实现图片设置圆角形式

感谢各位的阅读,以上就是“Android怎么实现图片设置圆角形式”的内容了,经过本文的学习后,相信大家对Android怎么实现图片设置圆角形式这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯