これが状況です-私のルートレイアウトはscrollviewです-複数の描画操作を持つカスタムビューがレイアウトに埋め込まれています私の問題は、レイアウトがスクロールされた場合、customview.ondraw()が複数回呼び出されることです。ondraw()には多くの操作があるため、パフォーマンスが低下しています。
これからの最良の戦略は何ですか?
View.setDrawingCacheEnabled()のドキュメントを参照してください。onDraw実装でgetDrawingCache()を呼び出し、getDrawingCache()がnull以外の値を返す場合は、返されたビットマップを描画する必要があることに注意してください。ScrollViewがsetDrawingCacheEnabledの呼び出しを自動的に処理するかどうかはわかりません。あなたはそれを試して見つけなければならないでしょう。そうだと思います。ただし、onDrawルーチンでgetDrawingCache()を呼び出す必要があります。
これにより、ハードウェア以外のアクセラレーションのケースが処理されます。
ハードウェアアクセラレーションビューについては、setLayerTypeのドキュメントを参照してください。ハードウェアアクセラレーションによるビューのキャッシュによって実際にパフォーマンスが向上することは当然のことではないため、慎重に行ってください。
Androidのメソッドの名前を忘れましたが、分割ペインを備えたSwingデモがあります。
分割パネルが描画しているときにtrueに設定されたフラグ(継続的に更新)がある場合は、スピットコンポーネントを移動します。同じ効果がスクロールにもあります。ドローは、スクロールが終了したときにのみ継続して使用できます。iOSでも同じことが言えます。
これらのメソッドを見つけて、必要に応じてカスタムビューの描画を埋め込む必要があります。