ในทุกวันนี้ตลาดของมือถือแอนดรอยด์เริ่มมีการเปลี่ยนแปลงอยู่ตลอดเวลา ในยามที่ซักแบรนด์จะเปิดตัว Smartphone รุ่นใหม่ ก็มักจะมาพร้อมกับฟีเจอร์และสเปคที่มีการอัปเดตไปตามยุคสมัย แต่สิ่งหนึ่งที่น่าสนใจในช่วงนี้ก็คือเทรนด์ของ Screen Ratio (สัดส่วนหน้าจอ) ที่ไม่ใช่ 16:9 กันอีกต่อไป จนเจ้าของบล็อกรู้สึกอยากจะหยิบมาพูดถึงว่ามีอะไรที่นักพัฒนาจะต้องรู้บ้าง
ลาก่อนหน้าจอ 16:9
ในช่วงแรกๆของเทรนด์นี้จะเริ่มจาก LG G6 กับ Samsung Galaxy S8 ที่แหวกแนวของ Screen Ratio ซึ่งในมุมมองของนักพัฒนาในตอนแรกๆก็อาจจะรู้สึกทะแม่งๆอยู่พอสมควร แต่ทว่าเมื่อเวลาผ่านไปเรื่อยๆก็เริ่มเห็นว่ามันไม่ใช่แค่เทรนด์ที่จะมาแล้วก็ผ่านไปแล้วล่ะ เพราะว่าหลายๆแบรนด์ต่างก็พากันทำ Screen Ratio ที่ไม่ใช่ 16:9 อีกต่อไป เพื่ออำนวยความสะดวกให้กับผู้ใช้ที่สามารถเห็นข้อมูลบนหน้าจอได้เยอะขึ้น
แล้วมีหน้าจอแบบไหนบ้าง?
ถึงแม้ว่าหลายๆแบรนด์จะพากันทำหน้าจอที่ไม่ใช่ 16:9 เหมือนๆกัน แต่ละรุ่นแต่ละแบรนด์ก็ไม่ได้ใช้ Screen Ratio เหมือนกันอยู่ดี เพราะมีทั้ง 18:9, 18.5:9, 21:9 ไปจนถึง 25:9 ดังนั้นในมุมมองของนักพัฒนาไม่ควรยึดติดเฉพาะแค่ Screen Ratio ตัวไหนตัวหนึ่งเท่านั้น
แล้วนักพัฒนาต้องทำอะไรเพิ่มบ้าง?
หลักๆก็เป็นเรื่อง Layout น่ะแหละ ที่ต้องทำให้รองรับกับหน้าจอเหล่านี้ ซึ่งไม่น่าจะมีปัญหาอะไรถ้านักพัฒนาอิงตามบทความ แบ่ง Layout ให้รองรับหน้าจอทุกขนาดด้วย Configuration Qualifier กันเถอะ เพราะสุดท้ายแล้วเครื่องเหล่านี้ก็ยังอยู่ระหว่าง sw360dp
และ sw411dp
อยู่ดี
โดยปกติแล้วเมื่อเปิดแอปบนหน้าจอเหล่านี้ มักจะถูกบังคับให้แสดงเป็น 16:9 เพื่อป้องกันแอปหลายๆตัวแสดง Layout เพี้ยน เพราะยังไม่ได้ทำให้รองรับ ดังนั้นนักพัฒนาอยากทำให้รองรับก็ควรเพิ่ม Metadata ไว้ใน Android Manifest เพื่อบอกให้แต่ละเครื่องรู้ด้วย
<!-- AndroidManifest.xml -->
<manifest ...>
<application ...>
...
<meta-data
android:name="android.max_aspect"
android:value="2.1" />
</application>
</manifest>
สำหรับในปี 2024 เป็นต้นมา อุปกรณ์แอนดรอยด์ที่มีอัตราส่วนหน้าจอ 16:9 นั้นมีน้อยมากแล้ว จึงทำให้ระบบแอนดรอยด์เลือกที่จะแสดงแอปเต็มหน้าจอโดยไม่ต้องกำหนดค่า max_aspect
อีกต่อไป
นอกจากกำหนดด้วย Metadata แล้ว ถ้าผู้ที่หลงเข้ามาอ่านออกแบบ Layout ให้รองรับ Multi Window แล้วกำหนดค่าไว้ใน Android Manifest ดังนี้
<!-- AndroidManifest.xml -->
<manifest ...>
<application ...
android:resizeableActivity="true">
...
</application>
</manifest>
ถ้ากำหนด resizeableActivity
ก็ไม่จำเป็นต้องกำหนดค่า max_aspect
ก็ได้ เพราะถือว่าแอปนั้นรองรับกับหน้าจอทุกขนาดทันที
โดยสามารถดูข้อมูลเพิ่มเติมสำหรับเรื่องนี้ได้ที่ Update your app to take advantage of the larger aspect ratio on new Android flagship devices [Android Developers Blog]
และสิ่งที่ต้องระวังก็คือการดึงค่าหน้าจอจากเครื่องเหล่านี้มาใช้ในการคำนวณภายในแอป ว่าจะมีการคำนวณผิดพลาดหรือไม่
สรุป
เรื่องหน้าจอของอุปกรณ์แอนดรอยด์ถือเป็นเรื่องพื้นฐานที่นักพัฒนาต้องเข้าใจและทำให้แอปสามารถรองรับได้อยู่แล้ว แต่สิ่งที่ขาดไปไม่ได้เลยก็คือการหมั่นอัปเดตข่าวสารว่าทุกวันนี้เทคโนโลยีได้มีการเปลี่ยนแปลงอะไรบ้าง เพื่อทำให้นักพัฒนาแอนดรอยด์อย่างเราๆรู้ได้ว่าต้องทำอะไรเพิ่มบ้าง เพื่อให้แอปสามารถรองรับกับเครื่องรุ่นใหม่ๆได้ตลอดเวลา