ว่าด้วยเรื่องขนาดหน้าจอ android

ว่าด้วยเรื่องขนาดหน้าจอ android

ตามที่รู้กันแล้วว่า android phone มีหลายยี่ห้อ และหลายรุ่น ซึ่งความต่างที่เห็นได้ชัดในแต่ละเครื่อง นอกจาก OS version ที่ต่างกันแล้วนั่น ก็จะมีเรื่องของ ขนาดหน้าจอเข้ามาเกี่ยวข้องด้วย คงอาจจะได้เคยเห็นกันมาบ้างแล้ว ว่าบางรุ่น ขนาดหน้าจอ 3.2 นิ้ว แต่ว่ามีความละเอียด 240*320 กับอีกรุ่น ที่ขนาดหน้าจอ 2.8นิ้ว แต่มี ความละเอียด 240*320เท่ากัน....  หรือ ตัวอย่างที่เห็นได้ชัดก็คือ HTC Desire ขนาดหน้าจอ 3.7 นิ้ว แต่มีความละเอียด 480*800 กับ  Wellcom A800 ขนาดหน้าจอ 7 นิ้ว แต่ก็มีความละเอียด 480*800 เท่ากัน ดังนั้น สิ่งที่จะเจอแน่ๆก็คือความละเอียดของหน้าจอที่แตกต่างกัน ทำให้ภาพที่ได้ แตก หรือไม่คมชัดตามที่ควรจะเป็น

สำหรับ android ก็ได้รองรับจุดนี้แล้ว ตั้งแต่ version  1.5 เป็นต้นมา เราสามารถทำ application ให้รองรับขนาดหน้าจอที่แตกต่างกันได้ โดยอาศัยการออกแบบที่เหมาะสำหรับแต่ละขนาดหน้าจอ เพื่อให้ภาพที่ได้ มีความสวย และคมชัดนั่นเอง

การจะทำความรู้จักให้มากขึ้น เราจำเป็นต้องรู้ศัพท์เหล่านี้ก่อน 

Screen size

ขนาดหน้าจอที่วัดตามจริง ในแบบทแยงมุม หรือ เป็นขนาดหน้าจอตามที่โฆษณาในแผ่นผับ เช่น 2.8 นิ้ว  3.2 นิ้ว 3.5 นิ้ว 3.8 นิ้ว 4.3 นิ้ว 7 นิ้ว เป็นต้น

โดย android จะทำการแบ่งจอเป็น 3 ประเภท คือ large, normal, small เพื่อแบ่งการออกแบบและแสดงผลได้อย่างสวยงามในขนาดหน้าจอแต่ละแบบ

Aspect ratio

เกิดมาจากความสัมพันธ์ของขนาดหน้าจอ ตามความกว้าง และยาวโดยจะมีการกำหนดออกมาเป็นสองแบบ คือ long และ not long ในการออกแบบ app

Resolution

ก็คือจำนวน pixel บนหน้าจอ โดยหาได้จาก ความกว้าง คูณ ความยาว โดยค่าดังกล่าวนี้ android จะไม่ได้เอามาใช้ตรงๆ แต่เดี๋ยวจะบอกอีกทีว่าใช้ตอนไหน

Density

อ้างอิงได้จาก screen resolution โดย screen ที่มี lower density จะมี pixel ที่ใหญ่กว่า higher density แต่บางทีก็ไม่จำเป็นเสมอไป เพราะว่าความใหญ่ของขนาด pixel มันก็ขึ้นอยู่กับขนาดหน้าจอจริงๆด้วย โดย Density นี้จะเป็นค่าที่มีความสำคัญ เพราะว่าส่งผลโดยตรงต่อ UI โดยอาจจะทำให้ปุ่มที่เราออกแบบมานั้น ขนาดใหญ่ในจอที่มีขนาดใหญ่ แต่จะเล็กลงในขนาดหน้าจอที่มีความละเอียด

