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