我试图得到一个带有渐变笔触的白色椭圆形,有点像彩色阴影。
我需要动态更改颜色,所以我尝试将ColorFilter
添加到drawable中。
Drawable pulseDrawable = getResources().getDrawable(R.drawable.touch_circle);
pulseDrawable.setColorFilter(App.userColor, PorterDuff.Mode.LIGHTEN);
setBackground(pulseDrawable);
这是我在预览工具栏中获得的内容
但是当我运行应用程序时,我得到了这个,(使用油漆绘制得很差):
圆圈很好,但不是添加发光/阴影的颜色。它用蓝色填充了视图的所有其余部分。
我尝试使用layertype软件,但是没有用。
那么为什么预览渲染很好,而运行应用程序却没有?有没有办法解决这个问题?我也开放其他解决方案,比如在没有位图的情况下以编程方式绘制形状
答案 0 :(得分:1)
我希望这就是你的意图。我创造了一个drawable。您可以使用这些值,直到找到适合您的方式。
shadow.xml
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:shape="oval">
<size
android:width="100dp"
android:height="100dp"/>
<gradient
android:startColor="#eee"
android:endColor="#0FFF"
android:gradientRadius="45%"
android:type="radial"/>
</shape>
</item>
<item
android:left="22dp"
android:bottom="22dp"
android:top="22dp"
android:right="22dp">
<shape
android:shape="oval">
<solid android:color="#FFF"/>
</shape>
</item>
</layer-list>
在运行时更改颜色的代码
imgView = (ImageView) findViewById(R.id.imgView);
Drawable bg = ContextCompat.getDrawable(getApplicationContext(), R.drawable.shadow);
int color = ContextCompat.getColor(getApplicationContext(), R.color.colorAccent);
bg.setColorFilter(color, PorterDuff.Mode.SRC_IN);
imgView.setBackground(bg);
这是imageView的代码
<ImageView
android:id="@+id/imgView"
android:layout_gravity="center"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/shadow"/>