Android Drawable叠加形状

时间:2016-09-29 21:00:13

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

我正在尝试创建一个可绘制的叠加形状控件,它基本上在顶部有一个坚固的白色框,然后屏幕的剩余部分将具有从纯白色到半透明白色的渐变。我们使用它来覆盖背景图像,在顶部创建一个纯白色区域,然后逐渐淡入底部的背景图像。

使用这段代码它基本上得到了我想要的东西,除了我想在公司徽标区域下面有一个真正的纯白色区域(抱歉我不得不在屏幕截图中删除公司徽标和应用程序名称),从下面开始渐变纯白色。

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <shape xmlns:android="http://schemas.android.com/apk/res/android"
                android:shape="rectangle">
                <gradient
                    android:angle="270"
                    android:startColor="#ffffffff"
                    android:centerColor="#00ffffff"
                    android:endColor="#00ffffff"
                    android:centerY="0.6"
                    android:type="linear" />
            </shape>
        </item>
        <item>
            <shape xmlns:android="http://schemas.android.com/apk/res/android"
                android:shape="rectangle">
                <gradient
                    android:startColor="#ffffffff"
                    android:centerColor="#ffffffff"
                    android:endColor="#00ffffff"
                    android:centerY="-0.17"
                    android:gradientRadius="100%p"
                    android:type="radial" />
            </shape>
        </item>
    </layer-list>

产生类似于此的显示:

enter image description here

但我真的想要一个更加坚实的白色区域直接位于公司徽标区域下,然后在该点之后开始渐变。但是你可以看到渐变从屏幕顶部开始。

我试过做类似以下的事情,但它不起作用。添加列表中的第一项确实给了我一个坚实的区域,但由于某些原因,我可能只是不明白,顶部项目填充整个屏幕的纯白色。我尝试将第一个项目移到底部,但仍然给了我完整的白色屏幕。

    <?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="100dp" />
            <solid android:color="#ffffffff"/>
        </shape>
    </item>
    <item android:top="100dp" >
        <shape
            android:shape="rectangle">
            <gradient
                android:angle="270"
                android:startColor="#ffffffff"
                android:centerColor="#00ffffff"
                android:endColor="#00ffffff"
                android:type="linear" />
        </shape>
    </item>
    <item android:top="100dp" >
        <shape
            android:shape="rectangle">
            <gradient
                android:startColor="#ffffffff"
                android:centerColor="#ffffffff"
                android:endColor="#00ffffff"
                android:centerY="-0.17"
                android:gradientRadius="100%p"
                android:type="radial" />
        </shape>
    </item>
</layer-list>

任何人都可以告诉我我做错了什么或给我一个更好的方法来做到这一点。

仅供参考。实际图像将应用于基本LinearLayout视图的背景。然后将另一个视图叠加在基本视图的顶部,将此drawable设置为其LinearLayout上的背景,以便它作为背景图像顶部的叠加蒙版。

我感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以将两个“线性布局”子项添加到一个“相对布局”父级。顶部线性布局的背景为白色,底部是渐变色。