2016-05-05 6 views
2

SurfaceViewを拡張して、全画面水平スクロール可能な背景を作成しています。AndroidキャンバスDrawBitmapの品質が悪い

私の問題は、ビットマップの品質です。描画コールで使用される場合

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); 

画像がはっきりと表示されるかどうかは、タブレットのスクリーンショットではわかりません。良いものはsrcをdrawableとして持つImageViewです。

キャンバスにはこの水平方向のストライプ効果があります。その効果は非常に重要です。この効果は垂直方向でも同様です。グラデーションがわずかに変化しているときはいつでもそうです。あたかもキャンバスのビットマップの色がはるかに少ないかのように。

私は確かに解決策はありますが、何も見つかりませんでした。

Poor quality example

Real quality example

答えて

1

カラー量子化のように見えます。 SurfaceViewのデフォルトのカラーフォーマットは16ビットRGB_565です。 onCreate()上でこのようなもので、32ビットに変更します:

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

(。Some examples使用PixelFormat.TRANSLUCENT)を

+0

上のスポット!シルキースムース今、ありがとう。 – ctrlbox

関連する問題