Tot*_*Zam 5 xml android gradient android-drawable
我创建了一个Android渐变可绘制对象,其中顶部和底部为黑色,中心为透明:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<gradient
android:startColor="@android:color/black"
android:centerColor="@android:color/transparent"
android:endColor="@android:color/black"
android:angle="90"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
渲染的渐变如下所示:
如您所见,黑色部分扩散到了屏幕的大部分区域。我希望黑色仅在顶部和底部的一小部分显示。有什么办法可以使透明中心变大,或者使顶部和底部的黑色条纹变小?
我尝试使用链接GradientDrawable文档中提到的其他一些XML属性,但是似乎它们都不起作用。
对于纯 XML 解决方案,您可以layer-list使用两个单独的gradient对象创建一个。
以下代码创建两个重叠的gradient对象并使用centerYwithcenterColor来偏移黑色部分。在这里,centerY属性设置为0.9和0.1,因此黑色被限制在视图高度的顶部和底部 10%。
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient
android:angle="90"
android:centerColor="@android:color/transparent"
android:centerY="0.9"
android:endColor="@android:color/black"
android:startColor="@android:color/transparent" />
</shape>
</item>
<item>
<shape>
<gradient
android:angle="90"
android:centerColor="@android:color/transparent"
android:centerY="0.1"
android:endColor="@android:color/transparent"
android:startColor="@android:color/black" />
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
对于 API 级别 23 或更高级别,以下解决方案也适用,使用android:height. 即使您不知道视图的总高度,只要您知道希望渐变有多大,这个解决方案就可以工作。
此代码创建了两个单独的渐变,每个渐变的高度为60sp,然后用于android:gravity将渐变浮动到视图的顶部和底部。
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:height="60sp"
android:gravity="top">
<shape android:shape="rectangle">
<gradient
android:angle="90"
android:endColor="@android:color/black"
android:startColor="@android:color/transparent" />
</shape>
</item>
<item
android:height="65sp"
android:gravity="bottom">
<shape android:shape="rectangle">
<gradient
android:angle="90"
android:endColor="@android:color/transparent"
android:startColor="@android:color/black" />
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
感谢您@Luksprog的代码帮助,@thenaoh为理念的开始。
上述解决方案有效,而且它们是纯 XML 很好。如果您的渐变显示为条纹,您可能需要尝试编程解决方案,如@lelloman 的答案中所示,以创建更平滑的渐变。
| 归档时间: |
|
| 查看次数: |
2723 次 |
| 最近记录: |