25

Android SDK では、開発者がレイアウトを xml ファイルに記述したり、Java コードで直接記述したりできます。私はそれについて読んだことがありますが、誰もが xml の方が維持しやすく、書きやすいと言っていますが、それらは静的です。それ以外の場合、Java レイアウトは動的ですが、パフォーマンスの問題について誰もコメントしていません。パフォーマンスについて私が見つけた唯一のことは、入れ子のレイアウトがパフォーマンスに悪影響を与えることでした。ネストされたレイアウトを記述する代わりに、カスタム レイアウトを作成することをお勧めします。ここまでは順調ですね ;)。

レイアウト設計はどうですか?xml または Java コード? 実行時またはコンパイル時に、xml ファイルはどのように Android で解析されますか? コンパイル時に解析されたとしても、実行時に使用する必要があります。では、RelativeLayout を xml で宣言するのと、onCreate メソッドで宣言するのとではどちらが速いでしょうか?

4

4 に答える 4

23

レイアウトは、アクティビティやアプリ ウィジェットの UI など、ユーザー インターフェイスの視覚的な構造を定義します。レイアウトは次の 2 つの方法で宣言できます。

  • XML で UI 要素を宣言します。Android は、ウィジェットやレイアウトなどの View クラスとサブクラスに対応する簡単な XML ボキャブラリを提供します。

  • 実行時にレイアウト要素をインスタンス化します。アプリケーションは、プログラムで View および ViewGroup オブジェクトを作成 (およびそれらのプロパティを操作) できます。

Android フレームワークでは、アプリケーションの UI を宣言および管理するために、これらのメソッドのいずれかまたは両方を柔軟に使用できます。たとえば、アプリケーションのデフォルト レイアウトを XML で宣言できます。これには、表示される画面要素とそのプロパティが含まれます。次に、実行時に XML で宣言されたものを含む画面オブジェクトの状態を変更するコードをアプリケーションに追加できます。

Eclipse 用の ADT プラグインは、XML のレイアウト プレビューを提供します — XML ファイルを開いた状態で、[レイアウト] タブを選択します。

レイアウトのデバッグには、Hierarchy Viewer ツールも試してみてください。これは、エミュレーターまたはデバイスでのデバッグ中に、レイアウト プロパティ値を表示し、パディング/マージン インジケーターを使用してワイヤーフレームを描画し、完全にレンダリングされたビューを表示します。

layoutopt ツールを使用すると、レイアウトと階層の非効率性やその他の問題をすばやく分析できます。

XML で UI を宣言する利点は、アプリケーションの表示を、その動作を制御するコードからより適切に分離できることです。UI の記述はアプリケーション コードの外部にあるため、ソース コードを変更して再コンパイルすることなく、UI の記述を変更または適応させることができます。たとえば、さまざまな画面の向き、さまざまなデバイスの画面サイズ、およびさまざまな言語用の XML レイアウトを作成できます。さらに、XML でレイアウトを宣言すると、UI の構造を視覚化しやすくなるため、問題のデバッグが容易になります。

アプリケーションをコンパイルすると、各 XML レイアウト ファイルが View リソースにコンパイルされます。Activity.onCreate()コールバックの実装で、アプリケーション コードからレイアウト リソースをロードする必要があります。これを行うには、 を呼び出しsetContentView()、レイアウト リソースへの参照を次の形式で渡します。

このリンクhttp://developer.android.com/guide/topics/ui/declaring-layout.htmlにアクセスして詳細情報を入手するだけでは多すぎると思います..

于 2012-12-14T11:50:47.900 に答える
4

UI コンポーネントを宣言する場所を決定する主な要因の 1 つは、アプリのライフ サイクル中の動作です。静的な場合は、必要なすべての属性を XML で宣言します。ユーザーの操作に応じて変更される場合は、アクティビティに実装する必要があります。

一貫性、さまざまな画面サイズの管理の改善、ローカリゼーション、リソース管理など、上記の利点を得るために、可能な限り XML を使用します。

于 2015-01-16T07:33:11.863 に答える
1

リソースxmlファイルもaaptツールを使用してプリコンパイルされるため、パフォーマンスの点で大きな違いはありません。したがって、ソースリソースファイルに対してXML変換が行われ、JavaソースファイルとともにJavaクラスファイルにコンパイルされます。したがって、最終的には両方がコンパイルされ、実行時に両方のメモリが割り当てられるため、パフォーマンスがほぼ同じであることも論理的です。また、サンプル アプリケーションで XML と Java を介して同様のビューを作成することを確認しました。プロファイリング中に、ビューのレンダリングにほぼ同じ時間がかかることがわかりました。:-)

于 2015-09-19T13:46:41.170 に答える