ข่าวสารเกี่ยวกับผลิตภัณฑ์
เตรียมแอปให้พร้อมสำหรับการเปลี่ยนแปลงความสามารถในการปรับขนาดและการวางแนวใน Android 17
ใช้เวลาอ่าน 6 นาที
เมื่อเปิดตัว Android 16 ในปี 2025 เราได้แชร์วิสัยทัศน์เกี่ยวกับระบบนิเวศของอุปกรณ์ที่แอปจะปรับให้เข้ากับหน้าจอทุกประเภทได้อย่างราบรื่น ไม่ว่าจะเป็นโทรศัพท์ อุปกรณ์พับได้ แท็บเล็ต เดสก์ท็อป จอแสดงผลในรถยนต์ หรือ XR ผู้ใช้คาดหวังว่าแอปจะทำงานได้ทุกที่ ไม่ว่าจะทำงานหลายอย่างพร้อมกันในแท็บเล็ต กางอุปกรณ์ออกเพื่ออ่านอย่างสะดวกสบาย หรือเรียกใช้แอปในสภาพแวดล้อมหน้าต่างเดสก์ท็อป ผู้ใช้คาดหวังว่า UI จะแสดงเต็มพื้นที่ที่ใช้ได้และปรับให้เข้ากับท่าทางของอุปกรณ์
เราได้ แนะนำการเปลี่ยนแปลงที่สำคัญ ใน API การวางแนวและความสามารถในการปรับขนาดเพื่อช่วยให้เกิดลักษณะการทำงานที่ปรับเปลี่ยนได้ พร้อมทั้งมีตัวเลือกให้เลือกไม่ใช้ชั่วคราวเพื่อช่วยคุณในการเปลี่ยนผ่าน เราได้เห็นนักพัฒนาแอปจำนวนมากปรับตัวให้เข้ากับการเปลี่ยนผ่านนี้ได้สำเร็จเมื่อกำหนดเป้าหมายเป็น API ระดับ 36
ตอนนี้เมื่อมีการเปิดตัว Android 17 รุ่นเบต้า เรากำลังก้าวเข้าสู่ระยะต่อไปของแผนงานการปรับเปลี่ยนได้ นั่นคือ Android 17 (ระดับ API 37) จะนำตัวเลือกให้นักพัฒนาแอปเลือกไม่ใช้ข้อจำกัดด้านการวางแนวและความสามารถในการปรับขนาดในอุปกรณ์หน้าจอขนาดใหญ่ (sw > 600 dp) ออก เมื่อกำหนดเป้าหมายเป็นระดับ API 37 แอปของคุณต้องปรับให้เข้ากับขนาดจอแสดงผลที่หลากหลายได้
การเปลี่ยนแปลงลักษณะการทำงานจะช่วยให้ระบบนิเวศของ Android มอบประสบการณ์การใช้งานที่มีคุณภาพสูงและสอดคล้องกันในอุปกรณ์ทุกรูปแบบ
สิ่งที่เปลี่ยนแปลงใน Android 17
แอปที่กำหนดเป้าหมายเป็น Android 17 ต้องตรวจสอบความเข้ากันได้กับแอตทริบิวต์ Manifest และ API รันไทม์ที่เปิดตัวใน Android 16 เราทราบดีว่าการเปลี่ยนแปลงนี้อาจเป็นการเปลี่ยนผ่านครั้งใหญ่สำหรับบางแอป เราจึงได้รวมแนวทางปฏิบัติแนะนำและเครื่องมือที่จะช่วยหลีกเลี่ยงปัญหาที่พบบ่อยไว้ในบล็อกโพสต์นี้
ไม่มีการเปลี่ยนแปลงใหม่ตั้งแต่ Android 16 แต่ตัวเลือกให้นักพัฒนาแอปเลือกไม่ใช้จะไม่มีอีกต่อไป โปรดทราบว่าเมื่อแอปทำงานบนหน้าจอขนาดใหญ่ ซึ่ง หน้าจอขนาดใหญ่ หมายความว่าขนาดที่เล็กกว่าของจอแสดงผลมีขนาดตั้งแต่ 600 dp ขึ้นไป ระบบจะละเว้นแอตทริบิวต์ไฟล์ Manifest และ API ต่อไปนี้
หมายเหตุ: ดังที่กล่าวไว้ก่อนหน้านี้ใน Android 16 การเปลี่ยนแปลงเหล่านี้ไม่มีผลกับหน้าจอที่มีขนาดเล็กกว่า sw 600 dp หรือแอปที่จัดอยู่ในหมวดหมู่เกมตามแฟล็ก android:appCategory
| แอตทริบิวต์/API ของ Manifest | ค่าที่ละเว้น |
| screenOrientation | portrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape |
| setRequestedOrientation() | portrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape |
| resizeableActivity | all |
| minAspectRatio | all |
| maxAspectRatio | all |
นอกจากนี้ ผู้ใช้ยังคงควบคุมได้ ในการตั้งค่าสัดส่วนภาพ ผู้ใช้สามารถเลือกใช้ลักษณะการทำงานที่แอปขอได้อย่างชัดเจน
เตรียมแอปให้พร้อม
แอปจะต้องรองรับเลย์เอาต์แนวนอนและแนวตั้งสำหรับขนาดจอแสดงผลในสัดส่วนภาพทุกช่วงที่ผู้ใช้เลือกใช้แอปได้ ซึ่งรวมถึงหน้าต่างที่ปรับขนาดได้ เนื่องจากจะไม่มีวิธีจำกัดสัดส่วนภาพและการวางแนวเป็นแนวตั้งหรือแนวนอนอีกต่อไป
ทดสอบแอป
ขั้นตอนแรกคือการทดสอบแอปกับการเปลี่ยนแปลงเหล่านี้เพื่อให้แน่ใจว่าแอปทำงานได้ดีในขนาดจอแสดงผลต่างๆ
ใช้ Android 17 รุ่นเบต้า 1 กับโปรแกรมจำลอง Pixel Tablet และ Pixel Fold Series ใน Android Studio แล้วตั้งค่า targetSdkPreview = “CinnamonBun” หรือคุณจะใช้เฟรมเวิร์กความเข้ากันได้ของแอปโดยเปิดใช้แฟล็กUNIVERSAL_RESIZABLE_BY_DEFAULTก็ได้หากแอปยังไม่ได้กำหนดเป้าหมายเป็นระดับ API เป้าหมาย 36
เรามีเครื่องมือเพิ่มเติมที่จะช่วยให้เลย์เอาต์ปรับเปลี่ยนได้อย่างถูกต้อง คุณสามารถตรวจสอบ UI โดยอัตโนมัติและรับคำแนะนำเพื่อทำให้ UI ปรับเปลี่ยนได้มากขึ้นด้วย Compose UI Check และจำลองลักษณะเฉพาะของจอแสดงผลในการทดสอบโดยใช้ DeviceConfigurationOverride
สำหรับแอปที่จำกัดการวางแนวและสัดส่วนภาพมาโดยตลอด เรามักจะเห็นปัญหาเกี่ยวกับพรีวิวของกล้องที่บิดเบี้ยวหรือวางแนวไม่ถูกต้อง เลย์เอาต์ที่ยืดออก ปุ่มที่เข้าถึงไม่ได้ หรือข้อมูลสถานะของผู้ใช้สูญหายเมื่อจัดการการเปลี่ยนแปลงการกำหนดค่า
มาดูกลยุทธ์บางอย่างในการแก้ไขปัญหาที่พบบ่อยเหล่านี้กัน
ตรวจสอบความเข้ากันได้ของกล้อง
ปัญหาที่พบบ่อยในอุปกรณ์พับได้แนวนอนหรือสำหรับการคำนวณสัดส่วนภาพในสถานการณ์ต่างๆ เช่น หลายหน้าต่าง การแสดงหน้าต่างบนเดสก์ท็อป หรือจอแสดงผลที่เชื่อมต่อ คือพรีวิวของกล้องจะยืดออก หมุน หรือครอบตัด
ตรวจสอบว่าพรีวิวของกล้องไม่ยืดออกหรือหมุน
ปัญหานี้มักเกิดขึ้นในอุปกรณ์หน้าจอขนาดใหญ่และอุปกรณ์พับได้ เนื่องจากแอปสันนิษฐานว่าฟีเจอร์กล้อง (เช่น สัดส่วนภาพและการวางแนวเซ็นเซอร์) และฟีเจอร์อุปกรณ์ (เช่น การวางแนวอุปกรณ์และการวางแนวตามธรรมชาติ) มีความสัมพันธ์กันแบบตายตัว
พิจารณาสี่วิธีแก้ปัญหาต่อไปนี้เพื่อให้แน่ใจว่าพรีวิวของกล้องจะปรับให้เข้ากับขนาดหรือการวางแนวของหน้าต่างได้อย่างถูกต้อง
วิธีแก้ปัญหาที่ 1: Jetpack CameraX (แนะนำ)
วิธีแก้ปัญหาที่ง่ายและมีประสิทธิภาพมากที่สุดคือการใช้ไลบรารี Jetpack CameraX องค์ประกอบ UI PreviewView ออกแบบมาเพื่อจัดการความซับซ้อนทั้งหมดของพรีวิวโดยอัตโนมัติ
PreviewViewจะปรับการวางแนวเซ็นเซอร์ การหมุนอุปกรณ์ และการปรับขนาดได้อย่างถูกต้อง- PreviewView จะรักษาสัดส่วนภาพของรูปภาพจากกล้อง โดยปกติจะจัดกึ่งกลางและครอบตัด (
FILL_CENTER) - คุณสามารถตั้งค่าประเภทการปรับขนาดเป็น
FIT_CENTERเพื่อใส่กรอบจดหมายในพรีวิวได้หากต้องการ
ดูข้อมูลเพิ่มเติมได้ที่ Implement a preview ในเอกสารประกอบของ CameraX
วิธีแก้ปัญหาที่ 2: CameraViewfinder
หากคุณใช้ฐานของโค้ด Camera2 อยู่แล้ว ไลบรารี CameraViewfinder (เข้ากันได้แบบย้อนหลังกับระดับ API 21) ก็เป็นอีกวิธีแก้ปัญหาที่ทันสมัย ซึ่งจะช่วยลดความซับซ้อนในการแสดงฟีดกล้องโดยใช้ TextureView หรือ SurfaceView และใช้การแปลงที่จำเป็นทั้งหมด (สัดส่วนภาพ การปรับขนาด และการหมุน) ให้คุณ
ดูข้อมูลเพิ่มเติมได้ที่บล็อกโพสต์ Introducing Camera Viewfinder และคู่มือนักพัฒนาแอป Camera preview
วิธีแก้ปัญหาที่ 3: การติดตั้งใช้งาน Camera2 ด้วยตนเอง
หากใช้ CameraX หรือ CameraViewfinder ไม่ได้ คุณต้องคำนวณการวางแนวและสัดส่วนภาพด้วยตนเอง และตรวจสอบว่าการคำนวณได้รับการอัปเดตทุกครั้งที่มีการเปลี่ยนแปลงการกำหนดค่า
- รับการวางแนวเซ็นเซอร์กล้อง (เช่น 0, 90, 180, 270 องศา) จาก
CameraCharacteristics - รับการหมุนจอแสดงผลปัจจุบันของอุปกรณ์ (เช่น 0, 90, 180, 270 องศา)
- ใช้ค่าการวางแนวเซ็นเซอร์กล้องและการหมุนจอแสดงผลเพื่อกำหนดการแปลงที่จำเป็นสำหรับ
SurfaceViewหรือTextureView - ตรวจสอบว่าสัดส่วนภาพของ
Surfaceเอาต์พุตตรงกับสัดส่วนภาพของพรีวิวจากกล้องเพื่อป้องกันการบิดเบี้ยว
สำคัญ: โปรดทราบว่าแอปกล้องอาจทำงานในส่วนหนึ่งของหน้าจอ ไม่ว่าจะเป็นในโหมดหลายหน้าต่างหรือโหมดการแสดงหน้าต่างบนเดสก์ท็อป หรือบนจอแสดงผลที่เชื่อมต่อ ด้วยเหตุนี้ คุณจึงไม่ควรใช้ขนาดหน้าจอเพื่อกำหนดขนาดของช่องมองภาพของกล้อง แต่ให้ใช้ เมตริกหน้าต่าง แทน ไม่เช่นนั้น คุณอาจได้พรีวิวของกล้องที่ยืดออก
ดูข้อมูลเพิ่มเติมได้ที่คู่มือนักพัฒนาแอป Camera preview และวิดีโอ Your Camera app on different form factors
วิธีแก้ปัญหาที่ 4: ดำเนินการพื้นฐานของกล้องโดยใช้ Intent
หากไม่ต้องการฟีเจอร์กล้องมากมาย วิธีแก้ปัญหาที่ง่ายและตรงไปตรงมาคือการดำเนินการพื้นฐานของกล้อง เช่น การถ่ายรูปหรือวิดีโอโดยใช้แอปพลิเคชันกล้องเริ่มต้นของอุปกรณ์ ในกรณีนี้ คุณสามารถใช้ Intent แทนการผสานรวมกับไลบรารีกล้องได้ เพื่อให้ดูแลรักษาและปรับเปลี่ยนได้ง่ายขึ้น
ดูข้อมูลเพิ่มเติมได้ที่ Camera intents
หลีกเลี่ยง UI ที่ยืดออกหรือปุ่มที่เข้าถึงไม่ได้
หากแอปสันนิษฐานว่าอุปกรณ์มีการวางแนวหรือจอแสดงผลมีสัดส่วนภาพที่เฉพาะเจาะจง แอปอาจพบปัญหาเมื่อมีการใช้งานในแนวการวางแนวหรือขนาดหน้าต่างต่างๆ
ตรวจสอบว่าปุ่ม ช่องข้อความ และองค์ประกอบอื่นๆ ไม่ยืดออกบนหน้าจอขนาดใหญ่
คุณอาจตั้งค่าปุ่ม ช่องข้อความ และการ์ดเป็น fillMaxWidth หรือ match_parent ซึ่งจะดูดีบนโทรศัพท์ แต่ในแท็บเล็ตหรืออุปกรณ์พับได้ในแนวนอน องค์ประกอบ UI จะยืดออกไปทั่วหน้าจอขนาดใหญ่ ใน Jetpack Compose คุณสามารถใช้ตัวปรับแต่ง widthIn เพื่อตั้งค่าความกว้างสูงสุดสำหรับคอมโพเนนต์เพื่อหลีกเลี่ยงเนื้อหาที่ยืดออก
Box(
contentAlignment = Alignment.Center,
modifier = Modifier.fillMaxSize()
) {
Column(
modifier = Modifier
.widthIn(max = 300.dp) // Prevents stretching beyond 300dp
.fillMaxWidth() // Fills width up to 300dp
.padding(16.dp)
) {
// Your content
}
}
หากผู้ใช้เปิดแอปในแนวการวางแนวนอนบนอุปกรณ์พับได้หรือแท็บเล็ต ปุ่มการทำงาน เช่น บันทึก หรือเข้าสู่ระบบ ที่ด้านล่างของหน้าจออาจแสดงผลนอกหน้าจอ หากคอนเทนเนอร์เลื่อนไม่ได้ ผู้ใช้อาจดำเนินการต่อไม่ได้ ใน Jetpack Compose คุณสามารถเพิ่มตัวปรับแต่ง verticalScroll ลงในคอมโพเนนต์ได้
Column(
modifier = Modifier
.fillMaxSize()
.verticalScroll(rememberScrollState())
.padding(16.dp)
)
การรวมข้อจำกัดความกว้างสูงสุดกับการเลื่อนแนวตั้งจะช่วยให้แอปยังคงทำงานได้และใช้งานได้ ไม่ว่าหน้าต่างแอปจะมีขนาดกว้างหรือแคบเพียงใด
ดูคำแนะนำเกี่ยวกับ การสร้างเลย์เอาต์ที่ปรับเปลี่ยนได้
รักษาข้อมูลสถานะไว้เมื่อมีการเปลี่ยนแปลงการกำหนดค่า
การนำข้อจำกัดด้านการวางแนวและสัดส่วนภาพออกหมายความว่าขนาดหน้าต่างของแอปจะเปลี่ยนแปลงบ่อยขึ้นมาก ผู้ใช้อาจหมุนอุปกรณ์ พับ/กางอุปกรณ์ หรือปรับขนาดแอปแบบไดนามิกในโหมดแยกหน้าจอหรือโหมดหน้าต่างเดสก์ท็อป
โดยค่าเริ่มต้น การเปลี่ยนแปลงการกำหนดค่าเหล่านี้จะทำลายและสร้างกิจกรรมขึ้นใหม่ หากแอปจัดการเหตุการณ์ในวงจรนี้ไม่ถูกต้อง ผู้ใช้จะได้รับประสบการณ์การใช้งานที่ไม่ดี ตำแหน่งการเลื่อนจะรีเซ็ตไปที่ด้านบน แบบฟอร์มที่กรอกข้อมูลไว้ครึ่งหนึ่งจะถูกล้าง และประวัติการนำทางจะสูญหาย แอปต้องรักษาข้อมูลสถานะไว้เมื่อมีการเปลี่ยนแปลงการกำหนดค่าเหล่านี้เพื่อให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ปรับเปลี่ยนได้อย่างราบรื่น Jetpack Compose ให้คุณเลือกไม่ใช้การสร้างขึ้นใหม่ และอนุญาตให้การเปลี่ยนแปลงขนาดหน้าต่างทำการคอมโพสใหม่ UI เพื่อแสดงพื้นที่ใหม่ที่ใช้ได้แทน
ดูคำแนะนำเกี่ยวกับการบันทึกข้อมูลสถานะ UI
กำหนดเป้าหมายเป็น API ระดับ 37 ภายในเดือนสิงหาคม 2027
หากก่อนหน้านี้แอปของคุณเลือกไม่ใช้การเปลี่ยนแปลงเหล่านี้เมื่อกำหนดเป้าหมายเป็น API ระดับ 36 แอปจะได้รับผลกระทบจากการนำตัวเลือกไม่ใช้ของ Android 17 ออกหลังจากที่แอปกำหนดเป้าหมายเป็น API ระดับ 37 แล้วเท่านั้น เราได้กำหนดไทม์ไลน์ที่การเปลี่ยนแปลงเหล่านี้จะมีผลดังนี้ เพื่อช่วยคุณวางแผนล่วงหน้าและทำการปรับเปลี่ยนที่จำเป็นกับแอป
- Android 17: การเปลี่ยนแปลงที่อธิบายไว้ข้างต้นจะเป็นประสบการณ์การใช้งานพื้นฐานสำหรับอุปกรณ์หน้าจอขนาดใหญ่ (ความกว้างหน้าจอที่เล็กที่สุด > 600 dp) สำหรับแอปที่กำหนดเป้าหมายเป็นระดับ API 37 นักพัฒนาแอป จะไม่มี ตัวเลือกให้เลือกไม่ใช้
กำหนดเวลาสำหรับการกำหนดเป้าหมายเป็นระดับ API ที่เฉพาะเจาะจงจะแตกต่างกันไปตาม App Store สำหรับ Google Play แอปใหม่และอัปเดตแอปจะต้องกำหนดเป้าหมายเป็นระดับ API เป้าหมาย 37 ซึ่งจะทำให้ลักษณะการทำงานนี้เป็นข้อบังคับสำหรับการเผยแพร่ในเดือนสิงหาคม 2027
การเตรียมตัวสำหรับ Android 17
ดูการเปลี่ยนแปลงทั้งหมดที่จะส่งผลต่อแอปใน Android 17 ได้ที่หน้าการเปลี่ยนแปลงใน Android 17 หากต้องการทดสอบแอป ให้ดาวน์โหลด Android 17 รุ่นเบต้า 1 แล้วอัปเดตเป็น targetSdkPreview = “CinnamonBun” หรือใช้ เฟรมเวิร์กความเข้ากันได้ของแอป เพื่อเปิดใช้การเปลี่ยนแปลงที่เฉพาะเจาะจง
อนาคตของ Android คือการปรับเปลี่ยนได้ และเราพร้อมช่วยคุณให้ไปถึงจุดนั้น ขณะเตรียมตัวสำหรับ Android 17 เราขอแนะนำให้คุณอ่านคำแนะนำเกี่ยวกับการสร้างเลย์เอาต์ที่ปรับเปลี่ยนได้และหลักเกณฑ์ด้านคุณภาพสำหรับหน้าจอขนาดใหญ่ แหล่งข้อมูลเหล่านี้ออกแบบมาเพื่อช่วยให้คุณจัดการอุปกรณ์หลายรูปแบบและขนาดหน้าต่างได้อย่างมั่นใจ
อย่ารอช้า เริ่มเตรียมตัวสำหรับ Android 17 ได้ตั้งแต่วันนี้
อ่านต่อ
-
ข่าวสารเกี่ยวกับผลิตภัณฑ์
เมื่อมีอุปกรณ์รูปแบบใหม่ๆ เช่น Pixel 10 Pro Fold เข้าร่วมระบบนิเวศของ Android การพัฒนาแอปที่ปรับเปลี่ยนได้จึงเป็นสิ่งสำคัญสำหรับการสร้างประสบการณ์การใช้งานคุณภาพสูงในโทรศัพท์ แท็บเล็ต และอุปกรณ์พับได้
Fahd Imtiaz, Miguel Montemayor • ใช้เวลาอ่าน 3 นาที
-
ข่าวสารเกี่ยวกับผลิตภัณฑ์
Android กำลังเปลี่ยนจากระบบปฏิบัติการไปเป็นระบบอัจฉริยะ ซึ่งจะสร้างโอกาสในการมีส่วนร่วมกับแอปของคุณมากขึ้น โดยมีการประกาศในวันนี้ระหว่าง The Android Show
Matthew McCullough • ใช้เวลาอ่าน 4 นาที
-
ข่าวสารเกี่ยวกับผลิตภัณฑ์
ระบบนิเวศของอุปกรณ์เคลื่อนที่มีการพัฒนาอยู่เสมอ ซึ่งนำมาซึ่งโอกาสใหม่ๆ และภัยคุกคามใหม่ๆ Android และ Google Play ยังคงมุ่งมั่นที่จะทำให้ผู้ใช้หลายพันล้านคนสามารถเพลิดเพลินกับแอปได้อย่างมั่นใจ และนวัตกรรมของนักพัฒนาแอปสามารถเติบโตได้ผ่านการเปลี่ยนแปลงเหล่านี้
Vijaya Kaza • ใช้เวลาอ่าน 3 นาที
รับข่าวสาร
รับข้อมูลเชิงลึกล่าสุดเกี่ยวกับการพัฒนา Android ส่งตรงถึงกล่องจดหมายของคุณ ทุกสัปดาห์