ประเภททรัพยากรเพิ่มเติม

หน้านี้จะระบุประเภทของทรัพยากรที่คุณสามารถภายนอกได้ดังต่อไปนี้

บูลีน
ทรัพยากร XML ที่มีค่าบูลีน
สี
ทรัพยากร XML ที่มีค่าสี (สีเลขฐาน 16)
มิติข้อมูล
ทรัพยากร XML ที่มีค่ามิติข้อมูล (ที่มีหน่วยวัด)
ID
ทรัพยากร XML ที่มีตัวระบุที่ไม่ซ้ำกันสำหรับทรัพยากรของแอปพลิเคชันและ คอมโพเนนต์
จำนวนเต็ม
ทรัพยากร XML ที่มีค่าจำนวนเต็ม
อาร์เรย์จำนวนเต็ม
ทรัพยากร XML ที่มีจำนวนเต็ม
อาร์เรย์ที่พิมพ์
ทรัพยากร XML ที่มี TypedArray (ซึ่งคุณใช้ได้ สำหรับอาร์เรย์ของรายการที่ถอนออกได้)

บูลีน

ค่าบูลีนที่กำหนดไว้ใน XML

หมายเหตุ: บูลีนเป็นทรัพยากรที่เรียบง่ายที่กล่าวถึง โดยใช้ค่าที่ระบุในแอตทริบิวต์ name ไม่ใช่ชื่อไฟล์ XML อาส คุณจะสามารถรวมทรัพยากรบูลีนกับทรัพยากรง่ายๆ อื่นๆ ในไฟล์ XML เดียวได้ ภายใต้องค์ประกอบ <resources> 1 รายการ

ตำแหน่งที่ตั้งไฟล์:

res/values/filename.xml
ตั้งชื่อไฟล์ตามใจชอบ name ขององค์ประกอบ <bool> จะใช้เป็นทรัพยากร ID
การอ้างอิงทรัพยากร:
ใน Java: R.bool.bool_name
ใน XML: @[package:]bool/bool_name
ไวยากรณ์:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool
        name="bool_name"
        >[true | false]</bool>
</resources>
องค์ประกอบ:
<resources>
ต้องระบุ นี่คือโหนดราก

ไม่มีแอตทริบิวต์

<bool>
ค่าบูลีน: true หรือ false

แอตทริบิวต์:

name
สตริง ชื่อของค่าบูลีน ส่วนนี้จะใช้เป็นรหัสทรัพยากร
ตัวอย่าง:
ไฟล์ XML ที่บันทึกไว้ที่ res/values-small/bools.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="screen_small">true</bool>
    <bool name="adjust_view_bounds">true</bool>
</resources>

โค้ดของแอปพลิเคชันต่อไปนี้จะดึงข้อมูลบูลีน

Kotlin

val screenIsSmall: Boolean = resources.getBoolean(R.bool.screen_small)

Java

Resources res = getResources();
boolean screenIsSmall = res.getBoolean(R.bool.screen_small);

XML การออกแบบต่อไปนี้ใช้บูลีนสำหรับแอตทริบิวต์

<ImageView
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:src="@drawable/logo"
    android:adjustViewBounds="@bool/adjust_view_bounds" />

สี

ค่าสีที่กำหนดไว้ใน XML สีจะกําหนดโดยใช้ค่า RGB และช่องอัลฟ่า คุณใช้แหล่งข้อมูลสีได้ ตำแหน่งใดก็ได้ที่ยอมรับค่าสีเลขฐาน 16 นอกจากนี้ คุณยังสามารถใช้แหล่งข้อมูลสีเมื่อ ควรมีทรัพยากรที่ถอนออกได้ในรูปแบบ XML เช่น android:drawable="@color/green"

ค่านี้มักจะเริ่มต้นด้วยอักขระสี่เหลี่ยม (#) ซึ่งตามด้วยเครื่องหมาย ข้อมูล Alpha-Red-Green-Blue ในรูปแบบใดรูปแบบหนึ่งต่อไปนี้

  • #RGB
  • #ARGB
  • #RRGGBB
  • #AARRGGBB

หมายเหตุ: สีเป็นแหล่งข้อมูลที่เรียบง่ายและมีการอ้างอิง โดยใช้ค่าที่ระบุในแอตทริบิวต์ name ไม่ใช่ชื่อไฟล์ XML อาส คุณสามารถรวมทรัพยากรสีเข้ากับทรัพยากรง่ายๆ อื่นๆ ในไฟล์ XML เดียว ภายใต้องค์ประกอบ <resources> 1 รายการ

ตำแหน่งที่ตั้งไฟล์:

res/values/colors.xml
ตั้งชื่อไฟล์ตามใจชอบ name ขององค์ประกอบ <color> จะใช้เป็น รหัสทรัพยากร
การอ้างอิงทรัพยากร:
ใน Java: R.color.color_name
ใน XML: @[package:]color/color_name
ไวยากรณ์:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color
        name="color_name"
        >hex_color</color>
</resources>
องค์ประกอบ:
<resources>
ต้องระบุ นี่คือโหนดราก

ไม่มีแอตทริบิวต์

<color>
สีที่แสดงเป็นเลขฐานสิบหก

แอตทริบิวต์:

name
สตริง ชื่อของสี ส่วนนี้จะใช้เป็นรหัสทรัพยากร
ตัวอย่าง:
ไฟล์ XML ที่บันทึกไว้ที่ res/values/colors.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="opaque_red">#f00</color>
   <color name="translucent_red">#80ff0000</color>
</resources>

โค้ดของแอปพลิเคชันต่อไปนี้จะดึงข้อมูลทรัพยากรสี

Kotlin

val color: Int = resources.getColor(R.color.opaque_red)

Java

Resources res = getResources();
int color = res.getColor(R.color.opaque_red);

XML การออกแบบต่อไปนี้นำสีไปใช้กับแอตทริบิวต์

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="@color/translucent_red"
    android:text="Hello"/>

มิติข้อมูล

ค่ามิติข้อมูลที่กำหนดไว้ใน XML มิติข้อมูล จะระบุด้วยตัวเลขตามด้วยหน่วยวัด เช่น 10px, 2in หรือ 5sp Android รองรับหน่วยวัดต่อไปนี้

dp
ความหนาแน่นของพิกเซลอิสระ: หน่วยนามธรรมที่อิงตามความหนาแน่นทางกายภาพของ บนหน้าจอ หน่วยเหล่านี้สัมพันธ์กับหน้าจอ 160 dpi (จุดต่อนิ้ว) ซึ่ง 1 dp เท่ากันโดยประมาณ เป็น 1 พิกเซล เมื่อทำงานบนหน้าจอที่มีความหนาแน่นสูงขึ้น ระบบจะปรับขนาดจำนวนพิกเซลที่ใช้วาด 1 dp ตามค่า dpi ของหน้าจอ

ในทํานองเดียวกัน ในหน้าจอความหนาแน่นต่ำ ตัวเลข ของพิกเซลที่ใช้สำหรับ 1 dp จะถูกลดขนาดลง อัตราส่วนของ dps ต่อพิกเซล จะเปลี่ยนไปตามความหนาแน่นของหน้าจอ แต่ไม่จำเป็นว่าเป็นสัดส่วนโดยตรง การใช้หน่วย dp แทนหน่วย px เป็นวิธีการแก้ปัญหา เพื่อทำให้ขนาดมุมมองในการปรับขนาดของเลย์เอาต์อย่างเหมาะสมสำหรับความหนาแน่นหน้าจอแบบต่างๆ ได้ ทำให้ขนาดจริงขององค์ประกอบ UI ต่างๆ มีขนาดต่างๆ ให้สอดคล้องกัน อุปกรณ์

sp
พิกเซลที่ไม่อิงตามสเกล - หน่วยนี้เหมือนกับหน่วย dp แต่ก็ปรับขนาดตามแบบอักษรของผู้ใช้ด้วย การตั้งค่าขนาด เราขอแนะนำให้คุณใช้หน่วยนี้เมื่อระบุขนาดแบบอักษร เพื่อให้ปรับได้ ทั้งสำหรับความหนาแน่นของหน้าจอและค่ากำหนดของผู้ใช้
pt
จุด: 1/72 ของนิ้วตามขนาดจริงของหน้าจอ หากใช้หน้าจอความหนาแน่น 72 DPI
px
พิกเซล: สอดคล้องกับพิกเซลจริงบนหน้าจอ เราไม่แนะนําให้ใช้หน่วยนี้ เนื่องจาก การแสดงผลจริงอาจแตกต่างกันไปตามอุปกรณ์ อุปกรณ์ต่างๆ อาจมีจำนวนพิกเซลไม่เท่ากัน ต่อนิ้ว และอาจมีพิกเซลรวมบนหน้าจอมากกว่าหรือน้อยกว่า
mm
มิลลิเมตร: ขึ้นอยู่กับขนาดจริงของหน้าจอ
in
นิ้ว: ขึ้นอยู่กับขนาดจริงของหน้าจอ

หมายเหตุ: มิติข้อมูลคือทรัพยากรทั่วไปที่ใช้อ้างอิง โดยใช้ค่าที่ระบุในแอตทริบิวต์ name ไม่ใช่ชื่อไฟล์ XML อาส เช่น คุณสามารถรวมทรัพยากรมิติข้อมูลเข้ากับทรัพยากรง่ายๆ อื่นๆ ในไฟล์ XML เดียว ภายใต้องค์ประกอบ <resources> 1 รายการ

ตำแหน่งที่ตั้งไฟล์:

res/values/filename.xml
ตั้งชื่อไฟล์ตามใจชอบ name ขององค์ประกอบ <dimen> จะใช้เป็น รหัสทรัพยากร
การอ้างอิงทรัพยากร:
ใน Java: R.dimen.dimension_name
ใน XML: @[package:]dimen/dimension_name
ไวยากรณ์:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen
        name="dimension_name"
        >dimension</dimen>
</resources>
องค์ประกอบ:
<resources>
ต้องระบุ นี่คือโหนดราก

ไม่มีแอตทริบิวต์

<dimen>
มิติข้อมูลซึ่งแสดงด้วยหน่วยลอยตามด้วยหน่วยวัด (dp, sp, pt, px, mm, in)

แอตทริบิวต์:

name
สตริง ชื่อของมิติข้อมูล ส่วนนี้จะใช้เป็นรหัสทรัพยากร
ตัวอย่าง:
ไฟล์ XML ที่บันทึกไว้ที่ res/values/dimens.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="textview_height">25dp</dimen>
    <dimen name="textview_width">150dp</dimen>
    <dimen name="ball_radius">30dp</dimen>
    <dimen name="font_size">16sp</dimen>
</resources>

โค้ดแอปพลิเคชันต่อไปนี้จะดึงมิติข้อมูล

Kotlin

val fontSize: Float = resources.getDimension(R.dimen.font_size)

Java

Resources res = getResources();
float fontSize = res.getDimension(R.dimen.font_size);

XML การออกแบบต่อไปนี้นำมิติข้อมูลไปใช้กับแอตทริบิวต์

<TextView
    android:layout_height="@dimen/textview_height"
    android:layout_width="@dimen/textview_width"
    android:textSize="@dimen/font_size"/>

รหัส

รหัสทรัพยากรที่ไม่ซ้ำกันที่กำหนดไว้ใน XML การใช้ชื่อที่คุณระบุใน <item> เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ Android จะสร้างจำนวนเต็มที่ไม่ซ้ำกันในชั้นเรียน R.java ของโครงการ ซึ่งคุณสามารถใช้เป็น สำหรับทรัพยากรของแอปพลิเคชัน เช่น View ในการจัดวาง UI ของคุณ หรือจำนวนเต็มที่ไม่ซ้ำกันเพื่อใช้ในโค้ดของแอปพลิเคชัน เช่น รหัสของกล่องโต้ตอบ รหัสผลลัพธ์

หมายเหตุ: รหัสเป็นแหล่งข้อมูลพื้นฐานที่มีการอ้างอิง โดยใช้ค่าที่ระบุในแอตทริบิวต์ name ไม่ใช่ชื่อไฟล์ XML อาส คุณสามารถรวมทรัพยากร ID เข้ากับทรัพยากรง่ายๆ อื่นๆ ในไฟล์ XML เดียว ภายใต้องค์ประกอบ <resources> 1 รายการ นอกจากนี้ ทรัพยากร ID จะไม่อ้างอิง รายการทรัพยากรจริง: เป็นรหัสที่ไม่ซ้ำกันซึ่งคุณสามารถแนบไปกับทรัพยากรหรือใช้ เป็นจำนวนเต็มเฉพาะในแอปพลิเคชัน

ตำแหน่งที่ตั้งไฟล์:

res/values/filename.xml
ตั้งชื่อไฟล์ตามใจชอบ
การอ้างอิงทรัพยากร:
ใน Java: R.id.name
ใน XML: @[package:]id/name
ไวยากรณ์:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item
        type="id"
        name="id_name" />
</resources>
องค์ประกอบ:
<resources>
ต้องระบุ นี่คือโหนดราก

ไม่มีแอตทริบิวต์

<item>
กำหนดรหัสที่ไม่ซ้ำกัน ไม่ใช้ค่า แต่ใช้แอตทริบิวต์เท่านั้น

แอตทริบิวต์:

type
ต้องเป็น "id"
name
สตริง ชื่อที่ไม่ซ้ำกันสำหรับรหัส
ตัวอย่าง:

ไฟล์ XML ที่บันทึกไว้ที่ res/values/ids.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item type="id" name="button_ok" />
    <item type="id" name="dialog_exit" />
</resources>

ข้อมูลโค้ดเลย์เอาต์ต่อไปนี้ใช้รหัส "button_ok" สำหรับวิดเจ็ต Button

<Button android:id="@id/button_ok"
    style="@style/button_style" />

ค่า android:id ที่นี่ไม่มีเครื่องหมายบวกในการอ้างอิงรหัส เพราะมีรหัสอยู่แล้วตามที่กำหนดไว้ในตัวอย่าง ids.xml ก่อนหน้านี้ เมื่อคุณระบุ รหัสไปยังทรัพยากร XML โดยใช้เครื่องหมายบวกในรูปแบบ android:id="@+id/name" ซึ่งหมายความว่ายังไม่มีรหัส "name" และมีการสร้างรหัสขึ้น

อีกตัวอย่างหนึ่ง ข้อมูลโค้ดต่อไปนี้ใช้รหัส "dialog_exit" เป็นตัวระบุที่ไม่ซ้ำกัน สำหรับกล่องโต้ตอบ

Kotlin

showDialog(R.id.dialog_exit)

Java

showDialog(R.id.dialog_exit);

ในแอปพลิเคชันเดียวกัน ระบบจะเปรียบเทียบรหัส "dialog_exit" เมื่อสร้างกล่องโต้ตอบ ดังนี้

Kotlin

override fun onCreateDialog(id: Int): Dialog? {
    return when(id) {
        R.id.dialog_exit -> {
            ...
        }
        else -> {
            null
        }
    }
}

Java

protected Dialog onCreateDialog(int id) {
    Dialog dialog;
    switch(id) {
    case R.id.dialog_exit:
        ...
        break;
    default:
        dialog = null;
    }
    return dialog;
}

จำนวนเต็ม

จำนวนเต็มที่กำหนดไว้ใน XML

หมายเหตุ: จำนวนเต็มเป็นแหล่งข้อมูลพื้นฐานที่ใช้อ้างอิง โดยใช้ค่าที่ระบุในแอตทริบิวต์ name ไม่ใช่ชื่อไฟล์ XML อาส คุณสามารถรวมทรัพยากรจำนวนเต็มกับทรัพยากรพื้นฐานอื่นๆ ไว้ในไฟล์ XML เดียว ภายใต้องค์ประกอบ <resources> 1 รายการ

ตำแหน่งที่ตั้งไฟล์:

res/values/filename.xml
ตั้งชื่อไฟล์ตามใจชอบ name ขององค์ประกอบ <integer> จะใช้เป็น รหัสทรัพยากร
การอ้างอิงทรัพยากร:
ใน Java: R.integer.integer_name
ใน XML: @[package:]integer/integer_name
ไวยากรณ์:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer
        name="integer_name"
        >integer</integer>
</resources>
องค์ประกอบ:
<resources>
ต้องระบุ นี่คือโหนดราก

ไม่มีแอตทริบิวต์

<integer>
จำนวนเต็ม

แอตทริบิวต์:

name
สตริง ชื่อของจำนวนเต็ม ส่วนนี้จะใช้เป็นรหัสทรัพยากร
ตัวอย่าง:

ไฟล์ XML ที่บันทึกไว้ที่ res/values/integers.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="max_speed">75</integer>
    <integer name="min_speed">5</integer>
</resources>

รหัสแอปพลิเคชันต่อไปนี้จะดึงจำนวนเต็ม

Kotlin

val maxSpeed: Int = resources.getInteger(R.integer.max_speed)

Java

Resources res = getResources();
int maxSpeed = res.getInteger(R.integer.max_speed);

อาร์เรย์จำนวนเต็ม

อาร์เรย์ของจำนวนเต็มที่กำหนดไว้ใน XML

หมายเหตุ: อาร์เรย์จำนวนเต็มเป็นทรัพยากรที่เรียบง่ายที่ใช้อ้างอิง โดยใช้ค่าที่ระบุในแอตทริบิวต์ name ไม่ใช่ชื่อไฟล์ XML อาส คุณสามารถรวมทรัพยากรอาร์เรย์แบบจำนวนเต็มกับทรัพยากรพื้นฐานอื่นๆ ในไฟล์ XML เดียวได้ ภายใต้องค์ประกอบ <resources> 1 รายการ

ตำแหน่งที่ตั้งไฟล์:

res/values/filename.xml
ตั้งชื่อไฟล์ตามใจชอบ name ขององค์ประกอบ <integer-array> จะใช้เป็น รหัสทรัพยากร
ประเภทข้อมูลทรัพยากรที่คอมไพล์:
ตัวชี้แหล่งข้อมูลไปยังอาร์เรย์ของจำนวนเต็ม
การอ้างอิงทรัพยากร:
ใน Java: R.array.integer_array_name
ใน XML: @[package:]array/integer_array_name
ไวยากรณ์:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer-array
        name="integer_array_name">
        <item
            >integer</item>
    </integer-array>
</resources>
องค์ประกอบ:
<resources>
ต้องระบุ นี่คือโหนดราก

ไม่มีแอตทริบิวต์

<integer-array>
กำหนดอาร์เรย์ของจำนวนเต็ม มีองค์ประกอบย่อย <item> อย่างน้อย 1 รายการ

แอตทริบิวต์:

android:name
สตริง ชื่อของอาร์เรย์ ชื่อนี้จะใช้เป็นทรัพยากร รหัสที่ใช้อ้างอิงอาร์เรย์
<item>
จำนวนเต็ม ค่าสามารถเป็นการอ้างอิงไปยังค่าอื่น จำนวนเต็ม ต้องเป็นองค์ประกอบย่อยขององค์ประกอบ <integer-array>

ไม่มีแอตทริบิวต์

ตัวอย่าง:
ไฟล์ XML ที่บันทึกไว้ที่ res/values/integers.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer-array name="bits">
        <item>4</item>
        <item>8</item>
        <item>16</item>
        <item>32</item>
    </integer-array>
</resources>

โค้ดแอปพลิเคชันต่อไปนี้จะเรียกอาร์เรย์จำนวนเต็ม

Kotlin

val bits: IntArray = resources.getIntArray(R.array.bits)

Java

Resources res = getResources();
int[] bits = res.getIntArray(R.array.bits);

อาร์เรย์ที่พิมพ์

TypedArray ที่กำหนดไว้ใน XML คุณสามารถใช้ เพื่อสร้างอาร์เรย์ของทรัพยากรอื่นๆ เช่น ทรัพยากรที่ถอนออกได้ อาร์เรย์ไม่จำเป็นต้องเป็นข้อมูลที่เท่ากัน คุณจึงสร้างอาร์เรย์ของประเภททรัพยากรแบบผสมได้ ต้องทราบว่าประเภทข้อมูลอยู่ในอาร์เรย์ใดและที่ไหน เพื่อที่คุณจะได้ดึงข้อมูลได้อย่างเหมาะสม แต่ละรายการด้วยเมธอด get...() ของชั้นเรียน TypedArray

หมายเหตุ: อาร์เรย์ประเภทเป็นทรัพยากรที่เรียบง่ายที่ใช้อ้างอิง โดยใช้ค่าที่ระบุในแอตทริบิวต์ name ไม่ใช่ชื่อไฟล์ XML อาส คุณสามารถรวมทรัพยากรอาร์เรย์ที่มีประเภท เข้ากับทรัพยากรง่ายๆ อื่นๆ ในไฟล์ XML เดียว ภายใต้องค์ประกอบ <resources> 1 รายการ

ตำแหน่งที่ตั้งไฟล์:

res/values/filename.xml
ตั้งชื่อไฟล์ตามใจชอบ name ขององค์ประกอบ <array> จะใช้เป็น รหัสทรัพยากร
ประเภทข้อมูลทรัพยากรที่คอมไพล์:
ตัวชี้แหล่งข้อมูลไปยัง TypedArray
การอ้างอิงทรัพยากร:
ใน Java: R.array.array_name
ใน XML: @[package:]array/array_name
ไวยากรณ์:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array
        name="integer_array_name">
        <item>resource</item>
    </array>
</resources>
องค์ประกอบ:
<resources>
ต้องระบุ นี่คือโหนดราก

ไม่มีแอตทริบิวต์

<array>
กำหนดอาร์เรย์ มีองค์ประกอบย่อย <item> อย่างน้อย 1 รายการ

แอตทริบิวต์:

android:name
สตริง ชื่อของอาร์เรย์ ชื่อนี้จะใช้เป็นทรัพยากร รหัสที่ใช้อ้างอิงอาร์เรย์
<item>
แหล่งข้อมูลทั่วไป ค่านี้อาจเป็นการอ้างอิงไปยังทรัพยากรหรือประเภทข้อมูลทั่วไป ต้องเป็นองค์ประกอบย่อยขององค์ประกอบ <array>

ไม่มีแอตทริบิวต์

ตัวอย่าง:
ไฟล์ XML ที่บันทึกไว้ที่ res/values/arrays.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array name="icons">
        <item>@drawable/home</item>
        <item>@drawable/settings</item>
        <item>@drawable/logout</item>
    </array>
    <array name="colors">
        <item>#FFFF0000</item>
        <item>#FF00FF00</item>
        <item>#FF0000FF</item>
    </array>
</resources>

โค้ดแอปพลิเคชันต่อไปนี้จะเรียกแต่ละอาร์เรย์ จากนั้นจึงรับรายการแรกในแต่ละอาร์เรย์

Kotlin

val icons: TypedArray = resources.obtainTypedArray(R.array.icons)
val drawable: Drawable = icons.getDrawable(0)

val colors: TypedArray = resources.obtainTypedArray(R.array.colors)
val color: Int = colors.getColor(0,0)

Java

Resources res = getResources();
TypedArray icons = res.obtainTypedArray(R.array.icons);
Drawable drawable = icons.getDrawable(0);

TypedArray colors = res.obtainTypedArray(R.array.colors);
int color = colors.getColor(0,0);