ViewOutlineProvider の getOutline() の引数で渡される Outline に Rect, RoundRect, Oval または ConvexPath を指定します。
View が持つ Drawable が invalidate されたり、View のサイズが変わったり、View の invalidateOutline() が呼ばれると getOutline() が呼ばれます。
- private val clipOutlineProvider = object : ViewOutlineProvider() {
- override fun getOutline(view: View, outline: Outline) {
- val margin = min(view.width, view.height) / 10
- outline.setOval(
- 0,
- 0,
- view.width,
- view.height
- )
- }
- }
outline clipping は現状 RoundRect か Circle(Oval で縦横のサイズが同じ)のときだけ効きます。
clip しても View のサイズには影響しないためクリック領域などはそのままです。
- override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- super.onViewCreated(view, savedInstanceState)
- clippedView.outlineProvider = clipOutlineProvider
- clippedView.clipToOutline = true
- }


0 件のコメント:
コメントを投稿