Androidプログラミング

【Android】UIを手前に描画する方法【XML】

Androidで描画順序を制御する方法のアイキャッチ画像 Android

今回はAndroidでUIの描画順序をしてする方法を紹介します。あるUIを手前に描画したい場合などに使用します。C#(WPF/XAML)ではZIndexでやっていましたが、ふとAndroid(XML)でやる方法が気になり、サンプルを作ってみましたので紹介します。

スポンサーリンク

とりあえずFrameLayoutで描画してみる

UIが並ばずに重なって描画されるFrameLayoutを使用します。

FrameLayout内に3色(RGB)のTextViewを配置してみました。記載はRGBの順です。
適当にmarginを設定して完全に重ならないようにしています。

描画サンプルの様子
Windows感

XMLの上から描画されるので、B(青)が一番手前に描画されています。

スポンサーリンク

描画の順番を制御する方法(手前に描画する方法)

translationZを設定することで、どのUIを手前に描画するかを制御できます。

上のサンプルにおいて緑のTextViewを手前に持ってくる場合、以下のように設定します。

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="400dp"
    android:padding="100dp"
    android:background="#ccc">
    <!-- Red -->
    <TextView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#f00"
        android:text="RED" />
    <!-- Green -->
    <TextView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_margin="25dp"
        android:background="#0f0"
        android:translationZ="1dp"
        android:text="Green" />
    <!-- Blue -->
    <TextView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_margin="50dp"
        android:background="#55f"
        android:text="Blue" />
</FrameLayout>

緑が手前に来ました。

GreenにtranslationZを設定した様子
緑が手前に描画された様子

translationZの値が大きいほうが手前に描画されます。またデフォルト値は0のようです。

スポンサーリンク

まとめ

今回はtranslationZで手前に描画する方法を紹介しました。
他にelevationというパラメータもあるようなので時間があるときに触ってみようと思います。

以下関連記事。

コメント

タイトルとURLをコピーしました