Android : Drawable resolution ldpi mdpi hdpi xhdpi xxhdpi xxxhdpi
การพัฒนาแอปปลิเคชันบนอุปกรณ์มือถือ (Mobile device) ปัจจุบันมีผลิตภัณฑ์ออกมาหลากหลายขนาด ปัญหาที่เราพบกันคือ ตอนทดสอบใช้รุ่นนึง แต่คนที่ดาว์นโหลดไปใช้มีหลากหลายรุ่น หลายขนาด ทำให้การแสดงผลแอปปลิเคชันไม่สวยงามเหมือนกับตอนทดสอบ แนวทางแก้ไขคือการทำรูปภาพให้มีขนาดรองรับในแต่ละรุ่นนั่นเอง
Android มีการจัดกลุ่มขนาดไว้ 6 กลุ่มดังนี้
type | density | ratio | res |
ldpi (low) | ~120dpi | 0.75 | 240×360 |
mdpi (medium) | ~160dpi | 1.0 | 320×480 |
hdpi (high) | ~240dpi | 1.5 | 480×720 |
xhdpi (extra-high) | ~320dpi | 2 | 640×960 |
xxhdpi (extra-extra-high) | ~480dpi | 3 | 960×1140 |
xxxhdpi (extra-extra-extra-high) | ~640dpi | 4 | 1280×1920 |
แต่ขนาดของรูปภาพข้างต้นเกิดขึ้นจากการเอารูปขนาด mdpi (320×480) เป็นต้นแบบ แล้วคูณด้วย ratio จึงได้ตามตาราง บางคนใช้วิธีเอาขนาดใหญ่สุดเป็นต้นแบบ แล้วคำนวนใหม่ตาม ratio ก็ได้ โดยหลักแล้วค่า ratio ถือเป็นมาตรฐานในการปรับขนาดรูปในแต่ละประเภทครับ
เมื่อปรับขนาดรูปรองรับทุกขนาดหรือบางขนาดแล้ว เราสามารถนำรูปในแต่ละขนาดไปวางไว้ยังไดเรกทอรีตามขนาดได้เลย ดังนี้
- ../res/drawable-ldpi/
- ../res/drawable-mdpi/
- ../res/drawable-hdpi/
- ../res/drawable-xhdpi/
- ../res/drawable-xxhdpi/
- ../res/drawable-xxxhdpi/
เมื่อเข้าไปดูใน Android Studio หรือ Eclipse ตรง res-> drawable จะเห็นว่ารูปภาพไหนบ้าง มีขนาดอะไรบ้างที่เราใส่เข้าไป เวลาเรียกใช้ก็เรียกเหมือนเดิม คือ @drawable/image_name โดยตัว Android จะทำการเลือกขนาดให้เราเองโดยอัตโนมัติครับ
หมายเหตุ
ถ้าเราเอาขนาดรูปใส่ผิดไดเรกทอรี ตอนรันจริงแอปจะหยุดทำงาน แต่สามารถคอมไพล์ผ่านครับ