※この記事は初心者が書いています。参考程度に読んでください。
Viewが常にアニメーションするようなゲームアプリを作っています。ConstraintLayoutを使っているのですが、addView時にViewのアニメーションがカツつく(重くなる)現象に遭遇しました。
addView時にアニメーションがカツつく原因はConstraintLayoutの再描画
ネットで調べても有益な情報が見つからなかったのですが、自力で原因を突き止めました。addView時にアニメーションがカツつく原因は、ConstraintLayoutの再描画でした。新しいViewがConstraintLayoutに追加されることで、全体のレイアウトが再描画されるために、アニメーションがカクついているようでした。
改善方法: ConstraintLayoutをFrameLayoutで囲み、FrameLayoutにViewを追加する
ConstraintLayoutに影響を与えないように、Viewを追加すればこの現象は改善します。私は、ConstraintLayoutをFrameLayoutで囲み、FrameLayoutにViewを追加することで解決しました。
<?xml version="1.0" encoding="utf-8"?> <FrameLayout ... > <androidx.constraintlayout.widget.ConstraintLayout ... > </androidx.constraintlayout.widget.ConstraintLayout> </FrameLayout>
おわりに
この問題を解決するのに丸1日かかりました。何とか乗り越えられてほっとしています。寝ます。