延迟顶部背景颜色 Sheet

Delay Background Color in Top Sheet

我正在努力使顶部 sheet 出现两种背景颜色,但其中一种颜色延迟 10 秒。我试图实现动画延迟,但在实现时遇到了问题。

top_sheet_color_background.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:top="200dp">
        <shape android:shape="rectangle" >
            <size android:height="10dp" />
            <corners
                android:topLeftRadius="0dp"
                android:topRightRadius="0dp"
                android:bottomLeftRadius="30dp"
                android:bottomRightRadius="30dp">
            </corners>
            <solid android:color="@android:color/holo_blue_bright" />
        </shape>
    </item>

    <item android:bottom="50dp">
        <shape android:shape="rectangle" >
            <size android:height="100dp" />
            <corners
                android:topLeftRadius="0dp"
                android:topRightRadius="0dp"
                android:bottomLeftRadius="30dp"
                android:bottomRightRadius="30dp">
            </corners>
            <solid android:color="@android:color/white" />
        </shape>
    </item>
</layer-list>

top_sheet.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/top_sheet"
    android:layout_width="match_parent"
    android:layout_height="450dp"
    android:orientation="vertical"
    android:padding="30dp"
    android:elevation="0dp"
    android:layout_margin="0dp"
    app:behavior_hideable="false"
    app:behavior_peekHeight="0dp"
    android:background="@drawable/top_sheet_color_background"
    app:layout_behavior="@string/top_sheet_auto_close_behavior">
</LinearLayout>

最简单快捷的方法是使用带有淡入淡出动画的选择器:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
    android:exitFadeDuration="@android:integer/config_shortAnimTime">

    <item android:state_enabled="true" >
        <layer-list>
            <item android:top="200dp">
                <shape android:shape="rectangle" >
                    <size android:height="10dp" />
                    <corners
                        android:topLeftRadius="0dp"
                        android:topRightRadius="0dp"
                        android:bottomLeftRadius="30dp"
                        android:bottomRightRadius="30dp">
                    </corners>
                    <solid android:color="@android:color/holo_blue_bright" />
                </shape>
            </item>

            <item android:bottom="50dp">
                <shape android:shape="rectangle" >
                    <size android:height="100dp" />
                    <corners
                        android:topLeftRadius="0dp"
                        android:topRightRadius="0dp"
                        android:bottomLeftRadius="30dp"
                        android:bottomRightRadius="30dp">
                    </corners>
                    <solid android:color="@android:color/white" />
                </shape>
            </item>
        </layer-list>
    </item>

    <item>
        <shape android:shape="rectangle" >
            <size android:height="10dp" />
            <corners
                android:topLeftRadius="0dp"
                android:topRightRadius="0dp"
                android:bottomLeftRadius="30dp"
                android:bottomRightRadius="30dp">
            </corners>
            <solid android:color="@android:color/holo_blue_bright" />
        </shape>
    </item>
</selector>

在您的 activity 中,您刚刚设置了延迟以启用视图:

top_sheet.isEnabled = false
top_sheet.postDelayed({
    top_sheet.isEnabled = true
}, 1000) //animation delay