希望这是您心中所想的内容。我正在使用layer-list
。我已经使用"@color/colorAccent"
作为两端的颜色。将它更改为"#0FFF"
可以获得透明颜色,这是问题所要求的。
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="50dp">
<shape android:shape="rectangle">
<gradient
android:startColor="@color/colorPrimary"
android:endColor="@color/colorAccent"
android:centerColor="@color/colorPrimary"
android:centerX="10%"/>
<size
android:height="100dp"
android:width="50dp"/>
</shape>
</item>
<item
android:right="50dp">
<shape android:shape="rectangle">
<gradient
android:startColor="@color/colorAccent"
android:endColor="@color/colorPrimary"
android:centerColor="@color/colorPrimary"
android:centerX="80%"/>
<size
android:height="100dp"
android:width="50dp"/>
</shape>
</item>
</layer-list>
通过调整 android:centerX
属性,直到达到所需效果。
输出结果
当centerX属性为10%和80%时,预览的可绘制对象如下:
![enter image description here](https://istack.dev59.com/TNM6c.webp)
现在 centerX 分别设置为60%和40%:
![enter image description here](https://istack.dev59.com/Gs6O1.webp)
编辑
如果布局中使用 match_parent
作为 layout_width
参数,可以将渐变分成两个可绘制对象,并将其设置为两个不同的 ImageViews
或 FrameLayouts
的背景。
left_gradient.xml
<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#0FFF"
android:centerColor="#000"
android:centerX="50%"
android:endColor="#000"/>
</shape>
right_gradient.xml
<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#000"
android:centerColor="#000"
android:centerX="50%"
android:endColor="#0FFF"/>
</shape>
在你的布局xml文件中
<LinearLayout
android:layout_width="match_parent"
android:layout_height="15dp"
android:baselineAligned="false">
<FrameLayout
android:layout_width="0dp"
android:background="@drawable/left_gradient"
android:layout_height="match_parent"
android:layout_weight="1"/>
<FrameLayout
android:layout_width="0dp"
android:background="@drawable/right_gradient"
android:layout_height="match_parent"
android:layout_weight="1"/>
</LinearLayout>
与先前的情况类似,调整两个渐变文件中 android:centerX
的值以获得所需的结果。
ShapeDrawable.ShaderFactory
并从resize(int width, int height)
方法返回LinearGradient
。 - pskink