19

scrolling cacheAndroidでの意味を説明できる人はいますか。私はこの言葉に出くわしましたが、アンドロイドの公式ウェブサイトでもウェブでも説明を見つけることができませんでした.

私が見つけたのは、どうすればオン/オフできるかということだけでした。

ありがとう。

4

4 に答える 4

27

スクロール キャッシュは基本的に描画キャッシュです。

Android では、View にその描画を描画キャッシュ (基本的にはビットマップ) と呼ばれるキャッシュに格納するように要求できます。デフォルトでは、メモリを消費するため、描画キャッシュは無効になっていますが、setDrawingCacheEnabled またはハードウェア レイヤー (setLayerType) を介して明示的に作成するようビューに要求できます。

では、なぜ便利なのですか?描画キャッシュを使用すると、フレームごとにビューを再描画するよりもアニメーションがスムーズになるためです。

このタイプのアニメーションはハードウェア アクセラレーションも可能です。これは、レンダリング システムがこのビットマップをテクスチャとして GPU にアップロードし (ハードウェア レイヤーを使用している場合)、高速なマトリックス操作 (アルファの変更、変換、回転など) を実行できるためです。すべてのフレームで再描画する (onDraw が呼び出される) 場合のアニメーションと比較してください。

リストビューの場合、フリングでスクロールすると、本質的にリストのビューをアニメーション化します (上下に移動します)。リストビューは、表示されている子 (および端の近くに表示されている可能性のあるいくつかの子) の描画キャッシュを使用して、それらを非常に迅速にアニメーション化します。

描画キャッシュを使用するデメリットはありますか? はい、メモリを消費するため、ビューではデフォルトでオフになっています。ListView の場合、ListView に触れて少し移動するとすぐにキャッシュが自動的に作成されます (タップとスクロールを区別するため)。つまり、ListView は、スクロール/フリングしようとしていると判断するとすぐに、スクロール/フリング モーションをアニメートするためのスクロール キャッシュを作成します。

于 2013-07-07T21:02:44.497 に答える
0

次のことを話していると思います。

10 個のアイテムしか表示されない 50 個のアイテムのリストを想像してみてください。Android は、リスト アイテム内の前後の (推定) 5 アイテムをキャッシュします。

リストのスクロールを開始すると、ArrayAdapter の関数 getView() を使用して、非表示のアイテム ビューが再利用されます。

したがって、スクロール キャッシュは、表示されているアイテムの上/下にある次のアイテムと前のアイテムです。

于 2013-03-22T12:22:47.333 に答える