【Kotlin/Android】ViewOutlineProviderの使い方!輪郭を角丸などの形状にする

この記事からわかること

  • Android Studio/KotlinViewOutlineProvider使い方
  • View輪郭角丸などの形状にする方法
  • setRoundRectsetOvalメソッドの使い方

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

ViewOutlineProvider

公式リファレンス:ViewOutlineProvider

KotlinのViewOutlineProviderは、Viewの輪郭や形状を指定してクリッピングするためのクラスです。このクラスを使用することでViewを円形にしたり、角丸にしたりといったカスタマイズを行うことができるようになります。

例えばViewを円形にする場合の実装を参考に使い方をまとめていきます。

【Kotlin/Android】ViewOutlineProviderの使い方!輪郭を角丸などの形状にする

まずはViewOutlineProviderを継承した独自のクラスを用意します。オーバーライドしているgetOutlineメソッドはViewの輪郭(outline)を定義する役割になります。setOvalメソッドを使用して輪郭を円形にするように定義しています。

// Viewの輪郭を円形にする例
class OvalOutlineProvider : ViewOutlineProvider() {
    override fun getOutline(view: View?, outline: Outline?) {
        view?.let { v ->
            outline?.setOval(0, 0, v.width, v.height)
        }
    }
}

作成したクラスはクリッピングしたいViewoutlineProviderに設定します。デフォルトではクリッピングがOFFになっているので反映されないので明示的にclipToOutlineプロパティにtrueを渡してクリッピングを有効にする必要があるので注意してください。

val view: View = findViewById(R.id.view)
view.outlineProvider = OvalOutlineProvider()
// クリッピングを有効にする
view.clipToOutline = true

setOvalメソッド

setOvalOutlineクラスの持つ楕円(円または楕円)の輪郭を設定するメソッドです。各引数に指定するのは楕円の外接矩形の座標になります。


public void setOval(int left, int top, int right, int bottom) {
    throw new RuntimeException("Stub!");
}

角丸を実装する:setRoundRect

円形ではなく角を丸めたような形にしたい場合はsetRoundRectメソッドを使用して以下のように実装します。

【Kotlin/Android】ViewOutlineProviderの使い方!輪郭を角丸などの形状にする
class RoundedCornerOutlineProvider(private val cornerRadius: Float) : ViewOutlineProvider() {
    override fun getOutline(view: View?, outline: Outline?) {
        view?.let { v ->
            outline?.setRoundRect(0, 0, v.width, v.height, cornerRadius)
        }
    }
}

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index