โดย android นั้น จะมีการกำหนดประเภทของ density ไว้ 3 แบบคือ high, medium, low โดยเราจะออกแบบเพื่อให้สวยงามในแต่ละขนาดของหน้าจอได้ โดยปกติแล้ว android สามารถ scale ขนาดใหญ่หรือเล็ก ตาม density ที่พบ

Density-independent pixel (dip)

เป็นตัวเลขเพื่อกำหนดมาตรฐานในการออกแบบ UI โดยเกิดจากการคำนวนมาจาก dimension หรือ density

dip นี้จะเป็นค่าที่ตายตัวในแต่ละเครื่อง เพราะว่าขนาดหน้าจอและ pixel นั้นเป็นค่าที่คงที่อยู่แล้ว โดยเราจะมีการคำนวนหา pixel จาก dip ได้จากสูตร pixels = dip * (density/160)  ตัวอย่างเช่น จอขนาด 240 dpi, 1dip จะมีค่าเท่ากับ 1.5 pixel จริงๆ

ทำให้โปรแกรมรองรับขนาดหลายหน้าจอ

ตั้งแต่ android version 1.6 ขึ้นมามีการกำหนดความเพื่อให้เป็นมาตรฐานในการแสดงผล และการออกแบบ UI โดยมีการกำหนดดังนี้

 

  • size : มีสามแบบ ประกอบด้วย large, normal, small
  • density : มีสามแบบประกอบด้วย hdpi(high), mdpi(medium), ldpi(low)

ทั้งนี้ จากการกำหนดดังกล่าว ทำให้ผู้ที่ออกแบบ ไม่ต้องคอยระวังขนาดของหน้าจอ แบบจะมีขนาดกี่ pixel รวมดึงไม่ต้องคอยระวังเรื่องความละเอียด(density) ด้วย โดยออกแบบตามมาตรฐานที่กล่าวมาก็เพียงพอ แล้วเมื่อถึงเวลาที่จะแสดงผลจริง android จะจัดการเรื่องพวกนี้ให้เอง

 ขนาดโดยปกติของ ที่เป็นค่ากลาง จะถูกกำหนดไว้ที่ size: normal, density: mdpi โดยหากไม่ถูกกำหนดให้เป็นค่าอื่น ก็จะยึดตามนี้ไว้ทันที โดยในเครื่องรุ่น T-Mobile G1 (HTC Magic)ที่มีขนาดหน้าจอ HVGA ก็จะใช้ size: normal , density: mdpi ด้วย

และเพื่อให้เป็นตัวอย่างในการออกแบบเบื้องต้น ตัว emulator ของ android ก็จะมี resolution มาให้ทดสอบกันตามนี้

Low density (120), ldpi Medium density (160), mdpi High density (240), hdpi 
Small screen QVGA (240x320)
Normal screen WQVGA400 (240x400)
WQVGA432 (240x432)
HVGA (320x480) WVGA800 (480x800)
WVGA854 (480x854)
Large screen WVGA800* (480x800)
WVGA854* (480x854)
* To emulate this configuration, specify a custom density of 160 when creating an AVD that uses a WVGA800 or WVGA854 skin.

โดยข้อมูลจริง ที่ตรวจสอบเมื่อ 1 สิงหาคม 2553 พบว่า มีผู้ใช้งาน size: normal , density: hdpi คิดเป็น 51.2% และ size: normal ,density : mdpi คิดเป็น 45.9% และที่รองลงมาก็คือ size: small , density : ldpi คิดเป็น 2.3%

Low Density Medium Density High Density
Small 2.3%
Normal 0.4% 45.9% 51.2%
Large

ทั้งนี้ไม่ต้องเป็นห่วงมากนะครับเพราะว่า android มี class ให้เราเรียกใช้เพื่อตรวจสอบค่าเหล่านี้ของตัวเครื่องได้อยู่แล้วครับ เรามีหน้าที่ก็แค่ทำการ ออกแบบ เพื่อรองรับตามมาตรฐานเหล่านี้ก็เพียงพอครับ

Create: Modify : 2010-12-16 09:43:01 Read : 14142 URL :