1
3

More than 3 years have passed since last update.

AndroidでImageViewをソースコードで丸くしたい(Kotlin編)

Posted at

今回はAndroidでImageViewをソースコードで丸くしたいなと思いまして、対応しました。
私のメモレベルです。
よかったら参考にしてもらえると幸いです。

Javaの場合

Javaをご利用しているは、こちらを参考してください。
https://android.benigumo.com/20140324/imageview-%E3%82%92-%E7%B0%A1%E5%8D%98%E3%81%AB-%E8%A7%92%E4%B8%B8-%E3%81%AB%E3%81%99%E3%82%8B/

Kotlinの場合

下記の関数を導入します。

fun getCroppedBitmap(bitmap: Bitmap): Bitmap? {
        val width = bitmap.width
        val height = bitmap.height
        val rect = Rect(0, 0, width, height)
        val rectf = RectF(0F, 0F, width.toFloat(), height.toFloat())
        val output = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
        val canvas = Canvas(output)
        val paint = Paint()
        paint.setAntiAlias(true)

     // ここで丸みをつけます。「2.toFloat()」の数字を大きくするほど、
        // 丸みが小さくなります。この状態だと円のように切り抜けます。
        canvas.drawRoundRect(rectf, width / 2.toFloat(), height / 2.toFloat(), paint)
        paint.setXfermode(PorterDuffXfermode(PorterDuff.Mode.SRC_IN))
        canvas.drawBitmap(bitmap, rect, rect, paint)
        return output
    }

これを実際に使う場合の例

var bmp = BitmapFactory.decodeByteArray(it, 0, it.count())
this.getCroppedBitmap(bmp)?.let {
  bmp = it
}
holder.writerImageView.setImageBitmap(
  Bitmap.createScaledBitmap(
    bmp, holder.writerImageView.getWidth(),
    holder.writerImageView.getHeight(), false
  )
)

以上になります。
12月ごろからAndroid開発もするようになりました。
こんな感じで今後もメモを残していきたいと思いますmm

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3