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实现文件上传功能(接收端用strust2)
  3. android 获取文件的扩展名和去掉文件的扩展名
  4. android平台上的文件下载,文件和文件的操作
  5. Android APK文件安装过程小结
  6. Android 文件操作
  7. android从资源文件中读取文件流显示
  8. android 快速移动sdCard的文件夹
  9. Android Studio module里面放switch语句报错 R文件找不到

随机推荐

  1. 换到android 3.0出现duplicate value for
  2. ScaleImageView图片缩放查看器
  3. Android之旅 -- ARouter 使用介绍(一)
  4. android数据保存
  5. 在android中使用Realm数据库
  6. Android,一个函数实现指南针
  7. android classes.dex 反编译
  8. Android(安卓)Studio下,如何解决:java-An
  9. Android(安卓)带checkbox的listView 实现
  10. 手机扫描二维码下载APP,根据操作系统不同