สำหรับแท็บเล็ตรุ่นแรกที่ใช้ Android 3.0 วิธีที่เหมาะสมในการประกาศเลย์เอาต์ของแท็บเล็ตคือวางไว้ในไดเร็กทอรีที่มีคุณสมบัติการกำหนดค่า xlarge (ตัวอย่างเช่น res / layout-xlarge /) เพื่อให้รองรับแท็บเล็ตและขนาดหน้าจอประเภทอื่น ๆ โดยเฉพาะแท็บเล็ต 7 "Android 3.2 ขอแนะนำวิธีใหม่ในการระบุทรัพยากรสำหรับขนาดหน้าจอที่ไม่ต่อเนื่องกันมากขึ้นเทคนิคใหม่นี้ขึ้นอยู่กับจำนวนพื้นที่ที่คุณต้องการในการจัดวาง (เช่น ความกว้าง 600dp) แทนที่จะพยายามทำให้เค้าโครงของคุณพอดีกับกลุ่มขนาดทั่วไป (เช่นขนาดใหญ่หรือขนาดใหญ่)
เหตุผลในการออกแบบแท็บเล็ตขนาด 7 "นั้นยุ่งยากเมื่อใช้กลุ่มขนาดทั่วไปก็คือในทางเทคนิคแท็บเล็ต 7" อยู่ในกลุ่มเดียวกับโทรศัพท์มือถือ 5 "(กลุ่มใหญ่) ในขณะที่อุปกรณ์ทั้งสองนี้ดูเหมือนจะมีขนาดใกล้กัน จำนวนพื้นที่สำหรับ UI ของแอปพลิเคชันนั้นแตกต่างกันอย่างมากเช่นเดียวกับรูปแบบการโต้ตอบของผู้ใช้ดังนั้นหน้าจอขนาด 7 "และ 5" จึงไม่ควรใช้เค้าโครงเดียวกันเสมอไปเพื่อให้คุณสามารถจัดเตรียมเค้าโครงที่แตกต่างกันสำหรับสิ่งเหล่านี้ได้ หน้าจอสองประเภทตอนนี้ Android ช่วยให้คุณสามารถระบุทรัพยากรการจัดวางของคุณตามความกว้างและ / หรือความสูงที่มีอยู่จริงสำหรับเลย์เอาต์ของแอปพลิเคชันของคุณซึ่งระบุเป็นหน่วย dp
ตัวอย่างเช่นหลังจากที่คุณออกแบบเลย์เอาต์ที่คุณต้องการใช้สำหรับอุปกรณ์แบบแท็บเล็ตแล้วคุณอาจพิจารณาได้ว่าเค้าโครงจะหยุดทำงานได้ดีเมื่อหน้าจอกว้างน้อยกว่า 600dp เกณฑ์นี้จึงกลายเป็นขนาดขั้นต่ำที่คุณต้องการสำหรับการจัดวางแท็บเล็ตของคุณ ด้วยเหตุนี้คุณจึงระบุได้ว่าควรใช้ทรัพยากรโครงร่างเหล่านี้ก็ต่อเมื่อมีความกว้างอย่างน้อย 600dp สำหรับ UI ของแอปพลิเคชันของคุณ
คุณควรเลือกความกว้างและออกแบบให้เป็นขนาดขั้นต่ำของคุณหรือทดสอบความกว้างที่เล็กที่สุดที่เลย์เอาต์รองรับเมื่อเสร็จสมบูรณ์
หมายเหตุ: โปรดจำไว้ว่าตัวเลขทั้งหมดที่ใช้กับ API ขนาดใหม่เหล่านี้เป็นค่าพิกเซลที่ไม่ขึ้นกับความหนาแน่น (dp) และมิติเค้าโครงของคุณควรกำหนดโดยใช้หน่วย dp เสมอเนื่องจากสิ่งที่คุณสนใจคือจำนวนพื้นที่หน้าจอที่มีอยู่หลังจากระบบ บัญชีสำหรับความหนาแน่นของหน้าจอ (ตรงข้ามกับการใช้ความละเอียดพิกเซลแบบดิบ) สำหรับข้อมูลเพิ่มเติมเกี่ยวกับพิกเซลที่ไม่ขึ้นกับความหนาแน่นโปรดอ่านข้อกำหนดและแนวคิดก่อนหน้านี้ในเอกสารนี้ การใช้ตัวระบุขนาดใหม่
การกำหนดค่าทรัพยากรต่างๆที่คุณสามารถระบุได้ตามพื้นที่ว่างสำหรับเลย์เอาต์ของคุณได้สรุปไว้ในตารางที่ 2 คุณสมบัติใหม่เหล่านี้ช่วยให้คุณควบคุมขนาดหน้าจอเฉพาะที่แอปพลิเคชันของคุณรองรับได้มากขึ้นเมื่อเทียบกับกลุ่มขนาดหน้าจอแบบเดิม (เล็กปกติ ใหญ่และ xlarge)
หมายเหตุ: ขนาดที่คุณระบุโดยใช้คุณสมบัติเหล่านี้ไม่ใช่ขนาดหน้าจอจริง แต่ขนาดมีไว้สำหรับความกว้างหรือความสูงในหน่วย dp ที่พร้อมใช้งานสำหรับหน้าต่างกิจกรรมของคุณ ระบบ Android อาจใช้หน้าจอบางส่วนสำหรับ UI ของระบบ (เช่นแถบระบบที่ด้านล่างของหน้าจอหรือแถบสถานะที่ด้านบน) ดังนั้นหน้าจอบางส่วนอาจไม่พร้อมใช้งานสำหรับเค้าโครงของคุณ ดังนั้นขนาดที่คุณประกาศควรเป็นขนาดที่จำเป็นสำหรับกิจกรรมของคุณโดยเฉพาะระบบจะคำนวณพื้นที่ใด ๆ ที่ UI ของระบบใช้เมื่อประกาศว่ามีพื้นที่เท่าใดสำหรับเลย์เอาต์ของคุณ นอกจากนี้โปรดระวังว่า Action Bar ถือเป็นส่วนหนึ่งของพื้นที่หน้าต่างของแอปพลิเคชันของคุณแม้ว่าเค้าโครงของคุณจะไม่ได้ประกาศไว้ก็ตามดังนั้นจะช่วยลดพื้นที่ว่างสำหรับเลย์เอาต์ของคุณและคุณต้องคำนึงถึงมันในการออกแบบของคุณ
ตารางที่ 2. คุณสมบัติการกำหนดค่าใหม่สำหรับขนาดหน้าจอ (แนะนำใน Android 3.2) การกำหนดค่าหน้าจอค่า Qualifier คำอธิบายขนาดเล็กที่สุดความกว้าง swdp
ตัวอย่าง: sw600dp sw720dp
ขนาดพื้นฐานของหน้าจอตามขนาดที่สั้นที่สุดของพื้นที่หน้าจอที่มี โดยเฉพาะอย่างยิ่งความกว้างที่เล็กที่สุดของอุปกรณ์คือความสูงและความกว้างที่สั้นที่สุดของหน้าจอ (คุณอาจคิดว่าเป็น "ความกว้างที่เล็กที่สุดเท่าที่จะเป็นไปได้" สำหรับหน้าจอ) คุณสามารถใช้คุณสมบัตินี้เพื่อให้แน่ใจว่าแอปพลิเคชันของคุณมีความกว้างอย่างน้อย dps สำหรับ UI โดยไม่คำนึงถึงการวางแนวปัจจุบันของหน้าจอ
ตัวอย่างเช่นหากเลย์เอาต์ของคุณต้องการให้พื้นที่หน้าจอมีขนาดเล็กที่สุดอย่างน้อย 600 dp ตลอดเวลาคุณสามารถใช้คุณสมบัตินี้เพื่อสร้างทรัพยากรการจัดวาง res / layout-sw600dp / ระบบจะใช้ทรัพยากรเหล่านี้เฉพาะเมื่อขนาดที่เล็กที่สุดของหน้าจอที่มีอยู่อย่างน้อย 600dp ไม่ว่าด้าน 600dp จะเป็นความสูงหรือความกว้างที่ผู้ใช้รับรู้ ความกว้างที่เล็กที่สุดคือลักษณะขนาดหน้าจอคงที่ของอุปกรณ์ ความกว้างที่เล็กที่สุดของอุปกรณ์จะไม่เปลี่ยนแปลงเมื่อการวางแนวหน้าจอเปลี่ยนไป
ความกว้างของอุปกรณ์ที่เล็กที่สุดคำนึงถึงการตกแต่งหน้าจอและ UI ของระบบ ตัวอย่างเช่นหากอุปกรณ์มีองค์ประกอบ UI ที่คงอยู่บนหน้าจอซึ่งคำนึงถึงพื้นที่ตามแกนของความกว้างที่เล็กที่สุดระบบจะประกาศให้ความกว้างที่เล็กที่สุดมีขนาดเล็กกว่าขนาดหน้าจอจริงเนื่องจากเป็นพิกเซลของหน้าจอที่ไม่มีให้สำหรับ UI ของคุณ
นี่เป็นอีกทางเลือกหนึ่งของตัวระบุขนาดหน้าจอทั่วไป (เล็กปกติใหญ่ xlarge) ที่ช่วยให้คุณกำหนดตัวเลขที่ไม่ต่อเนื่องสำหรับขนาดที่มีประสิทธิภาพสำหรับ UI ของคุณ การใช้ขนาดเล็กที่สุดในการกำหนดขนาดหน้าจอทั่วไปมีประโยชน์เนื่องจากความกว้างมักเป็นปัจจัยผลักดันในการออกแบบเค้าโครง UI มักจะเลื่อนในแนวตั้ง แต่มีข้อ จำกัด ค่อนข้างยากเกี่ยวกับพื้นที่ขั้นต่ำที่ต้องการในแนวนอน ความกว้างที่พร้อมใช้งานยังเป็นปัจจัยสำคัญในการพิจารณาว่าจะใช้เค้าโครงแบบบานหน้าต่างเดียวสำหรับโทรศัพท์มือถือหรือเค้าโครงหลายบานสำหรับแท็บเล็ต ดังนั้นคุณน่าจะสนใจมากที่สุดเกี่ยวกับความกว้างที่เล็กที่สุดเท่าที่จะเป็นไปได้ในแต่ละอุปกรณ์ ความกว้างของหน้าจอ wdp
ตัวอย่าง: w720dp w1024dp
ระบุความกว้างต่ำสุดที่พร้อมใช้งานในหน่วย dp ที่ทรัพยากรควรใช้ - กำหนดโดยค่า ค่าที่สอดคล้องกันของระบบสำหรับความกว้างจะเปลี่ยนไปเมื่อการวางแนวหน้าจอสลับไปมาระหว่างแนวนอนและแนวตั้งเพื่อสะท้อนความกว้างจริงในปัจจุบันที่มีให้สำหรับ UI ของคุณ
สิ่งนี้มักมีประโยชน์ในการพิจารณาว่าจะใช้เค้าโครงหลายบานหรือไม่เพราะแม้กระทั่งบนอุปกรณ์แท็บเล็ตคุณก็มักจะไม่ต้องการเค้าโครงหลายบานหน้าต่างเดียวกันสำหรับการวางแนวตั้งเหมือนกับที่คุณทำสำหรับแนวนอน ดังนั้นคุณสามารถใช้สิ่งนี้เพื่อระบุความกว้างขั้นต่ำที่จำเป็นสำหรับเค้าโครงแทนที่จะใช้ทั้งขนาดหน้าจอและคุณสมบัติการวางแนวร่วมกัน ความสูงของหน้าจอที่มีอยู่ hdp
ตัวอย่าง: h720dp h1024dp เป็นต้น
ระบุความสูงขั้นต่ำของหน้าจอในหน่วย dp ที่ควรใช้ทรัพยากร - กำหนดโดยค่า ค่าที่สอดคล้องกันของระบบสำหรับความสูงจะเปลี่ยนไปเมื่อการวางแนวของหน้าจอสลับไปมาระหว่างแนวนอนและแนวตั้งเพื่อสะท้อนความสูงจริงในปัจจุบันที่มีให้สำหรับ UI ของคุณ
การใช้สิ่งนี้เพื่อกำหนดความสูงที่ต้องการโดยเค้าโครงของคุณมีประโยชน์ในลักษณะเดียวกับ wdp สำหรับกำหนดความกว้างที่ต้องการแทนที่จะใช้ทั้งขนาดหน้าจอและคุณสมบัติการวางแนว อย่างไรก็ตามแอปส่วนใหญ่ไม่จำเป็นต้องมีคุณสมบัตินี้เนื่องจาก UI มักจะเลื่อนในแนวตั้งดังนั้นจึงมีความยืดหยุ่นมากขึ้นตามความสูงที่มีในขณะที่ความกว้างนั้นเข้มงวดกว่า
แม้ว่าการใช้คุณสมบัติเหล่านี้อาจดูซับซ้อนกว่าการใช้กลุ่มขนาดหน้าจอ แต่จริงๆแล้วควรจะง่ายกว่าเมื่อคุณกำหนดข้อกำหนดสำหรับ UI ของคุณแล้ว เมื่อคุณออกแบบ UI สิ่งสำคัญที่คุณอาจสนใจคือขนาดจริงที่แอปพลิเคชันของคุณสลับไปมาระหว่าง UI สไตล์โทรศัพท์มือถือและ UI แบบแท็บเล็ตที่ใช้บานหน้าต่างหลายบาน จุดที่แน่นอนของสวิตช์นี้จะขึ้นอยู่กับการออกแบบเฉพาะของคุณบางทีคุณอาจต้องการความกว้าง 720dp สำหรับเลย์เอาต์แท็บเล็ตของคุณอาจจะ 600dp ก็เพียงพอแล้วหรือ 480dp หรือตัวเลขระหว่างสิ่งเหล่านี้ การใช้คุณสมบัติเหล่านี้ในตารางที่ 2 คุณสามารถควบคุมขนาดที่แน่นอนที่จะเปลี่ยนแปลงเค้าโครงของคุณได้
สำหรับการอภิปรายเพิ่มเติมเกี่ยวกับคุณสมบัติการกำหนดค่าขนาดเหล่านี้โปรดดูเอกสารการให้ทรัพยากร ตัวอย่างการกำหนดค่า
เพื่อช่วยคุณกำหนดเป้าหมายการออกแบบบางอย่างสำหรับอุปกรณ์ประเภทต่างๆตัวเลขบางส่วนสำหรับความกว้างหน้าจอทั่วไปมีดังนี้
320dp: a typical phone screen (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, etc).
480dp: a tweener tablet like the Streak (480x800 mdpi).
600dp: a 7” tablet (600x1024 mdpi).
720dp: a 10” tablet (720x1280 mdpi, 800x1280 mdpi, etc).
การใช้ตัวกำหนดขนาดจากตารางที่ 2 แอปพลิเคชันของคุณสามารถสลับไปมาระหว่างทรัพยากรรูปแบบต่างๆสำหรับโทรศัพท์มือถือและแท็บเล็ตโดยใช้ตัวเลขที่คุณต้องการสำหรับความกว้างและ / หรือความสูง ตัวอย่างเช่นหาก 600dp เป็นความกว้างที่เล็กที่สุดที่มีที่รองรับโดยเลย์เอาต์แท็บเล็ตของคุณคุณสามารถจัดเตรียมเค้าโครงสองชุดนี้ได้:
res / layout / main_activity.xml # สำหรับโทรศัพท์มือถือ res / layout-sw600dp / main_activity.xml # สำหรับแท็บเล็ต
ในกรณีนี้ความกว้างที่เล็กที่สุดของพื้นที่หน้าจอที่มีอยู่จะต้องเป็น 600dp เพื่อให้สามารถใช้รูปแบบแท็บเล็ตได้
สำหรับกรณีอื่น ๆ ที่คุณต้องการปรับแต่ง UI เพิ่มเติมเพื่อแยกความแตกต่างระหว่างขนาดเช่นแท็บเล็ต 7” และ 10” คุณสามารถกำหนดเค้าโครงความกว้างที่เล็กที่สุดเพิ่มเติมได้:
res / layout / main_activity.xml # สำหรับโทรศัพท์มือถือ (มีความกว้างน้อยกว่า 600dp) res / layout-sw600dp / main_activity.xml # สำหรับแท็บเล็ตขนาด 7 นิ้ว (กว้าง 600dp และใหญ่กว่า) res / layout-sw720dp / main_activity.xml
สำหรับแท็บเล็ตขนาด 10 นิ้ว (กว้าง 720dp ขึ้นไป)
โปรดสังเกตว่าทรัพยากรตัวอย่างสองชุดก่อนหน้านี้ใช้ตัวระบุ "ความกว้างน้อยที่สุด" คือ swdp ซึ่งระบุด้านที่เล็กที่สุดของหน้าจอทั้งสองด้านโดยไม่คำนึงถึงการวางแนวปัจจุบันของอุปกรณ์ ดังนั้นการใช้ swdp จึงเป็นวิธีง่ายๆในการระบุขนาดหน้าจอโดยรวมที่มีให้สำหรับเลย์เอาต์ของคุณโดยไม่สนใจการวางแนวหน้าจอ
อย่างไรก็ตามในบางกรณีสิ่งที่สำคัญสำหรับการจัดวางของคุณคือความกว้างหรือความสูงที่มีอยู่ในปัจจุบัน ตัวอย่างเช่นหากคุณมีเค้าโครงสองบานที่มีชิ้นส่วนสองชิ้นอยู่เคียงข้างกันคุณอาจต้องการใช้เมื่อใดก็ตามที่หน้าจอมีความกว้างอย่างน้อย 600dp ไม่ว่าอุปกรณ์จะอยู่ในแนวนอนหรือแนวตั้ง ในกรณีนี้ทรัพยากรของคุณอาจมีลักษณะดังนี้:
res / layout / main_activity.xml # สำหรับโทรศัพท์มือถือ (มีความกว้างน้อยกว่า 600dp) res / layout-w600dp / main_activity.xml # Multi-pane (หน้าจอใดก็ได้ที่มีความกว้าง 600dp ขึ้นไป)
สังเกตว่าชุดที่สองใช้ qualifier "available width", wdp ด้วยวิธีนี้อุปกรณ์เครื่องหนึ่งอาจใช้ทั้งสองรูปแบบขึ้นอยู่กับการวางแนวของหน้าจอ (หากความกว้างที่มีอยู่อย่างน้อย 600dp ในแนวเดียวและน้อยกว่า 600dp ในการวางแนวอื่น)
หากความสูงที่มีอยู่เป็นปัญหาสำหรับคุณคุณสามารถทำได้โดยใช้คุณสมบัติ hdp หรือแม้กระทั่งรวมคุณสมบัติ wdp และ hdp ถ้าคุณต้องการเฉพาะเจาะจงจริงๆ