当前位置:主页 > android教程 > Android圆形图片小工具

Android实现圆形图片小工具

发布:2023-03-09 18:00:01 59


为网友们分享了相关的编程文章,网友杜灿灿根据主题投稿了本篇教程内容,涉及到Android、圆形图片、Android圆形图片小工具相关内容,已被589网友关注,内容中涉及的知识点可以在下方直接下载获取。

Android圆形图片小工具

本文实例为大家分享了Android实现圆形图片小工具的具体代码,供大家参考,具体内容如下

1.CircleImageView类代码

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

    //画笔
    private Paint mPaint;
    //圆形图片的半径
    private int mRadius;
    //图片的宿放比例
    private float mScale;

    public CircleImageView(Context context) {
        super(context);
    }

    public CircleImageView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public CircleImageView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        //由于是圆形,宽高应保持一致
        int size = Math.min(getMeasuredWidth(), getMeasuredHeight());
        mRadius = size / 2;
        setMeasuredDimension(size, size);
    }

    @SuppressLint("DrawAllocation")
    @Override
    protected void onDraw(Canvas canvas) {

        mPaint = new Paint();

        Drawable drawable = getDrawable();

        if (null != drawable) {
            Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();

            //初始化BitmapShader,传入bitmap对象
            BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
            //计算缩放比例
            mScale = (mRadius * 2.0f) / Math.min(bitmap.getHeight(), bitmap.getWidth());

            Matrix matrix = new Matrix();
            matrix.setScale(mScale, mScale);
            bitmapShader.setLocalMatrix(matrix);
            mPaint.setShader(bitmapShader);
            //画圆形,指定好坐标,半径,画笔
            canvas.drawCircle(mRadius, mRadius, mRadius, mPaint);
        } else {
            super.onDraw(canvas);
        }
    }

}

2.布局文件中使用

代码




   

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。


参考资料

相关文章

  • Android audio音频流数据异常问题解决分析

    发布:2023-03-04

    这篇文章主要为大家介绍了Android audio音频流数据异常问题解决分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪


  • Android Handler源码深入探究

    发布:2023-03-03

    handler其实就是主线程在起了一个子线程,子线程运行并生成Message,Looper获取message并传递给Handler,Handler逐个获取子线程中的Message


  • 浅谈Android串口通讯SerialPort原理

    发布:2023-03-06

    这篇文章主要介绍了浅谈Android串口通讯SerialPort原理,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下


  • 务必掌握的Android十六进制状态管理最佳实践

    发布:2023-03-13

    这篇文章主要为大家介绍了务必掌握的Android十六进制状态管理最佳实践,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪


  • Kotlin语言使用WebView示例介绍

    发布:2023-03-07

    随着后台技术的不断发展,App前端的应用都布置了Web页面的界面,这个界面就是由WebView组件渲染出来的。WebView由如下优点:可以直接显示和渲染Web页面或者网页;可以直接调用网络上或者本地的html文件,也可以和JavaScript交互使用


  • Android启动初始化方案App StartUp的应用详解

    发布:2023-03-06

    这篇文章主要介绍了Android启动初始化方案App StartUp的使用方法,StartUp是为了App的启动提供的一套简单、高效的初始化方案,下面我们来详细了解


  • Android用于加载xml的LayoutInflater源码超详细分析

    发布:2023-03-03

    今天不想去聊一些Android的新功能,新特性之类的东西,特别想聊一聊这个老生常谈的话题:LayoutInflater,感兴趣的朋友来看看吧


  • Android性能优化之plt hook与native线程监控详解

    发布:2023-03-10

    这篇文章主要为大家介绍了Android性能优化之plt hook与native线程监控详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪


网友讨论