Latest web development tutorials

ทรัพยากร Android (Resources) การจัดการ

มีหลายสิ่งที่ใช้ในการสร้าง app Android ที่ดีเยี่ยม นอกจากนี้ในการเขียนโปรแกรมแอพลิเคชันที่คุณจะต้องให้ความสำคัญกับความหลากหลายของทรัพยากรเช่นคุณใช้ความหลากหลายของเนื้อหาแบบคงที่เช่นบิตแมป, สี, ความหมายรูปแบบสตริงส่วนติดต่อผู้ใช้นิเมชั่นและอื่น ๆ ทรัพยากรเหล่านี้จะถูกวางไว้โดยทั่วไปในโครงการ Res / ไดเรกทอรีย่อยแบบสแตนด์อโลน

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


ทรัพยากรองค์กรในคราส

คุณจะต้องมีการวางไว้ในแต่ละทรัพยากรภายใต้ไดเรกทอรีย่อยที่เฉพาะเจาะจงของความละเอียดโครงการของคุณ / ไดเรกทอรี ตัวอย่างเช่นนี้เป็นโครงการในระดับไฟล์ง่าย:

MyProject/
    src/  
        MyActivity.java  
    res/
        drawable/  
            icon.png  
        layout/  
            activity_main.xml
            info.xml
        values/  
            strings.xml 

Res / directory มีทั้งหมดของทรัพยากรในไดเรกทอรีย่อยต่างๆ นี่เป็นทรัพยากรภาพ, ทรัพยากรรูปแบบที่สองและแฟ้มทรัพยากรสตริง ตารางต่อไปนี้จะช่วยให้รายละเอียดในโครงการ Res / ทรัพยากรสนับสนุนไดเรกทอรี

ไดเรกทอรี ประเภททรัพยากร
Anim / ไฟล์ XML ที่กำหนดคุณสมบัติการเคลื่อนไหว พวกเขาจะถูกบันทึกไว้ใน Res / Anim / โฟลเดอร์ตามประเภทของการเข้าถึง R.anim
สี / ไฟล์ XML ที่กำหนดรายการสถานะสี พวกเขาจะถูกบันทึกไว้ในความละเอียด / สี / โฟลเดอร์ตามประเภทของการเข้าถึง R.color
drawable / ไฟล์ภาพเช่น .png, jpg, .gif หรือไฟล์ XML ที่ถูกรวบรวมเป็นบิตแมปรายการรัฐ, รูปร่าง, ภาพเคลื่อนไหว พวกเขาจะถูกบันทึกไว้ใน Res / drawable / โฟลเดอร์ตามประเภทของการเข้าถึง R.drawable
รูปแบบ / รูปแบบไฟล์ XML ที่กำหนดเอง UI พวกเขาจะถูกบันทึกไว้ในความละเอียด / รูปแบบ / โฟลเดอร์ตามประเภทของการเข้าถึง R.layout
MENU / ไฟล์ XML เมนูโปรแกรมที่กำหนดเองเช่นเมนูตัวเลือกเมนูบริบทเมนูย่อย พวกเขาจะถูกบันทึกไว้ใน Res / เมนู / โฟลเดอร์ตามประเภทของการเข้าถึง R.menu
วัตถุดิบ / ไฟล์ใด ๆ จะถูกบันทึกไว้ในรูปแบบเดิมของพวกเขา เราจำเป็นต้อง R.raw.filename ID ทรัพยากรชื่อเพื่อเปิดไฟล์ดิบโดยการเรียก Resource.openRawResource ()
ค่า / ไฟล์ XML ที่มีค่าอย่างง่าย (เช่นสตริงจำนวนเต็มสี ฯลฯ ) นี่ทรัพยากรบางอย่างภายใต้อนุสัญญาการตั้งชื่อโฟลเดอร์เป็น arrays.xml ในนามของอาร์เรย์ของทรัพยากรผ่าน R.array ประเภทของการเข้าถึง; integers.xml หมายถึงจำนวนเต็มของทรัพยากรที่เข้าถึงได้ผ่าน R.integer คลาสทรัพยากร bools.xml ในนามของค่าบูลีนชนิดของการเข้าถึงโดย R.bool ทรัพยากร colors.xml ในนามของสี เข้าถึงได้ผ่านระดับ R.color; ตัวแทน dimens.xml มิติค่าผ่าน R.dimen ประเภทของการเข้าถึง; strings.xml หมายถึงทรัพยากรสตริงผ่าน R.string ประเภทของการเข้าถึงผู้แทน styles.xml ทรัพยากรสไตล์โดยแบ่งตามชนิดของการเข้าถึง R.style
XML / โดยการเรียก Resources.getXML () เพื่ออ่านไฟล์ XML โดยพลการที่รันไทม์ แฟ้มการกำหนดค่าต่างๆสามารถบันทึกรันไทม์ที่นี่

