私のアプリケーションでは、drawBitmap()を使用して、ズームアウトしているときに低解像度のビットマップを表示します。いくつかのデバイス(Galaxy Tab、Kindle Fire、Moto Xoom、Nexus 7)でテストしました。Nexus 7を除いて、すべて同じレンダリング品質が得られます。添付のスクリーンショットで違いを確認できます。外側の領域は、drawBitmapを使用している領域で、次のようになります。
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(ビットマップビットマップ、Rect src、RectF dst、ペイントペイント)を使用しようとすると、同じ結果が得られます。
この問題/違いは、ハードウェアアクセラレーションに関連している可能性があると思います。(マニフェストファイルで)オフにすると、すべてのデバイスで同じ結果が得られます。オンにすると、Nexusを除くすべてのレンダリングが改善されます。Nexusはさらに「ピクセル化された」ビットマップを表示します。一部のルーチンがHAでサポートされていないことを読みましたが、それでも、この場合に何が起こっているのか理解できません。Romain Guyのブログの最近の投稿で、彼は次のようにコメントしています。
アルファビットマップは、「単純な」バージョンのdrawBitmap()を呼び出す場合にのみシェーダーで機能することに注意してください。マトリックスまたはソースと宛先の長方形を使用するバリアントは、現時点ではハードウェアアクセラレーションではサポートされていません。
誰かがこれに光を当てることができますか?
Nexus 7:Nexus7のスクリーンショット
Xoom(またはGalaxy Tab、Kindle Fire):Xoomのスクリーンショット