如何从 2 种颜色为启动屏幕背景创建可绘制对象?

Posted

技术标签:

【中文标题】如何从 2 种颜色为启动屏幕背景创建可绘制对象?【英文标题】:how to create a drawable for a splash screen background from 2 colors? 【发布时间】:2022-01-17 08:22:41 【问题描述】:

我正在尝试为启动屏幕创建一个背景,使用 2 种不同的颜色,一个在另一个之上,每个正好是屏幕的一半,如下所示:

我尝试了以下方法,但由于指定的尺寸,它不适用于所有设备。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#abc123" />
        </shape>
    </item>
    <item android:top="436dp">
        <shape android:shape="rectangle">
            <solid android:color="#456def" />
        </shape>
    </item>
</layer-list>

有人知道创建全屏可绘制背景的方法吗?

【问题讨论】:

【参考方案1】:

你也可以试试这个方法。

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
xmlns:app="http://schemas.android.com/apk/res-auto">

<View
    android:id="@+id/view_top"
    android:layout_
    android:layout_
    android:background="@color/colorBlue"
    app:layout_constraintVertical_chainStyle="packed"
    app:layout_constraintBottom_toTopOf="@+id/view_bottom"
    app:layout_constraintTop_toTopOf="parent"/>

<View
    android:id="@+id/view_bottom"
    android:layout_
    android:layout_
    android:background="@color/colorGreen"
    app:layout_constraintVertical_chainStyle="packed"
    app:layout_constraintTop_toBottomOf="@+id/view_top"
    app:layout_constraintBottom_toBottomOf="parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>

通过在布局文件中创建两个具有垂直约束的视图。

【讨论】:

您能否指定如何将此布局文件用于初始屏幕背景?因为@drawable/@color 是必需的,而不是@layout。 将此布局文件传递给 setContentView() 方法。并根据您的要求自定义此布局。 您不了解我的具体用例,我需要在android:drawable="" 中使用此背景,因此您的解决方案不适用于此。我通过简单地创建一个代表背景的矢量图像解决了我的用例,它可以用于可绘制对象。【参考方案2】:

在这个文件中不能使用重量/百分比尺寸,你必须在你的布局文件中实现这个

【讨论】:

以上是关于如何从 2 种颜色为启动屏幕背景创建可绘制对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何创建由两种颜色并排组成的android drawable?

当背景设置为可绘制时如何从按钮获取颜色

Android Button 背景无法识别/使用可绘制对象

如何从多个图像中绘制可绘制对象?

LayerDrawable 以编程方式

如何在android上获取按钮的背景颜色?