ホームページ  >  記事  >  Java  >  r.java とは何のファイルですか?

r.java とは何のファイルですか?

醉折花枝作酒筹
醉折花枝作酒筹オリジナル
2021-07-27 11:25:375076ブラウズ

R.java ファイルはコンパイラによって自動的に生成されるため、開発者がそれを保守する必要はありません。 R.java は、現在のアプリケーションにすべてのリソースを自動的に組み込み、これらのリソースに基づいて対応する ID を作成します。 R.java は、単純に現在の Android アプリケーションのリソース ディクショナリとして理解できます。

r.java とは何のファイルですか?

#このチュートリアルの動作環境: Windows7 システム、Java10 バージョン、DELL G3 コンピューター。

1. R.java ファイルの概要

Android Studio では、R.java が存在するディレクトリは app/build/generated/source/r/arm/debug/com です。 example.dfanghu. myapplication/R.java

gen ディレクトリ内の R.java ファイルはコンパイラによって自動的に生成されるため、開発者がそれを保守する必要はありません。 R.java は、現在のアプリケーション内のすべてのリソースを自動的に収集し、これらのリソース (レイアウト リソース、制御リソース、文字列リソース、Drawable リソースなど) に基づいて対応する ID を確立します。 R.java は現在の Android アプリケーションのリソース ディクショナリとして単純に理解できます。

現在のプロジェクトにはエラーが含まれないという前提の下で、R.java ファイルは手動で削除され、コンパイラはただちに R.java ファイルを再生成し、新しいリソースが res/ ディレクトリに追加されます。およびコンパイラ プロセッサは、このリソースの ID をすぐに R.java ファイルに組み込みます。 , ただし、現在のプロジェクトにはエラーが含まれていてはいけないという前提があります。 R.java を更新した後にこのリソースが含まれていないことが判明した場合は、現在のプロジェクトにエラーがあるかどうかを確認する必要があります。

2. R.java ファイルのコンテンツ分析

#HelloWorld プロジェクトの R.java ファイル

package com.android.hellworld;

public final class R {
    public static final class attr {
    }
    public static final class drawable {
        public static final int icon=0x7f020000;
    }
    public static final class layout {
        public static final int main=0x7f030000;
    }
    public static final class string {
        public static final int app_name=0x7f040001;
        public static final int hello=0x7f040000;
    }
}

R.java ファイルには、属性、ドローアブル、レイアウト、文字列などが含まれています。デフォルトでは、4 つの静的内部クラスがあります。各静的内部クラスは、リソースに対応します。たとえば、レイアウトの静的内部クラスは、レイアウト内のインターフェイス ファイルに対応します。各静的内部クラスの静的定数は、次のようなリソース識別子を定義します。 public static Final int main=0x7f030000; レイアウト ディレクトリの main.xml ファイルに対応します。

現在、[drawable-*dpi] ディレクトリには画像ファイル icon.png が 1 つだけあるため、現時点では、同じ名前で詳細が異なる icon.png ファイルは、ドローアブル内に常に 1 つのアイコン属性のみを持ちます。内部クラス。 [drawable-*dpi] ディレクトリに別の画像を追加すると、内部クラスにアイコン属性が自動的に追加されます。

PS: リソースの命名規則を追加します。リソース ファイルは小文字とアンダースコアのみで始めることができ、後続の名前には [a-z0-9_.] 文字のみを使用できます。それ以外の場合は、R.java ファイルが使用されます。自動的に更新されず、Eclipse によってエラーが表示されます。

R.java ファイル内のコンテンツのソースを理解します。つまり、開発者が res/ ディレクトリ内のサブディレクトリに対応するタイプのファイルを追加すると、ADT は対応する内部クラスをR.java ファイル 追加されたファイルのインデックスを作成するために、static int 型の定数が自動的に生成されます。新しいインターフェイスがレイアウト ディレクトリに追加されると、対応する static int 定数も public static Final クラス レイアウトに追加されます。逆に、res ディレクトリ内のファイルを削除すると、R.java 内の対応するレコードが ADT によって自動的に削除されます。

R.java ファイルには、リソースを自動的にマークするインデックス作成機能に加えて、別の主要な機能もあります。res ディレクトリ内のリソースがアプリケーションで使用されていない場合、コンパイル時にシステムがは、対応するリソースをアプリケーションの APK パッケージにコンパイルしません。これにより、Android スマートフォン上のリソースを節約できます。

3. R.java ファイルを通じて必要なリソースを参照する方法

1. Java プログラムでのリソースの参照

Java 構文に従った参照: R .resource_type .resource_name

注: resource_name にはファイル接尾辞は必要ありません

Android システム自体には多くのリソースが付属しており、それらを参照することもできます。「Android.」を追加するだけです。リソースが Android システムからのものであることを宣言します。つまり、Android.R.resource_type.resouce_name

例: [drawable-*hpi] の下の icon.png

画像は R にあります。 .java ファイル マッピングはドローアブル内部クラス配下の icon パラメータ リソースを取得したい場合の記述方法は R.drawble.icon

2 XML ファイル内でのリソースの引用

形式: @[ package:]type/name

は、main.xml ファイルや AndroidMainfest.xml ファイルなどの XML ファイルの「@drawable/icon」を通じて取得されます。このうち「@」はR.javaクラスを表します。 「drawable」は R.java の静的内部クラス「drawable」を表し、「/icon」は静的内部クラス「drawable」の静的属性「icon」を表し、この属性は res ディレクトリ内の「drawable-*」を指すことができます。 dpi」アイコン.png リソース。他の種類のファイルも同様です。 R ファイルで定義されているすべてのリソースは、「@Static_inner_classes_name/resource_name」を通じて取得できます。 「@id/ボタン」、「@文字列/アプリ名」など。

Android システムに付属のファイルにアクセスする場合は、パッケージ名「Android:」を追加する必要があります。例: android:textColor="@android:color/red"

4. R.java ファイルにリソース レコードを追加する方法

レイアウト ファイルで、一部のコンポーネントの識別子として Id 属性を追加する必要がある場合、次の式を使用できます: "@ id/string_name"。ここで、" " は、それを id という名前の内部クラスに追加することを意味します。 R.java レコード。例: 「@id/button」は、R.java ファイルの静的内部クラス ID に button という名前の定数を追加することを意味します。この定数はリソースの識別子です。静的内部クラス ID が存在しない場合は、それが最初に生成されます。

推奨される関連ビデオ チュートリアル: Java ビデオ チュートリアル

以上がr.java とは何のファイルですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。