【问题标题】:How can I recreate this background in xml?如何在 xml 中重新创建此背景?
【发布时间】:2018-09-18 08:14:46
【问题描述】:

我一直在尝试在 xml 中重新创建背景图像(作为可绘制的)。由于背景是一个简单的形状,如果创建为xml drawable会更好。

是一个非常大的渐变圆,在左、上和右边界处呈方形。


我的尝试

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape
           android:shape="rectangle">
            <size
               android:height="20dp" />
            <gradient
               android:type="linear"
               android:startColor="@color/gradientLeft"
               android:centerColor="@color/gradientMiddle"
               android:endColor="@color/gradientRight"
               android:angle="0" />
        </shape>
    </item>
    <item>
        <shape
           android:shape="oval">
            <padding
               android:top="20dp" />
            <gradient
               android:type="linear"
               android:startColor="@color/gradientLeft"
               android:centerColor="@color/gradientMiddle"
               android:endColor="@color/gradientRight"
               android:angle="0" />
        </shape>
    </item>
</layer-list>

我尝试创建一个图层列表。此图层列表包含 2 个形状,一个矩形和一个椭圆形。

矩形有渐变,高度为 20dp(待测试)。

椭圆形也有相同的渐变,顶部内边距为 20dp。


但是,这不会创建圆形,而是用渐变填充整个形状。有人可以帮我吗?

【问题讨论】:

    标签: android android-layout android-xml android-drawable layer-list


    【解决方案1】:

    试试这个

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <shape android:shape="rectangle" />
        </item>
        <item
            android:bottom="300dp"
            android:left="-100dp"
            android:right="-100dp"
            android:top="-80dp">
            <shape android:shape="oval">
                <size android:height="20dp" />
                <gradient
                    android:angle="0"
                    android:centerColor="@color/colorAccent"
                    android:endColor="@color/red"
                    android:startColor="@color/colorPrimary"
                    android:type="linear" />
            </shape>
        </item>
    </layer-list>
    

    输出

    【讨论】:

    • 是否可以在此创建动画?例如,用动画完成一项任务,它会将动画变成绿色?我真的很想在我的一项活动中制作这个背景。
    • @Woods 你想要哪种类型的动画
    • 像挥手或级别增加级别的东西会平滑地改变颜色。例如,用户没有生命,颜色应该以红色提醒,如果用户有一个生命/机会,那么将改变颜色。
    【解决方案2】:

    试试这个

        <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item>
              <shape android:shape="rectangle" >
            <solid android:color="#ffffff"/>
        </shape>
     </item> <item
            android:bottom="400dp"
            android:left="-200dp"
            android:right="-200dp"
            android:top="-100dp">
            <shape android:shape="oval">
                <size android:height="20dp" />
                <gradient
                    android:type="linear"
                    android:startColor="#FD4F33"
                    android:centerColor="#EE3A53"
                    android:endColor="#DF2772"
                    android:angle="0" />
            </shape> </item> </layer-list>
    

    背景会是这样的

    【讨论】:

    • 漂亮的复制粘贴请不要这样做
    • @NileshRathod,我真的很抱歉。我没有检查你的答案。我不是故意的。
    猜你喜欢
    • 1970-01-01
    • 2022-12-26
    • 1970-01-01
    • 1970-01-01
    • 2020-01-12
    • 2016-06-13
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多