私が現在取り組んでいるアプリケーションでは、複数の画像に対してImageSwitcher
のようなものを作成しました(ページングを有効にしたiPhoneのUIScrollView
を想像してください)。AndroidでImageViews間のページングを最適化しますか?
最初に私はImageViews
をハードコードし、作成/インフレーションにそれらの描画可能なリソースをロードしましたが、いくつかの微調整(そして私が改善であると思ったもの)の後、私は必要なビューを3に減らしました。そのうちの2はImageViews
現在のページを表示し、現在のページと新しいページとの間でアニメーション化する。この変更に伴い
ImageViews
に新しいイメージを動的にロードするための
setImageResource
/
setImageDrawable
を使用し始めました。
私の失望は、ページをすばやくすばやくスライドさせるときの遅れを感じる程度に、パフォーマンスが悪化しました。 TraceView
のクイックルックでは、アプリケーションを使用している間に、次の重い方法の5倍以上の合計時間の17.4%が、私の動的描画可能リソースの設定によって呼び出されたBitmapFactory.nativeDecodeAsset
から消費されたことが明らかになりました。
私はこれを回避する方法を考えており、可能な限り最良の方法でやりたいので、どんな提案も歓迎します。
ImageSwitcherを再発明したようです。 ImageSwitcherはそれだけです:現在の画像と次の画像を表示するために使用される2つのImageViews。同じように聞こえるかもしれないものとは異なり、最初は見えたように、2つの画像の間で前後に切り替えるために使用されるだけではありません。私はしばしば画像の全体をアニメーション化する(そして他のスイッチャーを使ってタイトルを出し入れする)ようなことに使う。私はこれがあなたのパフォーマンス上の問題を解決することは知らないが、少なくともそれはいくつかの事柄を除外することができます。 – lilbyrdie
提案していただきありがとうございます。 ImageSwitcherはいくつかの理由から再開発しなければなりませんでした。最初は複数のImageViewを含むので、現在のビューとヘルパービューに縮小しました。別のTextViewコンポーネントを制御したいからです。 ImageViewsから簡単にアクセスできます - 私は階層を平坦化し、自分が望むものだけを行うカスタムスイッチャービューを使用すると思っていました。 最後に、AllocationTrackerとTraceViewを再生した後、問題はカスタムViewGroupにあるとは思わない。 –