安卓中的椭圆形渐变

5
您可以使用以下代码生成圆形渐变:

您可以使用以下代码生成圆形渐变:

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

那么如何在Android中绘制椭圆渐变?即X和Y的半径不同?

1个回答

0

您应该能够将渐变图形包装在一个缩放可绘制对象中,使其具有不同的X和Y半径效果:

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/gradientShape"
    android:scaleGravity="center_vertical|center_horizontal"
    android:scaleHeight="80%"
    android:scaleWidth="100%" />

谢谢您的回答,但是正如您所知,由于级别问题,比例可绘制对象不可见。将其可绘制级别设置为1以使其可见在Android ICS上出现了某些问题。您有任何解决此问题的方法吗? - Buddy
@EnesBattal-我不明白你的留言。绘制级别与LevelListDrawable有关,而不是ScaleDrawable。如果您提到API级别,那么自API级别1起,ScaleDrawable就得到支持。 - Ted Hopp
据我所知,ScaleDrawable存在一个问题,如果它没有级别,它就不会显示,请参见https://dev59.com/0W035IYBdhLWcg3wSOCr。 - Buddy
@EnesBattal - 嗯,我不能说我遇到过这个问题。从你引用的线程中看来,问题似乎出在ScaleDrawable包装的可绘制层级上,而不是ScaleDrawable本身的层级。我想你可以将你的渐变色包装在一个层级列表可绘制对象中,然后再将其包装在一个比例可绘制对象中。然后,你可以使用ScaleDrawablegetDrawable()方法将层级列表可绘制对象的层级设置为1。 - Ted Hopp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接