📱

[Android] Jetpack Compose Modifier

2024/11/07に公開

droidkaigi2014を見たのでメモ
https://www.youtube.com/watch?v=xemVJ10oW-E

Modifierは約150種類ある
https://developer.android.com/develop/ui/compose/modifiers-list

Action

clickable

クリック、タップなどのイベントを検出

draggable

単一のOrientationでドラッグする

selectable

項目の選択管理、ラジオボタンやチェックボックスのような動作

combinedClickable

onClick, onDoubleClick, onLongClickといった複数のタッチイベントを1つのComposableで処理できる

draggable2D

2次元方面(水平と垂直両方)でドラッグする

selectableGroup

複数の項目から1つだけ選択できるグループを作成する

toggleable

トグルボタン、イベントを介して切り替えを可能にする

triStateToggleable

toggleableの拡張、on/off/不確定の状態を切り替え可能にする

Alignment

align

指定の方向に揃える、Column, Row, Box内で使用できる

alignByBaseline

RowやColumn内でベースラインを揃える(16spのTextと12spの文字を横並びにしたいときなど)

Border

border

枠線を追加、太さ、色、形状を指定できる

Drawing

background

背景に色、グラデーションを設定

clip

描画範囲を指定した形状でくり抜く

alpha

0.0f(透明)~1.0f(不透明)で透明度を設定できる

zIndex

値が大きい要素を手前に描画する、デフォルトは0

clipToBounds

子要素が親要素の境界からはみ出さないように切り取る、親要素につける

shadow

影を描画するgraphicsLayerを作成する、影の色、形状を指定できる

drawBehind

要素の背後にカスタム描画を行う、線:drawLine, 円:drawCircle, テキスト:drawTextなど描画関数がある

Padding

padding

コンテンツの端にスペースを追加する

paddingFromBaseline

ベースラインを基準としたpaddingを追加する

Pointer

pointerInput

タッチやマウスなどのポインターイベントを処理するための低レベルのModifier、カスタムジェスチャー(ドラッグ、タップ、ズーム)を実装するのに必要

Semantics(Composableの意味や役割を表すメタデータ)

アクセシビリティの向上

semantics

テストやユーザー補助機能(読み上げ)などで使用するために、セマンティクスのkey-valueペアをレイアウトノードに追加する

clearAndSetSemantics

子要素の既存のセマンティクス情報をクリアし、新しい情報を設定する

progressSemantics

進行状況インジケータの現在の進行状況を伝えることが可能になる

Size

wrapContentHeight, wrapContentWidth

要素の内容が収まる最小限の高さ・幅で表示

wrapContentSize

要素の内容が収まる最小限のサイズで表示

defaultMinSize

要素の最小サイズを指定

heightIn, widthIn

min dpからmax dpまでの範囲に大きさを制限する、画像の場合minより小さい場合拡大はされない、トリミングしたい場合は、clipを使用

animateContentSize

要素のサイズ変更をアニメーションによって滑らかに変化させる

Test

testTag

テスト用のタグをつける、UIテストの場合このタグを使って識別できる

Transformations

rotate

要素を指定した角度で回転させる

scale

要素を指定した倍率で拡大・縮小させる

transformable

ジェスチャーに応じてサイズや回転を変更できるようにする

Other

basicMarquee

幅が広すぎて利用可能なスペースに収まらないコンテンツをマーキアニメーションで表示する

blur

要素にボカシ効果を適用ボカシの半径を指定でき、値が大きいとボカシが強くなる、Android12(API31)以上で使用可能

hoverable

要素にホバーインタラクションを追加する、エミュレータではタッチイベントしかサポートされていないので動作確認できない

magnifier

拡大機能(虫眼鏡)、Android9(API28)以上で利用可能

onPlaced

要素のレイアウトが確定したとき、変更されたとき実行されるコールバックを提供

placeholder

wear OS by Googleでコンテンツの読み込み中などの時にプレースホルダーを表示

placeholderShimmer

wear OS by Googleでコンテンツの読み込み中などの時に点滅するプレースホルダーを表示

Discussion