R.java 파일은 컴파일러에 의해 자동으로 생성되므로 개발자가 이를 유지 관리할 필요가 없습니다. R.java는 현재 애플리케이션의 모든 리소스를 자동으로 포함하고 이러한 리소스를 기반으로 해당 ID를 생성합니다. R.java는 단순히 현재 Android 애플리케이션의 리소스 사전으로 이해될 수 있습니다.
이 튜토리얼의 운영 환경: windows7 시스템, java10 버전, DELL G3 컴퓨터.
1. R.java 파일 소개
Android 스튜디오에서 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 파일을 수동으로 삭제하면 컴파일러는 res/ 디렉터리에 새 리소스를 추가하면 즉시 R.java 파일을 다시 생성합니다. 즉시 R.java 파일에 이 리소스의 ID를 포함합니다. , 그러나 전제가 있습니다. 즉, 현재 프로젝트에는 오류가 포함될 수 없습니다. 업데이트 후 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 파일에는 기본적으로 attr, drawable,layout,string 등 4개의 정적 내부 클래스가 있습니다. 각 정적 내부 클래스는 다음과 같습니다. 클래스는 레이아웃의 인터페이스 파일에 해당하는 레이아웃 정적 내부 클래스와 같은 리소스에 별도로 해당합니다. 정적 내부 클래스의 각 정적 상수는 public static final int main=0x7f030000; 레이아웃 디렉토리.main.xml 파일.
현재 [drawable-*dpi] 디렉터리에 이미지 파일 icon.png가 하나만 있기 때문에 다른 세부 정보에서 동일한 이름을 가진 icon.png 파일은 항상 drawable 내부 클래스에 하나의 아이콘 속성만 갖습니다. [drawable-*dpi] 디렉토리에 다른 그림을 추가하면 아이콘 속성이 내부 클래스에 자동으로 추가됩니다.
PS: 리소스 이름 지정 규칙 추가: 리소스 파일은 소문자와 밑줄로만 시작할 수 있으며 후속 이름에는 [a-z0-9_.]만 나타날 수 있습니다. 그렇지 않으면 R.java 파일이 자동으로 업데이트되지 않습니다. Eclipse에서는 오류 메시지가 표시됩니다.
R.java 파일의 콘텐츠 소스를 이해합니다. 즉, 개발자가 res/ 디렉터리의 하위 디렉터리에 해당 유형의 파일을 추가하면 ADT는 R.java 디렉터리의 해당 내부 클래스에 파일을 자동으로 생성합니다. R.java 파일 추가된 파일을 색인화하는 정적 int 유형 상수입니다. 새 인터페이스가 레이아웃 디렉터리에 추가되면 해당 정적 int 상수도 공용 정적 최종 클래스 레이아웃에 추가됩니다. 반대로, res 디렉토리에서 파일을 삭제하면 R.java의 해당 레코드가 ADT에 의해 자동으로 삭제됩니다.
리소스를 자동으로 표시하는 인덱싱 기능 외에도 R.java 파일에는 또 다른 주요 기능이 있습니다. res 디렉터리의 리소스가 애플리케이션에서 사용되지 않으면 시스템은 해당 리소스를 Android 휴대폰에 리소스를 저장할 수 있는 애플리케이션의 APK 패키지입니다.
3. R.java 파일을 통해 필요한 리소스를 참조하는 방법
1. Java 프로그램에서 리소스 참조
Java 구문에 따른 참조: R.resource_type.resource_name
참고: resources_name에는 파일이 필요하지 않습니다. 접미사 이름
Android 시스템 자체에는 많은 리소스가 포함되어 있으므로 이를 참조할 수도 있습니다. 리소스가 Android 시스템에서 가져온 것임을 선언하려면 앞에 "Android"만 추가하면 됩니다. .R.resource_type.resouce_name
예: [drawable-*hpi] 아래의 icon.png
R.java 파일에서 이 이미지의 매핑은 drawable 내부 클래스 아래의 icon 매개변수입니다. , 작성 방법은 R.drawble.icon
2. XML 파일의 참조 리소스
형식: @[package:]type/name
main 등 xml 파일에서 "@drawable/icon"을 통해 가져옵니다. .xml 및 AndroidMainfest.xml 파일. 그 중 "@"은 R.java 클래스를 나타낸다. "drawable"은 R.java의 정적 내부 클래스 "drawable"을 나타내고 "/icon"은 정적 내부 클래스 "drawable"의 정적 속성 "icon"을 나타내며 이 속성은 res 디렉토리의 "drawable-*를 가리킬 수 있습니다. dpi" icon.png 리소스입니다. 다른 유형의 파일도 비슷합니다. R 파일에 정의된 모든 리소스는 "@Static_inner_classes_name/resource_name"을 통해 얻을 수 있습니다. 예: "@id/버튼", "@string/app_name".
Android 시스템과 함께 제공되는 파일에 액세스하는 경우 패키지 이름 "Android:"를 추가해야 합니다. 예: android:textColor="@android:color/red"
4. R.java 파일에 리소스 레코드를 추가하는 방법
레이아웃 파일에서 일부 구성 요소의 식별자로 Id 속성을 추가해야 하는 경우 다음 표현식을 사용할 수 있습니다. "@+id/string_name", 여기서 "+"는 id라는 내부 클래스에 추가하는 것을 의미합니다. R.java A 레코드. 예: "@+id/button"은 R.java 파일의 정적 내부 클래스 ID에 버튼이라는 상수를 추가하는 것을 의미합니다. 이 상수는 리소스의 식별자입니다. 정적 내부 클래스 ID가 없으면 먼저 생성됩니다.
관련 비디오 튜토리얼 권장 사항: Java 비디오 튜토리얼
위 내용은 r.java는 어떤 파일인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!