ในที่สุดก็สร้างโครงสร้างที่จัดการเลย์เอาต์และไอคอนสำหรับหลายหน้าจอ
อุปกรณ์ทั่วไปของ Android แสดงเป็นหมวดหมู่ตามพารามิเตอร์สองตัว:
- ขนาดหน้าจอขนาดจริงของจอแสดงผล (วัดตามแนวทแยงมุม)
- ความหนาแน่นของหน้าจอความหนาแน่นของพิกเซลจริงของจอแสดงผล (เป็นพิกเซลต่อนิ้วหรือ ppi) "
หากต้องการกำหนดขนาดหน้าจอและความหนาแน่นอย่างรวดเร็วโปรดติดตั้งแอป " ขนาดเท่าไหร่ " สำหรับ Android
ขนาดหน้าจอ
Android กำหนดขนาดหน้าจอทั่วไปสี่ขนาด:
Qualifier Size
small ~3 inches (approx)
normal ~4 inches (approx)
large Exceeds 4 inches
xlarge Exceeds 7 inches
- โทรศัพท์ส่วนใหญ่จัดว่ามีขนาดเล็กหรือปกติ (ประมาณ 3 ถึง 4 นิ้วตามแนวทแยงมุม) แต่ตอนนี้มีโทรศัพท์หลายรุ่นที่มีหน้าจอขนาดใหญ่เช่น Galaxy S4, HTC One, Xperia Z
- แท็บเล็ตขนาดเล็กเช่น Samsung Galaxy Tab จัดอยู่ในประเภทที่มีขนาดใหญ่ (ใหญ่กว่า 4 นิ้ว)
- ขนาดใหญ่พิเศษใช้กับอุปกรณ์ขนาดใหญ่เช่นแท็บเล็ตขนาดใหญ่
Android กำหนดความหนาแน่นของหน้าจอโดยทั่วไปสี่ประการ:
Qualifier Description Nominal value
ldpi low density 120 ppi
mdpi medium density 160 ppi
hdpi high density 240 ppi
xhdpi extra high density 320 ppi
โดยปกติ:
- ขนาดหน้าจอมีผลต่อเค้าโครงแอปของคุณมากที่สุด
- ความหนาแน่นของหน้าจอมีผลต่อทรัพยากรรูปภาพและกราฟิกของคุณมากที่สุด
มันเป็นรายการที่นี่แตกต่างร้อยละของหน้าจอของอุปกรณ์
- Ldpi - 75%
- Mdpi- 100% (ฐานตามเว็บไซต์นักพัฒนา Android)
- Hdpi - 150%
- XHdpi - 200%
แต่อย่างที่เราทราบกันดีว่าตอนนี้อุปกรณ์ส่วนใหญ่มาพร้อม480X800ดังนั้นฉันจึงถือว่านี่เป็นอุปกรณ์พื้นฐานดังนั้นการคำนวณใหม่ของเราจะเป็นเช่นนี้
- Ldpi - 50%
- Mdpi - 66.67%
- Hdpi - 100%
- XHdpi - 133.33%
ซึ่งหมายความว่าไอคอนแรกและการออกแบบจะถูกสร้างขึ้นสำหรับ480X800เท่านั้นจากนั้นสำหรับไอคอนที่เหลือ (เช่น Ldpi, Mdpi, Xhdpi)
มีรูปภาพที่ใช้กันทั่วไปสำหรับการจัดวางทั้งหมดและต้องมีสีและรูปร่างสม่ำเสมอกัน (ไม่มีรูปร่างที่ซับซ้อนไม่มีเส้นโค้ง) ดังนั้นสำหรับภาพประเภทนี้เรากำลังสร้าง9patch
ซึ่งจะใส่ไว้ในโฟลเดอร์ "drawable (ไม่มีคำต่อท้าย)" ในการสร้างภาพ 9Patch คุณสามารถใช้DrawNinePatchหรือBetterNinePatch
ตอนนี้เพียงแค่เปลี่ยนชื่อรูปภาพของคุณตามมาตรฐานของ Android และกรอกแอปพลิเคชันของคุณด้วยhdpi
จากนั้นใช้drawable-hdpi
โฟลเดอร์และเปิดAdode Photoshop (แนะนำ) สร้างActionของหลายขนาด (เพียงแค่เปลี่ยนขนาดตามอัตราส่วนเปอร์เซ็นต์) เมื่อ Action สร้างขึ้นสำหรับทุกขนาดแล้วก็ทำBatch Automateและให้ต้นทาง (drawable-hdpi) และปลายทาง (drawable-ldpi, drawable-mdpi, drawable-xdpi)
เหตุผลที่ฉันยืนยันให้คุณใช้ Photoshop เพราะมันจะปรับขนาดภาพของคุณโดยอัตโนมัติด้วย Actions และข้อดีอีกอย่างหนึ่งคือคุณไม่จำเป็นต้องเปลี่ยนชื่อไฟล์ (มันจะกำหนดชื่อเดียวกันกับไฟล์ต้นฉบับ)
เมื่อคุณสร้างภาพทั้งหมดเสร็จแล้วให้รีเฟรชโปรเจ็กต์ของคุณและทดสอบ
บางครั้งอาจมีความเป็นไปได้ที่เค้าโครงที่รองรับหน้าจอ (xhdpi, hdpi, mdpi) อาจถูกตัดในหน้าจอขนาดเล็ก (ldpi) ดังนั้นสำหรับการจัดการสิ่งนี้เพียงแค่สร้างโฟลเดอร์ Layout แยกต่างหาก (เค้าโครงขนาดเล็ก) สำหรับมันและเพิ่มScrollView
(ส่วนใหญ่) แค่นั้นแหละ.
แท็บเล็ตแท็บเล็
ตแบ่งออกเป็นสองขนาด
- 7 "(1024X (600-48 (แถบนำทาง))) = 1024X552 (ขนาดใหญ่ที่วาดได้)
- 10 "(1280X (800-48 (แถบนำทาง))) = 1280X752 (drawable-xlarge)
ในการนี้เราต้องสร้างภาพสำหรับทั้งหน้าจอและวางตามนั้น
ดังนั้นโดยรวมแล้วเราจะมีโฟลเดอร์นี้ในแอปพลิเคชันของเราเพื่อรองรับหลายหน้าจอ
drawable
drawable-ldpi
drawable-mdpi
drawable-hdpi
drawable-xhdpi
drawable-large
drawable-xlarge
จะมีคุณสมบัติมากขึ้นรวมกับ Screen size and Screen density
drawable-large-ldpi
drawable-large-mdpi
drawable-large-hdpi
drawable-large-xhdpi
รอบคัดเลือกมากขึ้นด้วย Screen density and Version
drawable-ldpi-v11
drawable-mdpi-v11
drawable-hdpi-v11
drawable-xhdpi-v11
และคุณสมบัติอื่น ๆ ด้วย Screen size and Version
drawable-large-v11
drawable-xlarge-v11
และคุณสมบัติอื่น ๆ ด้วย Smallest width concept(SW)
drawable-sw???dp
ยิ่งไปกว่านั้นใน Android V3.0 Honeycomb พวกเขาได้นำเสนอแนวคิดใหม่SW(smallest width)
ในการจัดหมวดหมู่อุปกรณ์ตามความกว้างของหน้าจอดังนั้นหากเราสร้างโฟลเดอร์ที่มีชื่อdrawable-sw360dp
อุปกรณ์ที่มี 720dp (ทั้งความกว้างหรือความสูง) จะใช้ทรัพยากรจากโฟลเดอร์นี้
ตัวอย่างเช่นในการค้นหาSamsung Galaxy S3
dp to ต่อท้ายเพื่อdrawable-sw? dp
ด้วยการอ้างอิงของการคำนวณ DPหากคุณต้องการสนับสนุนเค้าโครงของคุณหรือวาดได้ไปยัง S3 การคำนวณจะบอกว่า
px = ความกว้างของอุปกรณ์ = 720
dpi = ความหนาแน่นของอุปกรณ์ = 320
สูตรที่กำหนด
px = dp * (dpi / 160)
สูตรแลกเปลี่ยนกันเพราะเรามีค่าของ px
dp = px / (dpi / 160)
ตอนนี้ใส่คุณค่า
dp= 720 / (320/160)
dp=360.
ดังนั้นdrawable-sw360dp
จะทำงาน
ให้คุณกำหนดค่าอุปกรณ์จากGsmArena
Sameway คุณยังสามารถสร้างโฟลเดอร์ตามเวอร์ชัน Android API ของอุปกรณ์เช่น drawable-hdpi-v11` ดังนั้นอุปกรณ์ที่มี API11 และเป็น Hdpi ก็จะใช้ทรัพยากรนี้
เคล็ดลับเพิ่มเติม:
ใช้เลย์เอาต์ที่สัมพันธ์กัน dp, sp และ mm
หน่วย dp - พิกเซลอิสระของอุปกรณ์ที่ปรับให้เป็นพิกเซลทางกายภาพ 1 พิกเซลบนหน้าจอ 160 ppi คือความหนาแน่นปานกลาง ปรับขนาดที่รันไทม์ ใช้สำหรับขนาดองค์ประกอบหน้าจอ
หน่วย sp - พิกเซลที่ปรับขนาดซึ่งระบุเป็นค่าทศนิยมตามหน่วย dp แต่ปรับขนาดเพิ่มเติมสำหรับการตั้งค่าขนาดแบบอักษรของผู้ใช้ ปรับขนาดที่รันไทม์ ใช้สำหรับขนาดตัวอักษร
คุณควรใช้ RelativeLayout สำหรับเลย์เอาต์เสมอ AbsoluteLayout เลิกใช้งานแล้วและไม่ควรใช้
ใช้รูปแบบภาพที่เหมาะสม - PNG เทียบกับ JPEG
Android "prefers" PNG for bitmap image files, "accepts" JPEG, and "discourages" GIF.
อย่างไรก็ตาม PNG และ JPEG ไม่เทียบเท่ากัน พวกเขามีการแลกเปลี่ยนคุณภาพที่แตกต่างกันและ PNG ไม่ได้ดีที่สุดเสมอไป:
JPEGสามารถลดขนาดไฟล์ได้ถึง 50% เมื่อเทียบกับ PNG ซึ่งสำคัญมากหากแอปของคุณใช้ภาพมาก
JPEG "lossy" คุณภาพสูงกว่าอาจดูดีกว่า PNG "lossless" ที่บีบอัดสูงสำหรับขนาดไฟล์เดียวกัน
เพิ่มป้ายกำกับให้กับรูปภาพและกราฟิกของคุณสำหรับการดีบัก
ใช้องค์ประกอบรองรับหน้าจอ
กำหนดค่าอีมูเลเตอร์ของคุณด้วยค่าอุปกรณ์จริง
ตามปกติแล้วระบบเดสก์ท็อปจะแสดงที่ 72ppi (Mac) หรือ 96ppi (Windows, Linux) เมื่อเทียบกับมือถือแล้วหน้าจอเดสก์ท็อปมักมีความหนาแน่นต่ำ
กำหนดค่าตัวเลียนแบบ Android ของคุณให้เลียนแบบค่าอุปกรณ์จริงเสมอและตั้งค่าให้ปรับขนาดเพื่อจำลองความหนาแน่นของอุปกรณ์
ใน Eclipse คุณสามารถสร้างอีมูเลเตอร์หลายตัวได้อย่างง่ายดาย (จากแถบเมนู Eclipse เลือกWindow> AVD Manager> New ) ที่กำหนดค่าด้วยค่าสำหรับอุปกรณ์จริง:
ตั้งชื่อโปรแกรมจำลองสำหรับอุปกรณ์จริงที่จำลองการระบุความละเอียดอย่าใช้ขนาดทั่วไปในตัวตั้งค่าความหนาแน่นของอุปกรณ์ให้ตรงกับอุปกรณ์จริง (ในบานหน้าต่างฮาร์ดแวร์ตั้งค่าคุณสมบัติ LCD แบบนามธรรมเป็นความหนาแน่นจริงโดยจะเป็นค่าจำนวนเต็มเสมอ)
เมื่อคุณเปิดอุปกรณ์ให้เลือกปรับขนาดการแสดงผลเป็นขนาดจริงเสมอและพิมพ์ขนาดหน้าจอจริงเป็นนิ้ว
หากคุณไม่ได้ตั้งค่าความหนาแน่นของอุปกรณ์โปรแกรมจำลองจะตั้งค่าเริ่มต้นเป็นความหนาแน่นต่ำและจะโหลดทรัพยากรเฉพาะ ldpi เสมอ ความละเอียด (ขนาดพิกเซล) จะถูกต้อง แต่ทรัพยากรรูปภาพที่ขึ้นอยู่กับความหนาแน่นของคุณจะไม่แสดงตามที่ต้องการ
แน่นอนว่าคุณไม่ทำอะไรเลยที่จะสร้างคุณภาพของภาพที่มีความหนาแน่นสูงขึ้นบนหน้าจอเดสก์ท็อปที่มีความหนาแน่นต่ำกว่า
นี่คือข้อมูลที่รวบรวมในช่วง 7 วันซึ่งสิ้นสุดในวันที่ 1 ตุลาคม 2555 หากต้องการดูสถิติล่าสุดเกี่ยวกับเวอร์ชันแพลตฟอร์ม Android ไปที่นี่
ขึ้นอยู่กับขนาดหน้าจอ
ขึ้นอยู่กับความหนาแน่นของหน้าจอ