17

Android 開発は初めてで、独自の UI の作成を開始しました。次のように動的に作成できることがわかります(Dynamic Layouts):

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ScrollView sv = new ScrollView(this);
    LinearLayout ll = new LinearLayout(this);
    ll.setOrientation(LinearLayout.VERTICAL);
    sv.addView(ll);
    TextView tv = new TextView(this);
    tv.setText("Name");
    ll.addView(tv);
    EditText et = new EditText(this);
    ll.addView(et);
    Button b = new Button(this);
    b.setText("Ok");
    ll.addView(b);
}

しかし、netbeans にはResources->layout->main.xmlファイルがあることもわかります。したがって、UI の XML レイアウトを作成できます ( Declaring XML layout )。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Hello World, AndroidTest"
    />
</LinearLayout>

だから私の質問は、私はどれを使うべきですか? Android 開発における動的レイアウトと XML レイアウトの推奨事項と長所/短所は何ですか?

4

7 に答える 7

26

レイアウトXMLリソースファイルを使用します。

まず、リソースセット(たとえば、res/layout-land/に加えてres/layout/)を使用すると、さまざまな状況で使用される複数のUIを定義でき、システムは必要に応じて適切なUIを自動的に選択します。Javaでの同等のものは、1つの厄介なiforswitchステートメントのセットになります。

次に、これらのレイアウトリソースを正常に作成するのに役立つツールがあります。EclipseのドラッグアンドドロップGUI構築があなたのお茶ではない場合でも(たとえば、NetBeansを使用している場合)、Lintはレイアウトの欠陥を指摘するのに役立ちます。同等のJavaコード。

第三に、それはより簡潔になる傾向があるので、このようなものを手で入力している場合、XMLは入力が少なくなります。

第4に、ここにあるすべてのサンプルコードの約98%がレイアウトXMLファイルを使用し、StackOverflow(およびその他のサポートリソース)でここにあるすべてのUI回答の約98%がレイアウトXMLファイルを使用すると想定しています。XMLを自由に回避できますが(おそらく、幼い頃に山かっこなどで攻撃された可能性があります)、ほとんどのAndroid開発者が行うことと比較して、現在と戦って上流に泳ぎます。

于 2012-08-14T20:59:35.493 に答える
3

プロジェクトのほとんどの部分で xml レイアウトを使用することをお勧めします。レイアウトは、次のようなさまざまなフォルダーに配置できます。

layout-land -> ランドスケープ用

レイアウト ポート -> 縦向き

layout-v15 -> Android バージョンの場合 >= 15

layout-sw600dp -> 幅のある画面用

これらのリソース分類子を使用すると、多くの余分なコーディングを行うことなく、さまざまな Android デバイスをサポートするさまざまなレイアウトをすばやく作成できます。

私の意見では、これが xml リソースを使用することとすべてのレイアウトを動的に作成することの最大の利点です。詳細については、リソースに関するこのリンクを参照してください

于 2012-08-14T21:00:46.353 に答える
2

XML に基づくレイアウトは、以下を使用する必要があるため、キャストに依存します。

 Button myButton = (Button) findViewById(R.id.my_button);

そのため、1 回のキャストと時間のかかる XML 検索が必要です。UI の動的作成を使用すると、UI の管理がはるかに難しくなります。すべてを整理する必要がありますが、それほどキャストする必要はありません。

私は 3 番目のソリューション - RoboGuiceを好み ます。依存性注入パターンを使用し、キャストを気にせず、アプリの作成が高速です。また、より柔軟です。通常のテキスト フィールドがあるとします。次に、それをテキストエリアに変更します。RoboGuice では、2 つの変更のみが必要です (使用法の変更を除く)。また、Context を使用すると高速になります (Context は非常にメモリを消費するオブジェクトであり、それへの参照を保存することはコーディングが不適切であることを示しています)。

したがって、私のアドバイスは、UI の管理が簡単な XML を使用することです。RoboGuiceを使用してすばやくコーディングします。

于 2012-08-14T21:11:52.143 に答える
1

まあ、私は xml で mu UI を宣言しています (99% の確率で)。その方が作業しやすいからです。

UI とコード ロジックを分離することをお勧めします。UI を記述するには、XML の方が簡単です (この古いデザイナーの使用を検討するか、Eclipse IDE とそのデザイナーに切り替えることを検討してください) 。

また、1 つの Android アプリに複数のデザイン (携帯電話とタブレット用) を含めることができ、それを Java でハンドコーディングするのは大変です。

単純に、XML を使用する

于 2012-08-14T21:02:03.290 に答える
1

私はほとんどの場合、XML を好みます。XML を使用するとコンテンツをコードから分離でき、特にプロジェクトが大きくなり、少し前に書いたものを忘れてしまうと、編集がよりクリーンになる傾向があるからです。XML とスタイルを使用すると、アプリ全体で一貫したルック アンド フィールを得ることができます。また、レイアウト システムが面倒な作業を処理できるため、アクティビティのコンテキストを参照するビューが作成されることはありません。(これは、回転してアクティビティが再作成されたときに悪いことです)。全体的には、より迅速なオプションになる傾向があり、XML で実行できる場合は、私が好むよりも. ほとんどの Android アーキテクチャ/教科書もこの設定に従っているようです。(Android Dev Docs、CommonsWare の Mark Murphy を参照)

動的には、より高度な方法でいくつかのものをカスタマイズでき、いくつかのレイアウトの問題をかなり簡単に修正できるという利点があります。それ以外にもいくつかの利点がありますが、私はすべてを最初に XML で行うことを好み、それができない場合や難しい場合はコードで行います。コードよりもはるかに簡単に XML で実行できることもあります。

于 2012-08-14T21:02:16.880 に答える
1

それは完全にあなた自身の選択です。ほとんどの Android 開発者は、アプリのレイアウトをコーディングするために XML を使用しています。これは、このために特別に設計されたものだからです。しかし、私は個人的にゲーム開発のバックグラウンドを持っており、Android が提供する UI ウィジェットを実際には必要としないので、UI ウィジェットを使用するときはいつでも Java でコーディングします。

これが役立つことを願っています。

于 2012-08-14T21:04:47.727 に答える