2011-08-05 5 views
0

私は表示アルファベットのような簡単なタスクのために約26のボタンを作成する必要があります。私はレイアウト設計を使ってこれを行うことができます。どれが良いですか?実行時のボタンやアンドロイドのデザインタイム

実行時にこのボタンを作成すると、パフォーマンスが向上します(メモリ、スピード、apkサイズを考慮してください)。

重要な要件:

  • このレイアウトは、4人の異なる活動により使用されます。
  • 一度に26個のボタンをユーザーに表示する必要があります。
  • これらのボタンには、背景が含まれている可能性があります。 image

編集:このレイアウトは、他の4つのアクティビティのポップアップウィンドウと同じです。ユーザーはこのレイアウトのアルファベットを押すことができます。アルファベットが選択されるとすぐにレイアウトは閉じます

答えて

1

Yikes。 XMLは、ベストプラクティスの答えですが、のうちの何かは、いくつかの動的な実行時作成、または少なくとも2つの組み合わせのために悲鳴を上げる。あなたはどちらの方法でも処理時間やapkのサイズに大きな違いは見られないでしょう。

たとえば、文字ボタンごとに新しい属性(パディングなど)を変更または追加する場合にはどうなるかを検討します。これらのXML要素を手動で変更する必要がありますか、適切に検索/置換する巧妙な正規表現について考える必要がありますか?

私は、スタイルの組み合わせ、<include>ステートメント、および実行時の変更を包括的で保守可能な解決策にしたいと思います。最初にボタンを1つ作成して、すべてのボタンを見たいと思う方法を設定します。 "LetterButton"スタイルをstyle.xmlに抽出し、代わりにボタンのandroid:style="@style/LetterButton"属性を使用してください。これにより、1つのファイルでスタイルを変更し、すべての文字ボタンに影響を与えることができます。

次に、ボタン自体を<include>ファイルに抽出します。これを行うには、GUIバージョンのボタンを右クリックし、 "Include ... Extract"を選択します。次に<include>ボタンを手配してください。おそらく、<TableLayout>にする必要があります。それぞれ@+id/letter_button_0_25までの一意のIDを指定してください。これらすべてのボタンのtext属性は何でもかまいません。後でこれらのボタンを動的に設定します。

最後に、onCreateで{R.id.letter_button_0、...}の形式のint配列と{"A"、...}形式の文字列の配列を定義し、それらの上で、各ボタンに文字を入れるためにbutton = findbyId(int)、button.setText(String)を実行します。

これはもっとうまくいくかもしれませんが、スマートなUIを作成するのは面倒な作業なので、1つの場所(スタイルまたはインクルード)でコードを変更でき、すべてのボタンが更新します。

0

xmlファイルで作成し、必要に応じて表示/非表示にする必要があります。

2

あなたの資産にはすべて静的なものがあるので、すべてをxmlファイルに保存しても問題ありません。

まだ、あなたのプロジェクトのxml layout filesを解析する「概念」は、ビューを作成するプロセスにオーバーヘッドを導入すると主張することができます。

よく設計されたレイアウトで定義されています。

1

ベストプラクティスと理解しやすいコードのために、XMLレイアウトを強くお勧めします。また、大規模なビューのパフォーマンスが心配されている場合、相対レイアウトを使用すると、LinearLayoutsなどの他のタイプのレイアウトよりもレンダリングが高速になります。 http://developer.android.com/guide/topics/ui/declaring-layout.html

また、彼らは唯一の資源から一度にロードする必要があり、活動のメンバ変数としてボタンを保つパフォーマンスを向上させる:XMLを表示

がベストプラクティスです。助け

希望、 マルク・

0

あなたは&はそれに使用を行って&見えるのボタンの特性を有することができるダイナミックbackgrounds.Youためのダイナミックテキストコンテンツ&を持っていることで、静的な資産を有するレイアウトを作成することができます。