ทรัพยากรทางเลือก

ใบสมัครของคุณต้องการที่จะให้ทรัพยากรเพื่อสนับสนุนการกำหนดค่าทางเลือกสำหรับอุปกรณ์เฉพาะ ตัวอย่างเช่นคุณจำเป็นต้องให้ภาพที่ทางเลือกของทรัพยากรสำหรับความละเอียดหน้าจอที่แตกต่างกันให้สายทรัพยากรทางเลือกสำหรับภาษาที่แตกต่าง ที่รันไทม์, Android ตรวจพบการกำหนดค่าอุปกรณ์ในปัจจุบันและโหลดทรัพยากรที่เหมาะสมสำหรับการประยุกต์ใช้

เพื่อระบุชุดของทรัพยากรทางเลือกสำหรับการกำหนดค่าเฉพาะทำตามขั้นตอนของ A:

  • สร้าง Res ไดเรกทอรีใหม่ / ลงเพื่อ <resource_name> _ <config_qualifier> การตั้งชื่อ นี่ resources_name ทรัพยากรใด ๆ ที่ระบุไว้ในตารางเช่นรูปแบบและภาพ รอบคัดเลือกจะกำหนดทรัพยากรที่จะใช้การกำหนดค่าส่วนบุคคล คุณสามารถดูเอกสารอย่างเป็นทางการสำหรับรายการที่สมบูรณ์ในประเภทที่แตกต่างกันของทรัพยากรรอบคัดเลือก
  • ประหยัดทรัพยากรทางเลือกในการตอบสนองไปยังไดเรกทอรีนี้ ไฟล์เหล่านี้ทรัพยากรที่จะต้องแสดงชื่อแฟ้มของทรัพยากรเริ่มต้นมีความสอดคล้องกับตัวอย่างต่อไปนี้อย่างไรก็ตามเอกสารเหล่านี้จะเป็นตัวกำหนดเนื้อหาของการทดแทน ตัวอย่างเช่นในขณะที่ชื่อไฟล์ภาพที่เหมือนกัน แต่ความละเอียดหน้าจอความละเอียดของภาพที่จะสูงขึ้น

นี่คือตัวอย่างการระบุภาพเริ่มต้นของหน้าจอและความละเอียดสูงภาพการเปลี่ยนตัวผู้เล่น

MyProject/
   src/
    main/
    java/
       MyActivity.java  
       res/
          drawable/  
            icon.png
            background.png
        drawable-hdpi/  
            icon.png
            background.png  
        layout/  
            activity_main.xml
            info.xml
        values/  
            strings.xml

นี่เป็นอีกตัวอย่างหนึ่งในการระบุภาษารูปแบบเริ่มต้นและรูปแบบทางเลือกภาษาอาหรับ

MyProject/
   src/
    main/
    java/
       MyActivity.java  
      res/
         drawable/  
            icon.png
            background.png
        drawable-hdpi/  
            icon.png
            background.png  
        layout/  
            activity_main.xml
            info.xml
        layout-ar/
            main.xml
        values/  
            strings.xml

