ドキュメントが少なく、基本的な手順と呼び出された呼び出しsetContentView()
およびその他のメソッド用に記述されています。
実際、あなたが電話するときsetContentView(R.layout.<layout_file_name>);
。Androidの概要がわかります。これにより、指定されたレイアウトファイルがIDから拡張され、現在のアクティビティ用にViewが準備され、トップレベルに配置されます。
What happen when you call setContentView(R.layout.<layout_name>) ?
Androidシステムはこの参照を受け取り、それを使用してツリーを無効化し、測定し、描画します。階層のルートノードは、その子ノードが自分自身を描画するように要求します。次に、各ビューグループノードは、自分自身の子ビューのそれぞれに自分自身を描画するように要求する責任があります。子は親内のサイズと場所を要求できますが、親オブジェクトは各子の大きさを最終的に決定します。Androidは、レイアウトの要素を(階層ツリーの最上位から)順番に解析し、ビューをインスタンス化して親に追加します。これらは順番に描画されるため、位置が重なる要素がある場合、最後に描画される要素は、以前にそのスペースに描画された他の要素の上に配置されます。
アップデート:
わかりました、私が見つけたのを見た後、
Activity基本クラスのsetContentView ()を呼び出すと、AbstractメソッドであるWindowクラスのsetContentView()のAbstractメソッドが呼び出され、このメソッドをオーバーライドするのはPhoneWindowクラスのみです。のように見えます、
@Override
public void setContentView(int layoutResID) {
if (mContentParent == null) {
installDecor();
} else {
mContentParent.removeAllViews();
}
mLayoutInflater.inflate(layoutResID, mContentParent);
final Callback cb = getCallback();
if (cb != null) {
cb.onContentChanged();
}
}
したがって、ビューインフレはこのクラスで行われます。
更新:2R.javaファイルの生成について。
Aapt(Android Asset Packaging Tool)
–このツールは、すべてのXMLレイアウトファイルとAndroidManifest.xml
ファイルをコンパイルします。コンパイルされたバージョンとは別に、これはコンパイルR.java
されたリソースのすべての参照を含むファイルも生成します。
resサブディレクトリに保存されているリソースには、アイコン、レイアウト、文字列などが含まれます。これらは、aaptツールを使用して、サブディレクトリR.java
に保存されているという名前のファイルにコンパイルされますgen/
。
aaptヘルプから
aapt p[ackage] [-d][-f][-m][-u][-v][-x][-z][-M AndroidManifest.xml] \
[-0 extension [-0 extension ...]] [-g tolerance] [-j jarfile] \
[--min-sdk-version VAL] [--target-sdk-version VAL] \
[--max-sdk-version VAL] [--app-version VAL] \
[--app-version-name TEXT] [--custom-package VAL] \
[-I base-package [-I base-package ...]] \
[-A asset-source-dir] [-G class-list-file] [-P public-definitions-file] \
[-S resource-sources [-S resource-sources ...]] [-F apk-file] [-J R-file-dir] \
[raw-files-dir [raw-files-dir] ...]
Package the android resources. It will read assets and resources that are
supplied with the -M -A -S or raw-files-dir arguments. The -J -P -F and -R
options control which files are output.
aaptのコマンド: (HelloWorldAndroidアプリケーションの場合)
aapt \package -v -f -m -M AndroidManifest.xml -S .\bin\res -S .\res \
-I C:\local\android-sdk-windows\platforms\android-15\android.jar \
-J .\gen --generate-dependencies
そして結果は次のようになります、
Configurations:
(default)
hdpi
ldpi
mdpi
Files:
drawable\ic_launcher.png
Src: (hdpi) .\res\drawable-hdpi\ic_launcher.png
Src: (ldpi) .\res\drawable-ldpi\ic_launcher.png
Src: (mdpi) .\res\drawable-mdpi\ic_launcher.png
layout\main.xml
Src: () .\res\layout\main.xml
values\strings.xml
Src: () .\res\values\strings.xml
AndroidManifest.xml
Src: () AndroidManifest.xml
Resource Dirs:
Type drawable
drawable\ic_launcher.png
Src: (hdpi) .\res\drawable-hdpi\ic_launcher.png
Src: (ldpi) .\res\drawable-ldpi\ic_launcher.png
Src: (mdpi) .\res\drawable-mdpi\ic_launcher.png
Type layout
layout\main.xml
Src: () .\res\layout\main.xml
Type values
values\strings.xml
Src: () .\res\values\strings.xml
Including resources from package: \
C:\local\android-sdk-windows\platforms\android-15\android.jar
applyFileOverlay for drawable
trying overlaySet Key=ic_launcher.png
baseFile 0 has flavor ,,,,,,,,,,,hdpi,,,,,,,
baseFile 1 has flavor ,,,,,,,,,,,ldpi,,,,,,,
baseFile 2 has flavor ,,,,,,,,,,,mdpi,,,,,,,
overlayFile 0 has flavor ,,,,,,,,,,,hdpi,,,,,,,
overlayFile 1 has flavor ,,,,,,,,,,,ldpi,,,,,,,
overlayFile 2 has flavor ,,,,,,,,,,,mdpi,,,,,,,
found a match (0) for overlay file ic_launcher.png, \
for flavor ,,,,,,,,,,,hdpi,,,,,,,
found a match (1) for overlay file ic_launcher.png, \
for flavor ,,,,,,,,,,,ldpi,,,,,,,
found a match (2) for overlay file ic_launcher.png, \
for flavor ,,,,,,,,,,,mdpi,,,,,,,
applyFileOverlay for layout
applyFileOverlay for anim
applyFileOverlay for animator
applyFileOverlay for interpolator
applyFileOverlay for xml
applyFileOverlay for raw
applyFileOverlay for color
applyFileOverlay for menu
applyFileOverlay for mipmap
(new resource id ic_launcher from \
.\bin\res\drawable-hdpi\ic_launcher.png)
(new resource id ic_launcher from \
.\bin\res\drawable-ldpi\ic_launcher.png)
(new resource id ic_launcher from \
.\bin\res\drawable-mdpi\ic_launcher.png)
(new resource id main from .\res\layout\main.xml)
Writing symbols for class R.