web-dev-qa-db-ja.com

Androidグラデーション付きのシェイプ境界線

LinearLayoutの境界線を作成したい。それで、シェイプを作成することにしました。境界線にグラデーションが必要です。以下はそれをしていません。四角形を塗りつぶし、ストロークを作成します。塗りつぶされた長方形は必要ありません。ストロークだけです。そして、グラデーションをストロークに適用したいと思います。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="rectangle" >

    <gradient
        Android:angle="360"
        Android:centerColor="#e95a22"
        Android:endColor="#ff00b5"
        Android:gradientRadius="360"
        Android:startColor="#006386"
        Android:type="sweep" />

    <stroke
        Android:width="2dp"
        Android:color="#ff207d94" />

</shape>
30
learner

次のようなものを試してください:

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android" >

    <item>
        <shape Android:shape="rectangle" >
            <gradient
                Android:angle="360"
                Android:centerColor="#e95a22"
                Android:endColor="#ff00b5"
                Android:gradientRadius="360"
                Android:startColor="#006386"
                Android:type="sweep" />

            <stroke
                Android:width="2dp"
                Android:color="#ff207d94" />
        </shape>
    </item>
    <item
        Android:bottom="2dp"
        Android:left="2dp"
        Android:right="2dp"
        Android:top="2dp">
        <shape Android:shape="rectangle" >
            <solid Android:color="#fff" />
        </shape>
    </item>

</layer-list>
36
vipul mittal

受け入れられた答えは私が望んでいたとおりに機能しなかったので、私も自分の解決策を投稿します。他の誰かに役立つかもしれません:)

<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android" >

<item>
<!-- create gradient you want to use with the angle you want to use -->
    <shape Android:shape="rectangle" >
        <gradient
            Android:angle="0"
            Android:centerColor="@Android:color/holo_blue_bright"
            Android:endColor="@Android:color/holo_red_light"
            Android:startColor="@Android:color/holo_green_light" />

    </shape>
</item>
<!-- create the stroke for top, left, bottom and right with the dp you want -->
<item
    Android:bottom="2dp"
    Android:left="2dp"
    Android:right="2dp"
    Android:top="2dp">
    <shape Android:shape="rectangle" >
        <!-- fill the inside in the color you want (could also be a gradient again if you want to, just change solid to gradient and enter angle, start, maybe center, and end color) -->
        <solid Android:color="#fff" />
    </shape>
</item>

</layer-list>
19
Distra

これにより、上部の境界線が2dpのレイアウトが作成されます。レイアウトの背景として設定するだけです

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item>
        <shape Android:shape="rectangle">
            <gradient
                Android:startColor="#4fc949"
                Android:centerColor="#0c87c5"
                Android:endColor="#b4ec51"
                Android:angle="180" />
        </shape>
    </item>
    <item Android:top="2dp">
        <shape Android:shape="rectangle">
            <solid Android:color="@color/background_color"/>
        </shape>
    </item>
</layer-list>
4
Alon Kogan

この余分なソースは問題を解決するはずです

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item>
        <shape Android:shape="rectangle">
            <gradient
                Android:angle="360"
                Android:centerColor="#e95a22"
                Android:endColor="#ff00b5"
                Android:gradientRadius="360"
                Android:startColor="#006386"
                Android:type="sweep" />
            <size Android:height="170dp"
                Android:width="170dp"/>
        </shape>
    </item>
    <item Android:top="2dp" Android:bottom="2dp" Android:right="2dp" Android:left="2dp">
        <shape Android:shape="rectangle">
            <size Android:width="140dp"
                Android:height="140dp"/>
            <solid Android:color="@color/colorAccent"/>
            <solid Android:color="@color/white"/>
        </shape>
    </item>
</layer-list>
1
Jay

これは、あなたがやりたいことの適切な解決策になります。ストロークのグラデーションと塗りつぶしのグラデーションが含まれます

<?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
        <item>
            <shape >
                <gradient
                    Android:startColor="#2196F3"
                    Android:endColor="#673AB7"
                    Android:angle="270" />
                <stroke
                    Android:width="0dp"
                    Android:color="@color/transparentColor" />
                <corners
                    Android:radius="8dp" />
                <padding
                    Android:left="2dp"
                    Android:right="2dp"
                    Android:top="2dp"
                    Android:bottom="2dp" />
            </shape>
        </item>
        <item>
            <shape Android:shape="rectangle">

            </shape>
        </item>
        <item Android:top="0dp">
            <shape>
                <gradient
                    Android:startColor="#FBB100"
                    Android:endColor="#FF9900"
                    Android:angle="270"/>

                <corners
                    Android:radius="8dp" />
            </shape>
        </item>
    </layer-list>
0
Shivam Narula