การเข้าถึงทรัพยากร

ในการพัฒนาแอพลิเคชันที่เราต้องการเข้าถึงทรัพยากรที่กำหนดไว้ทั้งผ่านรหัสผ่านหรือไฟล์ XML ส่วนต่อไปนี้อธิบายถึงวิธีการเข้าถึงทรัพยากรเหล่านี้แยกกันในสองสถานการณ์

ในรหัสการเข้าถึงทรัพยากร

เมื่อโปรแกรมหุ่นยนต์ที่จะรวบรวมเพื่อสร้าง R ชั้นซึ่งมี ID และ Res / ทรัพยากรไดเรกทอรีทั้งหมด คุณสามารถใช้คลาส R, + โดยชื่อทรัพยากร subclass โดยตรงหรือใช้ ID ทรัพยากรในการเข้าถึงทรัพยากร

ตัวอย่าง

Res เข้าถึง / drawable / myimage.png และตั้งค่าให้ ImageView คุณจะใช้รหัสต่อไปนี้:

ImageView imageView = (ImageView) findViewById(R.id.myimageview);
imageView.setImageResource(R.drawable.myimage);

บรรทัดแรกของรหัสในที่นี่เพื่อรับ R.id.myimageview กำหนด myimageview ของ ImageView ในไฟล์รูปแบบ บรรทัดที่สองกับ R.drawable.myimage ที่จะได้รับภาพความละเอียด / drawable ในไดเรกทอรีย่อยที่เรียกว่า myimage

ตัวอย่าง

ลองพิจารณาตัวอย่างที่ Res / ค่า / strings.xml กำหนดเป็นดังต่อไปนี้:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string  name="hello">Hello, World!</string>
</resources>

ตอนนี้คุณสามารถใช้ ID ของผงชูรสวัตถุของ ID ทรัพยากร TextView ในการตั้งค่าข้อความดังต่อไปนี้:

TextView msgTextView = (TextView) findViewById(R.id.msg);
msgTextView.setText(R.string.hello);

ตัวอย่าง

พิจารณาคำนิยามดังต่อไปนี้รูปแบบความละเอียด / รูปแบบ / activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent" 
   android:layout_height="fill_parent" 
   android:orientation="vertical" >

   <TextView android:id="@+id/text"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Hello, I am a TextView" />

   <Button android:id="@+id/button"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Hello, I am a Button" />

</LinearLayout>

รหัสโปรแกรมจะโหลดรูปแบบกิจกรรม onCreate () วิธีการดังต่อไปนี้:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="opaque_red">#f00</color>
   <string name="hello">Hello!</string>
</resources>

การเข้าถึงในรูปแบบ XML

พิจารณาต่อไปนี้ XML แฟ้มทรัพยากร Res / ค่า / strings.xml ซึ่งมีทรัพยากรสีและทรัพยากรสตริง -

<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:textColor="@color/opaque_red"
    android:text="@string/hello" />

ตอนนี้คุณสามารถใช้ทรัพยากรเหล่านี้ในไฟล์รูปแบบต่อไปนี้เพื่อตั้งค่าสีข้อความและเนื้อหาข้อความ:

<code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;EditText xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:textColor="@color/opaque_red"
    android:text="@string/hello" /&gt;
</code>

ตอนนี้ถ้าคุณกลับไปยังส่วนก่อนหน้านี้ที่จะอธิบาย "Hello World!" เช่นผมสามารถยืนยันว่าคุณในส่วนนี้ทุกคนมีความเข้าใจที่ดีของแนวคิด ดังนั้นผมขอแนะนำให้กลับไปดูตัวอย่างก่อนหน้านี้และฉันจะใช้มุมมองที่แตกต่างกันของการใช้ทรัพยากรพื้นฐาน