私が持っているカスタムビューでは、2048pxよりも広いソースBitmapでCanvas.drawBitmapを使用しています。これはもちろん、ハードウェアアクセラレーションが有効になっているときに、LogCatが「W/OpenGLRenderer(4968):drawBitmapが呼び出されるたびにビットマップが大きすぎてテクスチャにアップロードできない」というメッセージを出すことで問題を引き起こします。私のビューの1つをソフトウェアでレンダリングさせることができないのはなぜですか?
これを回避するために、私はsetLayerType(View.LAYER_TYPE_SOFTWARE, null)
を私のビューで呼びそそうとしました。唯一の問題は、それが助けにはならないということです。私のアプリケーションを実行しようとすると、LogCatは警告を出し、何も描画されません。
私はこのように理解できません。 This article on the Android site明記:
を次のコードで、実行時に個々のビューのためのハードウェアアクセラレーションを無効にすることができます
myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
私が間違ってやっている何かがありますか? AndroidがsetLayerType呼び出しを尊重しない理由は何ですか?
[場合には、それは重要:私は、Android 3.2実行しているサムスンのギャラクシータブ10.1の上に私のテストを行っています]
canvas.isHardwareAccelerated()を確認してください。それはビューとは異なる場合があります – imort