androidページbackgroundを画像に設定すると、ページがフレームダウンする問題

1529 ワード

最近引き継いだandroidプロジェクトの中には、viewpager+3 fragmentのページがあり、左右にスライドしてページを切り替えるレイアウトが一般的です.引き継ぐときに、このページにはカートン現象があり、性能を最適化する必要があると教えてくれました.最初はfragmentの中で多くの時間を費やした操作の原因だと思っていましたが、それから一日もやってしまったので、穴を踏んだので、ここに記録しておきます.
ページスライドカートンは、画像のロード、ファイルの読み取りなど、ページスライドイベントのコールバック方法に時間がかかる操作があるかどうかを一般的に考えますが、チェックしても似たようなコードロジックはありません.その後、さまざまなデバッグが行われ、主に2つの理由が見つかりました.
背景画像のリソース画像ファイルはmipmap-xxxxフォルダの下に置くか、drawable-xxxxフォルダの下に置くか、drawableフォルダの下に直接置くことはできません.
これまで様々なコードロジックがチェックされていなかった後、背景画像の設定の原因を考え始めました.この3つのfragmentはすべて全画面の画像背景を設定しているからです.設定された背景画像はすべて1920 x 1080画素のjpgフォーマット画像で、サイズは208 KBです.私は背景画像をすべて削除して純色の背景に変えて、ページはすぐにとても流暢になって、少しもフレームを落としていません.しかし、背景図は必ず取り替えることができないので、私は画像の大きさの上で文章を作って、美工mmに体積の小さい画像に変えさせましたが、後で15 KBの大きさの背景図に変えても、ページカードはカードです.その後、fragmentの背景をすべて透明に設定しても、viewpagerの背景を1枚の画像背景に設定したり、fragmentとviewpagerの背景を透明に設定したり、activityの背景を画像背景に設定したりしても、ページがスクロールしている間にフレームが落ちてしまうことがわかりました.だからこれは背景画像の大きさによる問題ではないに違いない.その後、stackoverflowでdrawableフォルダ(接尾辞なし)の下に直接画像リソースファイルを置くとページがフレームダウンするという説が見つかりました.私は自分のプロジェクトの中で探してみると、やはり背景の画像はdrawableフォルダの下に直接置いてあります.私はdrawableの下の画像リソースをすべてmipmapフォルダの下にコピーして、走ってみると、うん、カートンはずいぶん少なくなって、やっと見ることができましたが、やはり少しフレームが落ちているような気がします.
manifestsインベントリファイルでアプリケーションのプロパティhardwareAcceleratedをオンに設定するには
前の修正でやっとページが使えるようになりましたが、少しフレームダウンしたような気がします.ハードウェアアクセラレータを思い浮かべましたが、一般的にこのプロパティはデフォルトでオンになっています.リストファイルをチェックすると、やはり次のように書かれています.
android:hardwareAccelerated="false"

本当にお父さんですね...
以上の2つの問題を修正すると、ページが滑らかになります.主に第一の原因で、出会ったことがないのは本当に一時的に思いもよらなかった.