私のアプリケーションでは、drawBitmap()を使用してズームアウトしながら低解像度のビットマップを表示します。私はいくつかのデバイス(Galaxy Tab、Kindle Fire、Moto Xoom、Nexus 7)でテストしました。 Nexus 7以外では、同じレンダリング品質が得られます。添付されたスクリーンショットでその違いを見ることができます。私は私が得るマトリックスなく、他のバリアントdrawBitmap(ビットマップビットマップ、RectをSRC、RectF dstは、ペイント塗料)を使用してみた場合描画出力が異なるdrawBitmap(Nexus 7と他のデバイス)
mSrcRectF.set(src_x1, src_y1, src_x2, src_y2);
mDesRectF.set(view_x1, view_y1, view_x2, view_y2);
mMatrix.setRectToRect(mSrcRectF, mDesRectF, Matrix.ScaleToFit.CENTER);
canvas.drawBitmap(bmp, mMatrix, mPagePaint);
:外側領域は、私はdrawBitmap、このようなものを使用しているものです同じ結果。
この問題は、ハードウェアアクセラレーションと関連している可能性があります。それを(マニフェストファイルで)無効にすると、すべてのデバイスで同じ結果が得られます。これをオンにすると、Nexusを除くすべてのレンダリングが改善されます.Nexusでは、さらに「ピクセル化された」ビットマップが表示されます。私はいくつかのルーチンがHAでサポートされていないことを読んだが、それでも、この場合何が起こっているのか理解できません。彼のブログのロマンガイの最近の記事では、
のようにコメントしています。アルファビットマップは、drawBitmap()の「シンプル」バージョンを呼び出すときにのみシェイダーで動作します。 Matrixやソースとデスティネーションの長方形を使用するバリアントは、現時点ではハードウェアアクセラレーションではサポートされていません。
誰かがこれについていくつか光を当てることができますか?
ネクサス7:Nexus 7 screen shot
Xoomの(またはギャラクシータブ、Kindleの火災):Xoom screen shot
ええ、私は彼らがそれをサポートしてくれるまで、それを保つ必要があると思います。 – Ander