站長資訊網
        最全最豐富的資訊網站

        r.java是什么文件

        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視頻教程

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国产精品永久免费| 国产三级精品三级在线观看专1| 精品国产一区AV天美传媒| 国产精品日韩欧美在线第3页| 乱色精品无码一区二区国产盗| 国产呦小j女精品视频| 国产成人精品日本亚洲11| 日韩精品人妻系列无码专区| 欧美亚洲另类精品第一页 | 999久久久无码国产精品| 欧美日韩精品久久久久| 99久久精品免费看国产| 欧美精品天天操| 精品国产91久久久久久久 | 精品国产乱码久久久久久郑州公司| 亚洲AV无码成人精品区大在线| 精品国产高清在线拍| 国产精品免费看久久久香蕉| 欧美极品欧美精品欧美视频| 国产精品久久久福利| 91精品国产高清91久久久久久| 欧美精品v国产精品v日韩精品| 最新国产精品精品视频| 无码人妻精品一区二区蜜桃AV| 欧美精品一区二区三区免费观看 | 欧美精品国产精品| 国产AV国片精品有毛| 精品国际久久久久999波多野| 人妻少妇乱子伦精品| 无码国产精品一区二区免费vr | 日韩在线精品一二三区| 四虎精品影院4hutv四虎| 欧美精品一区二区三区在线| 国内精品久久久久久野外| 久久er热视频在这里精品| 国产精品一久久香蕉国产线看 | 精品人妻va出轨中文字幕| 久久精品国产亚洲AV无码娇色 | 久久精品国产亚洲Aⅴ蜜臀色欲| 国产精品小视频免费无限app| 国产精品乱码一区二区三区|