使用矢量可绘制
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="90"
android:type="linear"
android:startColor="#00ffffff"
android:centerColor="#44ffffff"
android:endColor="#00ffffff"/>
</shape>
</item>
</layer-list>
和
val bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888)
val bitmapCanvas = Canvas(bitmap)
drawable.setBounds(0, 0, 100, 100)
drawable.draw(bitmapCanvas)
val p1 = Paint()
canvas.drawBitmap(bitmap, 0, 0, p)
在“我的活动”中
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
Window window = getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_DITHER, WindowManager.LayoutParams.FLAG_DITHER);
window.setFormat(PixelFormat.RGBA_8888);
window.setFormat(PixelFormat.TRANSLUCENT);
}
渐变看起来仍然很带条纹,几乎就像颜色范围很低一样,就像它跳过了渐变中的颜色步骤一样。我也尝试过直接在画布上绘制可绘制对象(不使用位图作为媒介),但仍然无法正常工作。我想提到的一个重要细节是,画布不是直接位于活动中,而是位于该活动中的片段视图中的自定义视图中。我之所以提及这一点,是因为在覆盖的内部调用了这些方法。