Android(安卓)快速将一个Bitmap变成圆形或圆角矩形 kotlin
16lz
2022-01-13
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))
完事
更多相关文章
- android 圆形头像—— android开源系列:CircleImageView自定义圆
- android 在新建短信时,加入名称为","(英文逗号)的联系人时,应用崩
- Your project contains error(s),please fix them before running
- Android学习笔记35——ProgressBar进度控件详解
- Android(安卓)Studio运行项目闪退(页面闪退以及跳转闪退)
- Android(安卓)Studio中Xml的新建及shape绘图
- Android(安卓)studio创建java项目
- Android(安卓)Studio中Xml的新建及shape绘图
- Android:设置圆形头像,Android截取圆形图片