3

Android UI の (非) 効率性についてアドバイスをお願いします。アプリの特定のレイアウトを構築するための最良の方法を決定しようとしていますが、最初のアイデアはパフォーマンスを大幅に低下させるリスクを冒す可能性があると思います。基本的に、私は 3 つの非常に類似した関連するアプリ コンポーネントを持っています。それらを構成するには、ユーザー入力が必要です。3 つのコンポーネントは、グローバル セット内で異なるパラメーターを共有します。この入力フォームをデバイスに表示するための、スムーズで滑らかな方法を決定したいと考えています。

私がやりたいことは、ユーザーが 3 つではなく 1 つのフォームを使用できるようにすることです。3 つのコンポーネントはすべて関連/類似しており、ユーザーが入力する必要がある構成パラメーターの一部を共有しています。

私の最初のアイデアは次のとおりです。

  1. XML を介して 3 つのインスタンスのいずれかの初期表示に必要な UI 要素の広範なレイアウトを構築します。残念ながら、行に編成されたパラメーターの数を考慮すると、この場合、合計で約 50 のビュー オブジェクトになります
  2. ユーザーが画面に入り、最初に画面上部のスピナー ウィジェットから 3 つの値のいずれかを選択する必要があることを理解できるように、アクティビティを作成します。
  3. ビットごとの比較演算子を使用して、選択した Spinner 値に関連するさまざまなコントロールを表示/非表示にするだけです。(Spinner の onItemSelectedListener() によってトリガーされます)
  4. パズルのピースが自分の選択を反映して追加または削除されていることを生徒が理解できるように、いくつかのマイナー/軽量アニメーションなどを作成します。

あるいは、2 番目の理論では、3 つの異なるアクティビティを使用し、3 つのアクティビティ間で状態を保存し、それらの間でパラメータを渡す必要があります。第三の選択肢?

単に 3 つの個別の形式に分割するのではなく、これを行う主な動機は、ユーザーが最初の選択を再考することを選択した場合に、最小限のフラストレーションで一貫した UI を体験できるようにすることです。上記を使用して、ユーザーがフォームの半分に記入し、Spinner から別のオプションを使用することを決定した場合、同じビュー オブジェクトを使用するため、ユーザーの情報は明らかに保持されます。

一般的なミッドレンジの Android デバイス (つまり、ほとんどのユーザーが所有しているハンドセット、Froyo 以降、特にジンジャーブレッドからのもの)。私は1つのテストデバイスにしかアクセスできず、それはHTC One Xハンドセットであるため、心配しています。これは、ほとんどの致命的なデバイスがより複雑なレイアウトをどのようにレンダリングできるかを把握するための非常に悪い選択であることは明らかです.

また、パフォーマンスを最適化するためのヒントに関するガイダンスをいただければ幸いです...コミュニティと Android の開発者リソースを精査して、一部のレイアウト オブジェクトをレンダリングする方が他のオブジェクトをレンダリングするよりも網羅的であることを理解しており、可能な場合は LinearLayout を選択する必要があります (RelativeLayout ではなく)例えば)。UI オプションのパフォーマンスを比較するための決定的なリソースはありますか? 時間と労力を割いて、自分で知識を習得したいと思います。

時間と労力を前もって感謝します。乾杯。

編集:必要に応じて、アクティビティが最初に読み込まれるときに、これらのビューのほとんどを画面に描画する必要がないことを言及する必要があると思います (とにかく初めて)...必要に応じて、最初に少数のビューのみを読み込むことができます。スピナー ウィジェット。デフォルトでは、オプション 1 の代わりに「オプションが選択されていません」をロードするようなものです。アクティビティがロードされたときにデバイスが実際に描画する必要があるのはほんの一握りのビュー オブジェクトだけなので、デバイスの動作が遅い場合でも、ユーザーへの影響は実際には小さいかもしれません。ある時点で、デバイスはおそらく一度に約 30 個のビュー オブジェクトをレンダリングして表示するだけで済みます。重大な問題は、「電話が大量の XML をロードするのに苦労している場合、ユーザーがハングアップしたり、遅延が発生したりしますか?」

4

2 に答える 2

2

質問に対する多大な努力に対して+1。私の個人的な提案は、2 番目の理論に固執することです。データをビューから分離し、入力した値を SharedPreferences やデータベースなどのどこかに保存し、3 つの異なるレイアウト (フォームごとに 1 つ) を用意します。アクティビティの作成時に、以前に保存された値の各共通フィールドを確認し、存在する場合はそのフィールドに入力します。最初のリストのようなことをしようとするのは、賢いかもしれませんが、理想的とは言えません。

于 2012-07-11T21:32:55.330 に答える
0

さまざまなデバイス画面のレイアウトを開発する方が理にかなっていると思います。これを行うことができ、異なるレイアウトを異なるフォルダーに配置できます。これについての素晴らしい記事があります。私は人々に選択する「選択肢」を与えません。常に答えを知っているとは限らないため、どのレイアウトを使用するかはスマートフォンに決定させるのが最善です。

記事は次のとおりです。

http://developer.android.com/guide/practices/screens_support.html

于 2012-07-11T21:31:26.393 に答える