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

我想要像下面的图像

在这里输入图像说明

我试图使用可绘制的形状

<?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> 

Solutions Collecting From Web of "如何获得android渐变中心灯光效果?"

在可绘制文件夹中创build一个新的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> 

在你的布局背景中使用这个XML

 android:background="@drawable/GreyRadial" 

该效果可以使用多个矩形形状在层列表中近似。 使用中心背景色的实心矩形。 然后使用开始和结束颜色相同的两个渐变。 使中心颜色也一样,除了将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> 

再一次解决scheme:

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

这是我解决问题的方法。

 <shape android:shape="rectangle"> <gradient android:endColor="@color/your_dark_color" android:startColor="@color/your_light_color" android:type="radial" android:gradientRadius="700"/> 

通过更改android:gradientRadius的值,我可以得到确切的结果。

如果您需要的椭圆的纵横比是固定的,那么您可以使用渐变绘制作为背景,并使用scaleX或scaleY将其拉伸成椭圆形。

drawable myradial.xml:

  <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <!--Radial gradient centered at middle of top with glow color--> <gradient android:startColor="FF336699" android:endColor="00000000" android:centerX="50%" android:centerY="50%" android:gradientRadius="50%" android:type="radial"/> </shape> 

查看使用它作为背景

  <View android:layout_width="200dp" android:layout_height="100dp" android:background="@drawable/myradial" android:scaleX="0.5" /> 

如果纵横比不固定,在运行时仍可能在代码中设置scaleX。

这在任何情况下都不适用于所有人。 它可以使棘手的布局。 一个很好的事情是它是一个单一的渲染通行证,相比之下,非常优雅的解决scheme与2个线性渐变贴在一个坚实的3通过。 它也可以用来伸展任何渐变,例如创build一个22.5度angular的线性渐变。