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 จะทำการเลือกขนาดให้เราเองโดยอัตโนมัติครับ

หมายเหตุ

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

You may also like...

Leave a Reply

Your email address will not be published.