Android Canvas DrawBitmap 质量差

标签 android android-canvas surfaceview android-bitmap

我正在扩展 SurfaceView 以创建全屏水平滚动背景。

我的问题是位图的质量。在绘图调用中用作

canvas.drawBitmap(bitmap, 0, 0, paint);

它的质量比原来的差很多。我没有做任何缩放。

BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.image, options);

Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setFilterBitmap(true);

不确定图像是否显示清楚,它们是平板电脑的屏幕截图。好的一个是 ImageView,其 src 作为可绘制对象。

Canvas 上有这种水平条纹效果,在现实中非常重要。这种效果也是垂直的。每当渐变略有变化时。好像 Canvas 的位图颜色少得多..

我确定有解决方案,但我找不到。

Poor quality example

Real quality example

最佳答案

看起来像颜色量化。 SurfaceView 的默认颜色格式是 16 位 RGB_565。在 onCreate() 上将其更改为 32 位:

mSurfaceView.getHolder().setFormat(PixelFormat.RGBA_8888);

(Some examples 使用 PixelFormat.TRANSLUCENT。)

关于Android Canvas DrawBitmap 质量差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37040175/

相关文章:

android - 选择多个 kotlin 按钮并在 findViewById() 中使用变量 - android studio

java - 在 SomeView 类 onDrawBitmap 方法中使位图适合屏幕

android - 带有旋转机器人的自定义主菜单

android - 我们是否需要将具有不同 dpi 的所有图像添加到 Android 应用程序

android - FCM 主题是否适合更多用户?

java - 如何在android中为透明png图像添加描边/边框?

android - 在 Canvas 上绘图时出现内存不足问题

java - 使用新元素即时更新 Android SurfaceView

android - PreviewCallback onPreviewFrame 不改变数据

按下后退按钮时android黑屏