Android 快速将一个Bitmap变成圆形或圆角矩形 kotlin

  • Bitmap转圆形Drawable
  • Bitmap转圆角Drawable
  • 完事

Bitmap转圆形Drawable

新建文件CircleImageDrawable

class CircleImageDrawable(mBitmap: Bitmap) : Drawable() {    private val mPaint: Paint    private val mWidth: Int    init {        val bitmapShader = BitmapShader(            mBitmap, TileMode.CLAMP,            TileMode.CLAMP        )        mPaint = Paint()        mPaint.isAntiAlias = true        mPaint.shader = bitmapShader        mWidth = mBitmap.width.coerceAtMost(mBitmap.height)    }    override fun draw(canvas: Canvas) {        canvas.drawCircle(mWidth / 2.toFloat(), mWidth / 2.toFloat(), mWidth / 2.toFloat(), mPaint)    }    override fun getIntrinsicWidth(): Int {        return mWidth    }    override fun getIntrinsicHeight(): Int {        return mWidth    }    override fun setAlpha(alpha: Int) {        mPaint.alpha = alpha    }    override fun setColorFilter(cf: ColorFilter?) {        mPaint.colorFilter = cf    }    override fun getOpacity(): Int {        return PixelFormat.TRANSLUCENT    }}

使用:

imgUser.setImageDrawable(CircleImageDrawable(bitmap))

Bitmap转圆角Drawable

新建文件RoundImageDrawable

class RoundImageDrawable(mBitmap: Bitmap, radius: Float) : Drawable() {    private val mPaint: Paint    private val mWidth: Int    private val mRadius: Float    init {        val bitmapShader = BitmapShader(            mBitmap, Shader.TileMode.CLAMP,            Shader.TileMode.CLAMP        )        mPaint = Paint()        mPaint.isAntiAlias = true        mPaint.shader = bitmapShader        mWidth = mBitmap.width.coerceAtMost(mBitmap.height)        mRadius = radius    }    override fun draw(canvas: Canvas) {        canvas.drawRoundRect(0f, 0f, mWidth.toFloat(), mWidth.toFloat(), mRadius, mRadius, mPaint)    }    override fun getIntrinsicWidth(): Int {        return mWidth    }    override fun getIntrinsicHeight(): Int {        return mWidth    }    override fun setAlpha(alpha: Int) {        mPaint.alpha = alpha    }    override fun setColorFilter(cf: ColorFilter?) {        mPaint.colorFilter = cf    }    override fun getOpacity(): Int {        return PixelFormat.TRANSLUCENT    }}

使用:

imgUser.setImageDrawable(RoundImageDrawable(bitmap, 12f))

完事

更多相关文章

  1. android 圆形头像—— android开源系列:CircleImageView自定义圆
  2. android 在新建短信时,加入名称为","(英文逗号)的联系人时,应用崩
  3. Your project contains error(s),please fix them before running
  4. Android学习笔记35——ProgressBar进度控件详解
  5. Android(安卓)Studio运行项目闪退(页面闪退以及跳转闪退)
  6. Android(安卓)Studio中Xml的新建及shape绘图
  7. Android(安卓)studio创建java项目
  8. Android(安卓)Studio中Xml的新建及shape绘图
  9. Android:设置圆形头像,Android截取圆形图片

随机推荐

  1. Android(安卓)Gallery3D源码分析(二)
  2. 解决变量名被#define的问题
  3. 下拉刷新、上拉加载实战:带你理解自定义Vi
  4. 简述Android(安卓)framework之AMS、PMS、
  5. android 工具 HierarchyViewer activity
  6. android camera 拍照加图片处理
  7. android其实很简单 -- Glide简单分析
  8. android启动过程配置文件的解析与语法 .
  9. Android之创建自定义属性
  10. Gradle for Android(安卓)第七篇( Groovy