まばたき効果のあるアプリを作ろうとしていますが、
たとえば、2 つのレイアウトを交互に切り替えます。たとえば、一方が赤で他方が青です。
(どのレイアウトにも異なる画像があります)
2 つのアクティビティまたは 2 つのフラグメントをすばやく切り替えようとすると、アプリケーションがクラッシュします。
より良い方法でアクティビティのレイアウトをプログラムで変更するにはどうすればよいですか?
まばたき効果のあるアプリを作ろうとしていますが、
たとえば、2 つのレイアウトを交互に切り替えます。たとえば、一方が赤で他方が青です。
(どのレイアウトにも異なる画像があります)
2 つのアクティビティまたは 2 つのフラグメントをすばやく切り替えようとすると、アプリケーションがクラッシュします。
より良い方法でアクティビティのレイアウトをプログラムで変更するにはどうすればよいですか?
まばたきに対する私の個人的な留保はさておき、ルートレイアウトの背景色だけをタイマーで変更できます。
アクティビティによって表示されている背景色またはレイアウトを変更するだけです。
効率について考えてみましょう:
レイアウトを変更すると、android は XML とそのウィジェットを拡張する必要があり、クエリとレイアウト (つまり、findViewById) によってこれらすべてのハンドルを取得する必要があります。これの最初の問題は、単に動的にレンダリングするのではなく、Web ページを更新して要素の色を変更することと考えることができます。これの 2 番目の部分は、DOM ハンドルをキャッシュせず、JavaScript で提供してアクションを実行するたびに DOM を再クエリする必要があると考えることができます。どちらも悪い習慣です。
または、現在のレイアウトの背景を X 秒、数分、または何をしようとしても変更できます。これを行うには多くの方法があります-AlarmManager、またはタイムアウトでスレッドを開始する-または、より良い方法は、ランナブルをメインスレッドにポストして背景色を変更する新しいスレッドを開始し、X の補助スレッドをスリープさせることです秒ループを繰り返します。
2 番目のアイデアは、良い方法であるだけでなく、SDK フレームワークを正しく使用しています。
幸運を!