首頁  >  文章  >  Java  >  r.java是什麼文件

r.java是什麼文件

醉折花枝作酒筹
醉折花枝作酒筹原創
2021-07-27 11:25:375005瀏覽

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會自動收錄目前應用程式中所有的資源,並根據這些資源建立對應的ID,包括:佈局資源、控制項資源、String資源、Drawable資源等。我們可以簡單的把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檔案中預設為attr、drawable、layout、string等四個靜態內部類,每個靜態內部類別分別對應一種資源,如layout靜態內部類別對應layout中的介面文件,其中每個靜態內部類別中的靜態常數分別定義一條資源標識符,如public static final int main=0x7f030000;對應的是layout目錄下的main.xml檔。

    由於目前【drawable-*dpi】目錄下都只有icon.png一個圖片文件,因此此時不同詳述的同名的icon.png文件在drawable內部類別總只有一個icon屬性。如果我們在【drawable-*dpi】目錄下再新增一幅圖片,則內部類別中會自動的新增一個icon屬性。

PS:新增資源的命名規則:資源檔案只能以小寫字母和底線做首字母,隨後的名字只能出現[a-z0-9_.] 這些字符,否則R.java文件不會自動更新,eclipse會提示錯誤。

 了解R.java檔案中內容的來源,即當開發者在res/目錄中任何一個子目錄中加入對應類型的檔案之後,ADT會在R.java檔案中對應的內部類中自動產生靜態int類型的常數,並對已新增的檔案進行索引。如果在layout目錄下再增加一個新的介面,那麼在public static final class layout中也會加入對應的靜態int常數。相反地​​當我們在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檔案的對應為drawable內部類別下icon參數,則如果要取得該資源,則寫法為:R.drawble.icon

2.在XML檔案中引用資源

格式:@[ package:]type/name

在xml檔案中,如main.xml以及AndroidMainfest.xml檔案中透過「@drawable/icon」的方式取得。其中「@」代表的是R.java類別。 「drawable」代表的是R.java中的靜態內部類別“drawable”,“/icon”代表靜態內部類別“drawable”中的靜態屬性“icon”,而該屬性可以指向res目錄下的“drawable-* dpi」中的icon.png資源。其他類型的文件也比較類似。凡是在R檔案中定義的資源都可以透過「@Static_inner_classes_name/resource_name」的方式來取得。如“@id/button”,“@string/app_name”。

如果存取的是Android系統中自帶的文件,則要新增套件名稱「Android:」。例如:android:textColor="@android:color/red"

4.如何在R.java檔案中新增一筆資源記錄

    在佈局文件中當我們需要為一些元件添加Id屬性作為標識,可以使用如下的表達式:“@ id/string_name”,其中“ ”表示在R.java的名為id的內部類中國添加一筆記錄。範例:「@ id/button」的意思是在R.java檔案中的id這個靜態內部類別加入一條常數名為button,該常數就是該資源的識別碼。如果 id這個靜態內部類別不存在,則會先生成它。

相關影片教學推薦:Java影片教學

#

以上是r.java是什麼文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn