เพิ่มทรัพยากรของแอป

ทรัพยากรของแอป เช่น บิตแมปและเลย์เอาต์ จะได้รับการจัดระเบียบตามประเภทที่เจาะจง ไดเรกทอรีภายในไดเรกทอรี res/ ของแต่ละโมดูล คุณยังเพิ่มทางเลือก ของแต่ละไฟล์ ซึ่งมีการปรับให้เหมาะสมกับอุปกรณ์ เช่น บิตแมปเวอร์ชันความละเอียดสูงสำหรับความหนาแน่นสูง หน้าจอ

Android Studio ช่วยให้คุณเพิ่มทรัพยากรใหม่ๆ และทรัพยากรทางเลือกในหลายๆ ด้าน ทั้งนี้ขึ้นอยู่กับประเภทของทรัพยากรที่คุณต้องการเพิ่ม หน้านี้อธิบายวิธีการ ในการเพิ่มไฟล์ทรัพยากรพื้นฐาน วิธีเปลี่ยนตำแหน่งของทรัพยากร และ วิธีการทำงานของการรวมทรัพยากร

ดูหน้าต่อไปนี้สำหรับรายละเอียดเกี่ยวกับวิธีสร้าง ประเภททรัพยากรที่เฉพาะเจาะจง

สำหรับข้อมูลเกี่ยวกับวิธีอ้างอิงทรัพยากรจากแอป ดูที่โค้ด ภาพรวมแหล่งข้อมูลของแอป

เพิ่มไฟล์ทรัพยากร XML

แม้ว่าลิงก์ของหน้าเว็บก่อนหน้านี้จะอธิบายเวิร์กโฟลว์ที่ปรับแต่งให้เหมาะกับแต่ละ ของประเภททรัพยากร คุณสามารถเพิ่มไฟล์ทรัพยากร XML ได้โดยทำตามขั้นตอนต่อไปนี้ ขั้นตอน:

  1. คลิกโมดูลแอปเป้าหมายในหน้าต่างโครงการใน มุมมอง Android หรือโปรเจ็กต์

  2. เลือก ไฟล์ > ใหม่ > ไฟล์ทรัพยากร Android

    รูปที่ 1 กล่องโต้ตอบไฟล์ทรัพยากรใหม่

  3. กรอกรายละเอียดในกล่องโต้ตอบดังนี้
    • ชื่อไฟล์: ป้อนชื่อสำหรับไฟล์ XML (ไม่จำเป็นต้องใส่ .xml)
    • ประเภททรัพยากร: เลือกประเภทของทรัพยากรที่ต้องการสร้าง
    • องค์ประกอบรูท: หากมี ให้เลือกองค์ประกอบ XML รูทสำหรับ ทรัพยากรบางประเภทรองรับองค์ประกอบรูทเพียงประเภทเดียว แล้วแต่กรณี ในประเภททรัพยากรที่เลือก คุณอาจแก้ไขไม่ได้
    • ชุดแหล่งที่มา: เลือกชุดแหล่งที่มาที่คุณต้องการบันทึกไฟล์
    • ชื่อไดเรกทอรี: ต้องตั้งชื่อไดเรกทอรีในลักษณะที่เจาะจง สำหรับประเภททรัพยากรและตัวระบุการกำหนดค่า อย่าแก้ไขข้อมูลนี้ ยกเว้น คุณต้องการเพิ่มตัวระบุการกำหนดค่าลงใน ชื่อไดเรกทอรีด้วยตนเอง (ใช้ตัวระบุที่ใช้ได้แทน)
    • ตัวระบุที่ใช้ได้: แทนที่จะรวมตัวระบุการกำหนดค่าด้วยตนเอง ในชื่อไดเรกทอรี คุณสามารถเพิ่มตัวระบุดังกล่าวได้โดยเลือกตัวระบุจาก แล้วคลิกเพิ่ม
  4. เมื่อเพิ่มตัวระบุทั้งหมดที่ต้องการแล้ว ให้คลิกตกลง

เคล็ดลับ: หากต้องการเปิดกล่องโต้ตอบไฟล์ทรัพยากรใหม่เวอร์ชันแบบง่าย เฉพาะประเภททรัพยากรที่คุณต้องการเพิ่ม คลิกขวาที่ ไดเรกทอรีทรัพยากรภายในโฟลเดอร์ res และเลือก ใหม่ > ไฟล์ทรัพยากร type-name

ทรัพยากร XML ที่ซับซ้อนแบบในหน้า

ทรัพยากรที่ซับซ้อนบางอย่างต้องใช้ไฟล์ทรัพยากร XML หลายไฟล์ ตัวอย่างเช่น เวกเตอร์ที่เคลื่อนไหวได้ Drawable มีวัตถุที่วาดได้แบบเวกเตอร์และวัตถุที่เคลื่อนไหวได้ และต้องใช้ไฟล์ XML อย่างน้อย 3 ไฟล์

ในตัวอย่างนี้ คุณสามารถสร้างและเก็บไฟล์ XML ทั้ง 3 ไฟล์แยกกันได้หากต้องการใช้ไฟล์ต่อไปนี้อย่างน้อย 1 ไฟล์ ให้พวกเขา แต่ถ้ามีการใช้ไฟล์ XML สำหรับเวกเตอร์ที่เคลื่อนไหวได้นี้เท่านั้น คุณสามารถใช้รูปแบบทรัพยากรแบบอินไลน์ที่ให้ไว้ในเนื้อหา Android แทนได้ เครื่องมือบรรจุภัณฑ์ (AAPT) เมื่อใช้ AAPT คุณจะกำหนดทรัพยากรทั้ง 3 รายการใน XML เดียวได้ ดูข้อมูลเพิ่มเติมที่ XML ที่ซับซ้อนแบบแทรกในบรรทัด ทรัพยากร

เพิ่มไดเรกทอรีทรัพยากร

หากต้องการเพิ่มไดเรกทอรีทรัพยากรใหม่ ให้ทำตามขั้นตอนต่อไปนี้

  1. คลิกโมดูลแอปเป้าหมายในหน้าต่างโปรเจ็กต์

  2. เลือก ไฟล์ > ใหม่ > ไดเรกทอรีทรัพยากร Android

    รูปที่ 2 กล่องโต้ตอบไดเรกทอรีทรัพยากรใหม่

  3. กรอกรายละเอียดในกล่องโต้ตอบดังนี้
    • ชื่อไดเรกทอรี: ต้องตั้งชื่อไดเรกทอรีในลักษณะที่เจาะจง เป็นประเภททรัพยากรและชุดค่าผสมของตัวระบุการกำหนดค่า สิ่งที่ไม่ควรทำ แก้ไขรายการนี้ ยกเว้นกรณีที่คุณต้องการเพิ่มตัวระบุการกำหนดค่าลงใน ชื่อไดเรกทอรีด้วยตนเอง (ใช้ตัวระบุที่ใช้ได้แทน)
    • ประเภททรัพยากร: เลือกประเภทของทรัพยากรที่ต้องการเก็บในไดเรกทอรี
    • ชุดแหล่งที่มา: เลือกชุดแหล่งที่มาที่คุณต้องการไดเรกทอรี
    • ตัวระบุที่ใช้ได้: แทนที่จะรวมตัวระบุการกำหนดค่าด้วยตนเอง ในชื่อไดเรกทอรี คุณสามารถเพิ่มตัวระบุดังกล่าวได้โดยเลือกตัวระบุจาก แล้วคลิกเพิ่ม
  4. เมื่อเพิ่มตัวระบุทั้งหมดที่ต้องการแล้ว ให้คลิกตกลง

เปลี่ยนไดเรกทอรีทรัพยากร

โดยค่าเริ่มต้น ทรัพยากรของคุณจะอยู่ใน module-name/src/source-set-name/res/ ตัวอย่างเช่น ทรัพยากรสำหรับชุดแหล่งที่มาหลักของโมดูลอยู่ในภาษา src/main/res/ และทรัพยากรสำหรับชุดแหล่งที่มาของการแก้ไขข้อบกพร่องอยู่ใน src/debug/res/

แต่คุณสามารถเปลี่ยนเส้นทางเหล่านี้ไปยังเส้นทางอื่นๆ ได้ สถานที่ตั้ง (สัมพันธ์กับไฟล์ build.gradle) ที่มีพร็อพเพอร์ตี้ res.srcDirs ในบล็อก sourceSets เช่น

ดึงดูด

android {
    sourceSets {
        main {
            res.srcDirs = ['resources/main']
        }
        debug {
            res.srcDirs = ['resources/debug']
        }
    }
}

Kotlin

android {
    sourceSets {
        getByName("main") {
            res.srcDirs("resources/main")
        }
        getByName("debug") {
            res.srcDirs("resources/debug")
        }
    }
}

นอกจากนี้คุณยังระบุไดเรกทอรีทรัพยากรหลายรายการสำหรับชุดแหล่งที่มาเดียวได้ เครื่องมือในการสร้างสรรค์จะผสานสิ่งเหล่านั้นเข้าด้วยกัน เช่น

ดึงดูด

android {
    sourceSets {
        main {
            res.srcDirs = ['res1', 'res2']
        }
    }
}

Kotlin

android {
    sourceSets {
        main {
            res.srcDirs("res1", "res2")
        }
    }
}

สำหรับข้อมูลเพิ่มเติม โปรดอ่านเกี่ยวกับ ชุดแหล่งที่มา

การรวมทรัพยากร

ทรัพยากรในไฟล์แอปขั้นสุดท้ายอาจมาจากแหล่งที่มา 3 แหล่ง ได้แก่

  • ชุดแหล่งที่มาหลัก (โดยทั่วไปจะอยู่ใน src/main/res/)
  • ชุดแหล่งที่มาของตัวแปร
  • ไลบรารี Android (AAR)

เมื่อทรัพยากรทั้งหมดจากชุดแหล่งที่มาหรือไลบรารีแต่ละรายการไม่ซ้ำกัน ลงในแอปสุดท้าย จะถือว่าทรัพยากรไม่ซ้ำกันหากชื่อไฟล์คือ ไม่ซ้ำกันภายใน ไดเรกทอรีประเภททรัพยากร และ ตัวระบุทรัพยากร (หากกำหนดไว้)

หากมีเวอร์ชันที่ตรงกัน 2 เวอร์ชันขึ้นไปของทรัพยากรเดียวกัน จะมีเพียงเวอร์ชันเดียวรวมอยู่ในแอปสุดท้าย เลือกเครื่องมือสร้าง เวอร์ชันที่ควรเก็บไว้ตามลำดับ ลำดับความสำคัญต่อไปนี้ (ลำดับความสำคัญสูงสุด ทางซ้าย):

ตัวแปรบิลด์ > ประเภทบิลด์ > รสชาติของผลิตภัณฑ์ > ชุดแหล่งที่มาหลัก > ทรัพยากร Dependency ของไลบรารี

ตัวอย่างเช่น หากชุดแหล่งที่มาหลักประกอบด้วย

  • res/layout/example.xml
  • res/layout-land/example.xml

และประเภทบิลด์การแก้ไขข้อบกพร่องประกอบด้วย

  • res/layout/example.xml

จากนั้นแอปสุดท้ายจะรวม res/layout/example.xml จากประเภทบิลด์การแก้ไขข้อบกพร่องและ res/layout-land/example.xml จากชุดแหล่งที่มาหลัก

แต่หากการกำหนดค่าบิลด์ระบุ โฟลเดอร์ทรัพยากรหลายโฟลเดอร์สำหรับ ชุดแหล่งที่มาหนึ่งๆ และมีความขัดแย้งระหว่างแหล่งที่มาเหล่านั้น ซึ่งถือเป็นข้อผิดพลาด เกิดขึ้นและการรวมล้มเหลวเนื่องจากไดเรกทอรีทรัพยากรแต่ละรายการมีเหมือนกัน ลำดับความสำคัญ