web-dev-qa-db-ja.com

AndroidでXMLを使用する理由

私が理解していることから、XMLはレイアウトとアクティビティの外観の設定に使用されていませんか?

私の本は、XMLファイルがJavaコードに変換されると述べていますが、それではなぜすべてをJavaで書くだけではないのでしょうか?

3
Ahmad Hamdy

そのシンプルな理由は、XMLドキュメントを理解するよりもはるかに簡単にXMLドキュメントを操作するためのツールを記述できるJavaコードであるため、レイアウトを作成する必要がなく、 Javaパーサー。

また、Javaを直接使用するよりも、XMLでレイアウトを記述する方が簡単です。

この手法は、Webサービスインターフェイスを記述し、専門のツールによって(非常に複雑な)コードに変換されるWSDLなど、多くのもので使用されます。これにより、開発者は実装を気にすることなく1つの側面に集中でき、さまざまなタイプのコードを生成するためのツールを作成できます(たとえば、wsdlをサーバースタブに変換したり、クライアントAPIに変換したりできます)

11
gbjbaanb

Androidデザイナーがそれをそのように実装することを決めたので:)

原則として、すべてをJavaで作成できます。 MicrosoftはWinFormsのためにそれを行いました:フォームの説明は自動生成された* .designer.csファイル(または初期バージョンの.NET Frameworkで生成された領域)として保存されます。

それぞれの方法には長所と短所があります。 UIをXMLとして保存することで、解析が容易になるため、設計者は実装をより簡単にすることができます。ただし、これは開発者が学ぶもう1つの言語です。XMLだけでなく、まったく新しいドメイン固有言語(UI)です。 UIをターゲット言語(Java、C#...)として保存することにより、デザイナーの実装はより複雑になる可能性がありますが、UIを作成するためのコードはすでに開発者によく知られています。別の利点は、既存のコードリファクタリングツールが変更なしで機能できることです。

2
Huy Nguyen Ngoc

パーティーには少し遅れますが、ここでは2セントです。70以上の画面と純粋にJavaで大量のビジネスロジックを備えた大規模なアプリを書いた人にこの質問に答えられて幸運でした。純粋なJava/Kotlin Androidアプリを作成することが望ましくない理由は次のとおりです。

  1. 責任の適切な分離-インターフェイスを備えたプログラムは、インターフェイスの見え方が明確に分離されて実装されていることが望ましいlooksおよびインターフェイスの動作。 Java(またはKotlin)コードからレイアウト関連の設定を100%実行できない場合もありますが、レイアウト自体はアクティビティのXMLファイルによって定義されます。すべてのコンポーネントを1か所に表示し、必要に応じて、アクティビティのJava/Kotlinクラスからコンポーネントにアクセスし、プログラムで操作します(egバインドするイベントリスナー)。責任の分離は、AndroidアプリのアクティビティにXMLを使用するための説得力のある理由でなければなりません。

  2. 開発の速度-Android St​​udioは、Android開発をサポートする他の最新のIDEと同様に、全体をコンパイルせずにXMLファイルに基づいてレイアウトをプレビューできますアプリ。アプリ全体をアクティビティクラス内にのみコーディングする場合、レイアウトの変更を確認するたびにアプリをコンパイルする必要があり、それは非効率的です。補足として、Java/Kotlinコードのみに基づいてレイアウトをプレビューするツール/プラグインがあるかもしれませんが、私はそれらを認識していません。レイアウトの変更を数秒で確認するか、AVD(Android Virtual Device)またはデバッグデバイスがコンパイル済みアプリを起動して実行するまで1〜2分待ちますか?実行中ですか、それともどこかにバグがありますか? AndroidレイアウトをXMLで定義すると、数桁速くなります。これも説得力のある理由です。

  3. コードの読みやすさ-まだ確信が持てず、個人の開発者としてアプリを書く場合は、確かに自分のコードを理解できます。ビューの構造をメソッドに分解し、美しい抽象化を作成し、コンポーネントを再利用し、最先端のデザインパターンでコードを作成することもできます。しかし、2人目の開発者が問題に直面した場合はどうなりますか?彼または彼女はあなたのコードを理解するだけでなくview codeビヘイビアコード(ポイント#1を参照)を頭に入れて、コードを作成したときに頭を横切ったものを解読してください。また、Androidのレイアウトコードは非常に冗長になる可能性があるため、コードがどれほど美しく書かれても、1000以上のクラスを強制的に読み込ませるプロジェクトをオンボードすることはできません。すべてのAndroidアクティビティのコード行。アプリをXMLで記述することの最大の利点は、読みやすさの点で、XMLがhierarchyで構造化されていることです。要素間のレイアウト関係はすぐに表示されます。 XMLを使用せずにAndroidアプリを作成する場合は、プログラムで子を親に追加します。画面の要素階層を反映するようにコードをインデントすることはできません。

  4. オンライン資料-それは決定的なポイントではないかもしれませんが、それでも良いものだと思います。オンライン資料は、XML [+ Java/Kotlin]セットアップでより目立つように利用できます。これは、Androidアプリのコーディングに推奨される方法であるためです。レイアウトの問題で行き詰まった場合、コーディングのみのセットアップではなく、このセットアップでレイアウトの問題を解決した人を見つける可能性が高くなります。より頻繁にマニュアルを読む必要があるかもしれません(常に推奨されます)。そして確かに、あなたはオンラインで攻撃的な開発者を見つけて(。*)マニュアルを読むと言っているかもしれませんが、彼らがあなたをだまさないようにしてください。答えます。

少しお役に立てば幸いです。

1
Yuval Herziger