Androidアプリ開発

ViewGroup(レイアウト)に影をつける

この記事は約9分で読めます。
記事内に広告が含まれています。
スポンサーリンク

この記事はAndroidスマホ用のアプリ開発の中で、
今後の開発で再使用性が高いと思われるコーディングをまとめたものです。
Javaでの開発経験、XML構文規則、Androidのアプリ開発経験がある方を対象としています。
Androidのアプリ開発でお役にたててれば、嬉しいです。
(これからAndroidのアプリ開発やJavaの開発を始めたい方への案内は、
記事の最後で紹介します)

この記事のテーマ


ViewGroup(レイアウト)を立体に見せる影をつける

何だかんだいっても、アプリ開発で使うならPixelシリーズがベストと思います。

ポイント

Viewコンポーネントを立体的に見せる方法として、elevationに値を設定して影をつける方法が有効です。
しかし、ViewGroup(レイアウト)のelevationに値を設定しても影がつきません。
今回は、ViewGroupに影をつける方法を紹介します。

ViewGroup(レイアウト)の代わりにCardViewでも影をつけることができます。

レイアウト定義

ViewGroupLinearLayout)につける影の高さをelevationに設定します。

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg_grad_grey3">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:ignore="UselessParent">
        <LinearLayout
            android:id="@+id/panel"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="4dp"
            android:elevation="4dp"
            android:orientation="vertical"
            tools:ignore="UselessParent">
            <LinearLayout
                android:id="@+id/linearLayout1"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                android:orientation="vertical"
                android:background="@drawable/bg_grad_grey1"
                tools:ignore="UselessParent">
                :

bg_grad_grey1やbg_grad_grey3はレイアウトに設定する背景です。
bg_grad_grey3はグラデーション背景、bg_grad_grey1は角丸の枠線を定義した背景です。

ViewGroupに影をつける

ViewOutlineProvidergetOutlineをオーバライドして影を描写します。
影の描写にはPathで影を設定する枠(範囲)を指定します。

        :
        ViewOutlineProvider provider = new ViewOutlineProvider() {
            @Override
            public void getOutline(View view, Outline outline) {
                float width = view.getWidth();
                float height = view.getHeight();
                android.graphics.Path path = new android.graphics.Path();
                path.lineTo(0, height);
                path.lineTo(width, height);
                path.lineTo(width, 0);
                path.lineTo(0, 0);
                path.close();
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
                    outline.setPath(path);
                } else {
                    outline.setConvexPath(path);
                }
            }
        };
        LinearLayout panel = findViewById(R.id.panel);
        panel.setOutlineProvider(isEdit ? provider : null);
        :

LinearLayoutの影を設定する枠をlineToで4つの辺を線で描きます。
setOutlineProviderLinearLayoutに影を設定します。
影を外す場合はnullを設定します。

今回は、ここまでです。

ViewGroup(LinearLayout)に影をつけているAndroidアプリです。

誤字脱字、意味不明でわかりづらい、
もっと詳しく知りたいなどのご意見は、
このページの最後にある
コメントか、
こちらから、お願いいたします♪

ポチッとして頂けると、
次のコンテンツを作成する励みになります♪

ブログランキング・にほんブログ村へ

これからAndroidのアプリ開発やJavaでの開発を始めたい方へ

アプリケーション開発経験がない方や、アプリケーション開発経験がある方でも、JavaやC#などのオブジェクト指向言語が初めての方は、Androidのアプリ開発ができるようになるには、かなりの時間がかかります。
オンラインスクールでの習得を、強くおススメします。

未経験者からプログラマーを目指すのに最適です。まずは無料カウンセリングから♪

カリキュラムとサポートがしっかりしています。お得なキャンペーンとかいろいろやっています♪

ゲーム系に強いスクール、UnityやUnrealEngineを習得するのに最適です。まずは無料オンライン相談から♪

参考になったら、💛をポッチとしてね♪

スポンサーリンク
msakiをフォローする
スポンサーリンク

コメント欄

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