3

私はある種の Android アプリケーション (APK ファイル) アナライザーである Java アプリケーションを構築しています。

アプリが提供する主な機能の 1 つは、Android レイアウトの「プレビュー」です。したがって、Android レイアウト XML と、画面の解像度やテーマなどのいくつかの構成引数を受け取り、レンダリングされたレイアウトをそのまま返す API が必要です。アプリケーションを実行しているデバイスに表示されます (実際の Android プラットフォームとのグラフィックの一貫性が重要です)。View オブジェクトの位置データ (ユーザーがクリックしてビューを選択できるようにするため) とともに表示されます。最初の段階では、プログラムによって行われたレイアウトの変更が機能に反映されることはないと思いますが、XML で定義された View オブジェクトとリソース グラフィックのみが反映されます。

私が念頭に置いているアイデアは、ADT のエディターや DroidDraw などのレイアウト エディターのソース コードを使用して、それを私のフレームワークに統合することですが、それから私は疑問に思っていました - おそらくより良い方法は、Android API 自体を使用してレイアウトをレンダリングしてくれます (主に、OS の新しいバージョン用にコードを書き直す必要がないため、これの方が優れています)。

だから私の質問は: API はそのような操作を許可しますか? それとももっと良い方法がありますか?

どんな提案や洞察も歓迎します:)

4

3 に答える 3

1

API はそのような操作を許可しますか?

「Java アプリケーション」が PC で実行されるアプリを意味する場合は、いいえ。Android API で何かを呼び出す簡単な方法はありません。既存のソース コードを統合する最初の方法をお勧めします。

とはいえ、これも簡単な作業ではありません。また、APK を分析している場合は、開発時に見られる読みやすいプレーン テキスト ファイルではなく、バイナリ XML ファイルを使用することになります (これは、ADT/DroidDraw が使用するものと思われます)。それに対処するためのソースコードもあるかもしれません。

Android 自体のソースを確認することも考えられますが、大量のレンダリング コードを再実装する必要があると思われるため、それも簡単な方法ではありません。

最初の段階では、プログラムによって行われたレイアウトの変更が機能に反映されることはないと思いますが、XML で定義された View オブジェクトとリソース グラフィックのみが反映されます。

プログラムで行われたレイアウトの変更を合理的な方法で反映することは事実上不可能です。

于 2013-04-10T17:50:44.387 に答える
0

オープン ソースの Itsnat には、読み込まれた XML Android レイアウト ファイルを直接レンダリングする方法があります。標準 (バイナリ コンパイル) バージョンと動的バージョンを比較するサンプル アプリがあります。私の作業は、LinearLayout/Relativelayout などのすべての癖をうまく再現していることを示してい ます。 https://github.com/jmarranz/itsnat

于 2015-04-03T16:10:54.703 に答える