Add*_*dev 16 java android gradient
我正在创建一个径向渐变,如:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient
android:startColor="#7faacaFF"
android:endColor="#cfe1edFF"
android:gradientRadius="326"
android:type="radial"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
但是在gradientRadius字段中使用sp和dip等值会返回错误.有没有办法为mdpi指定半径和比例,并在其余的屏幕密度中自动缩放,或者是否需要创建多个可绘制文件?
Gre*_*lli 22
那么如果你这样做会怎么样:
RES /抽拉/ foo.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#7faacaFF"
android:endColor="#cfe1edFF"
android:gradientRadius="@dimen/radius"
android:type="radial"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
RES /值-MDPI/dimens.xml
<resources ...>
...
<item name="radius" format="float" type="dimen">326</item>
....
</resources>
Run Code Online (Sandbox Code Playgroud)
RES /值-HDPI/dimens.xml
<resources ...>
...
<item name="radius" format="float" type="dimen">200.34</item>
....
</resources>
Run Code Online (Sandbox Code Playgroud)
你怎么看?
老问题,但这个答案在谷歌中排名很高,我认为另一种方法更具可扩展性.不必为每个密度提供维度,而是从XML创建与密度无关的维度:
<dimen name="gradient_radius">25dp</dimen>
Run Code Online (Sandbox Code Playgroud)
由于我们无法将此直接应用于径向渐变XML drawable,因此我们必须从代码中应用:
((GradientDrawable) someView.getBackground())
.setGradientRadius(getResources().getDimension(
R.dimen.yellowbadge_largeradius));
Run Code Online (Sandbox Code Playgroud)
这将覆盖该android:gradientRadius字段,因此您可以将其保留为0.但您仍然无法使用(基于屏幕或其他)%维度.我将它应用于我的视图背景(已经设置了渐变可绘制的!),但它当然也适用于ImageView的src元素.
| 归档时间: |
|
| 查看次数: |
4722 次 |
| 最近记录: |