如何获得android渐变中心光效?

Aje*_*t47 35 android xml-drawable android-drawable

我想要像下面的图像

在此输入图像描述

我尝试使用可绘制的形状

<?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:centerX="50%"
    android:centerY="50%"

    android:gradientRadius="50%"
    android:endColor="#000000"
    android:centerColor="#FFFFFF"
    android:startColor="#000000" >
</gradient>
</shape> 
Run Code Online (Sandbox Code Playgroud)

小智 81

在drawable文件夹中创建一个新的Android xml文件(比如GreyRadial.xml)文件

在您的xml文件中

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

    <gradient
        android:centerColor="#c1c1c1"
        android:endColor="#4f4f4f"
        android:gradientRadius="400"
        android:startColor="#c1c1c1"
        android:type="radial" >
    </gradient>

</shape>
Run Code Online (Sandbox Code Playgroud)

使用此布局背景中的xml

android:background="@drawable/GreyRadial"
Run Code Online (Sandbox Code Playgroud)

  • 图片中的渐变是椭圆形的,但这是圆形的. (10认同)

小智 17

可以使用多个矩形形状在图层列表中近似该效果.使用具有中心背景颜色的实心矩形.然后使用两个渐变,开始和结束颜色相同.除了将alpha设置为零外,还要使中心颜色相同.

在下面的代码中颜色如下:

@color/background_dark = #ffb8860b
@color/background_light = #ffd2b48c
@color/transparent = #00b8860b

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape >
            <solid android:color="@color/background_light"/>
        </shape>
    </item>

    <item>
        <shape>
            <gradient 
                android:startColor="@color/background_dark"
                android:centerColor="@color/transparent"
                android:endColor="@color/background_dark"
                android:angle="45"/>
        </shape>
    </item>

    <item>
        <shape>
            <gradient 
                android:startColor="@color/background_dark"
                android:centerColor="@color/transparent"
                android:endColor="@color/background_dark"
                android:angle="135"/>
        </shape>
    </item>

</layer-list>
Run Code Online (Sandbox Code Playgroud)


Vad*_*dym 10

再一次解决方案:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">
    <gradient
        android:centerX="50%"
        android:centerY="50%"
        android:endColor="@android:color/black"
        android:gradientRadius="100%"
        android:startColor="@android:color/transparent"
        android:type="radial"/>
</shape>
Run Code Online (Sandbox Code Playgroud)

  • 警告即使这是一个好的解决方案,也会崩溃(甚至在Android 5.0上重新启动整个手机!)在API &lt;21上,radiusradius不接受%值,您必须使用android:gradientRadius =“ 100%p” (2认同)