10

私はかなり複雑なAndroidアプリケーションを持っています。すでに可能な限りフラット化されたビュー階層ですが、アプリケーションにはまだ遅れがあります。たとえば、高さをで設定することで折りたたんだり展開したりするエントリを含むメニューがありますValueAnimator。通常、アニメーションは最初は少し遅れて実行され、この最初のパスの後はスムーズに実行されます。

Menu-Itemで「requestLayout()」を呼び出すと、Androidは階層全体でレイアウトパスと複数のメジャーパスを実行しているように見えることに気付きました。

  • Menu-Item(View)は高さを変更しますが、Menu(View)自体は変更しないことを知っているので、これをアプリケーションに伝える方法はありますか?
  • どういうわけか、最初のタッチ入力ではなく、アプリケーションの起動後に発生するように、自分自身に遅れをとっているように見えるこの最初のパスを実行できますか?

これが私がやっているアニメーションのスケッチです:

ここに画像の説明を入力してください

4

2 に答える 2

0

あなたの質問は私のように見えます:すべてのツリーではなく、再レイアウトの子のみ

まず、ビューの複雑なビュー階層を避けることができます。可能であれば、別のビューに依存しないビューでビューを分解します。

アニメーションを実行する場合、レイアウト要求は避けてください。レイアウト リクエストが保留中の場合は、アニメーションを遅らせて開始します。

可能であれば、アニメーションにハードウェア レイヤーを使用します (Android ではデフォルトで で使用されている可能性がありますValueAnimator) 。

于 2013-03-14T09:31:40.380 に答える