R 代表 Resource(資源)的首字母。編譯過程中,`aapt`/`aapt2` 掃描 `res/` 目錄,為每個資源生成唯一整型 ID,存放在 `R.java` 靜態內部類中。
| 子類 | 資源目錄 | 典型資源 | 用途示例 |
|---|---|---|---|
| R.drawable | res/drawable/ | 圖片、XML 繪圖、Shape、Selector | `imageView.setImageResource(R.drawable.ic_launcher)` |
| R.layout | res/layout/ | 界面布局 XML | `setContentView(R.layout.activity_main)` |
| R.id | 布局中 `android:id` | View 唯一標識 | `findViewById(R.id.btn_submit)` |
| R.string | res/values/strings.xml | 字符串、字符串數組 | `getString(R.string.app_name)` |
| R.color | res/values/colors.xml | 顏色值 | `ContextCompat.getColor(this, R.color.primary)` |
| R.dimen | res/values/dimens.xml | 尺寸值 | `getResources().getDimension(R.dimen.margin)` |
| R.style | res/values/styles.xml | 樣式、主題 | ` |
| R.styleable | res/values/attrs.xml | **自定義屬性** 索引數組 | 自定義 View 解析 `attrs.xml` 中 ` |
| R.anim | res/anim/ | 動畫 XML | `AnimationUtils.loadAnimation(this, R.anim.fade_in)` |
| R.menu | res/menu/ | 菜單 XML | `menuInflater.inflate(R.menu.main_menu, menu)` |
| R.raw | res/raw/ | 原始文件(音頻、視頻、JSON) | `InputStream is = getResources().openRawResource(R.raw.data)` |
| R.xml | res/xml/ | 任意 XML 配置 | `XmlResourceParser xrp = getResources().getXml(R.xml.config)` |