ใน Android 8.0 ผู้ใช้สามารถสลับระหว่างการหมุนอัตโนมัติและการหมุนแนวตั้ง โดยใช้การ์ดการตั้งค่าด่วนหรือการตั้งค่าการแสดงผล ใน Android 9 เราได้อัปเดต โหมดการหมุนภาพบุคคลเพื่อขจัดการหมุนโดยไม่ตั้งใจโดยการปักหมุด การหมุนหน้าจอปัจจุบันแม้ว่าตำแหน่งของอุปกรณ์จะเปลี่ยนไป ผู้ใช้เรียกใช้ได้ หมุนด้วยตนเองเมื่อจำเป็น โดยกดปุ่มใหม่ในแถบนำทาง เราเปลี่ยนชื่อโหมดภาพบุคคลเป็นล็อกการหมุน และจะเปิดใช้งานเมื่อหมุนอัตโนมัติ ปิดอยู่ ไม่มีการเปลี่ยนแปลงในโหมดหมุนอัตโนมัติ
เมื่ออุปกรณ์อยู่ในโหมดล็อกการหมุน ผู้ใช้จะล็อกหน้าจอ
รองรับการหมุนด้านบน กิจกรรมที่มองเห็นได้ (ตามระบบปัจจุบัน
) หากกิจกรรมยอดนิยมสามารถแสดงในการหมุนเวียนได้หลายครั้งใน
โหมดหมุนอัตโนมัติ ตัวเลือกเดียวกันนี้ควรจะมีอยู่ในโหมดล็อกการหมุน
โดยมีข้อยกเว้นบางประการตามscreenOrientation
ของกิจกรรม
การตั้งค่า
โหมดล็อกการหมุนทำงานโดยแสดงปุ่มในแถบนำทางเมื่อหมุนอุปกรณ์
การเปลี่ยนแปลง เซ็นเซอร์การวางแนวของอุปกรณ์ต้องทำงานอยู่เพื่อให้ดำเนินการดังกล่าวได้
แม้ว่าการหมุนอัตโนมัติจะปิดอยู่ การแตะปุ่มนี้จะตั้งค่าการหมุนเวียนผู้ใช้อย่างมีประสิทธิภาพ
ค่ากำหนด (Settings.System.USER_ROTATION
) WindowManager ใช้สิ่งนี้
ค่ากำหนด พร้อมด้วยรายละเอียดอื่นๆ เกี่ยวกับสถานะ "กิจกรรม" และ "ระบบ" ด้านบน
เพื่อเปลี่ยนการหมุนของระบบ WindowManager ใช้การหมุนเวียนผู้ใช้ต่อไป
มากกว่า 1 ชิ้นเมื่อตัดสินใจว่าจะแสดงผลระบบอย่างไรเมื่อเปลี่ยนไปใช้
กิจกรรมอื่น
![GIF นี้แสดงโทรศัพท์ในแนวนอนโดยถือหน้าจอใน
ในแนวตั้ง ไอคอนจะปรากฏขึ้นเพื่อถามผู้ใช้ว่าต้องการ
เปลี่ยนการวางแนวหน้าจอเป็นแนวนอน](https://source.android.com/static/docs/core/display/images/rotate-btn-quickstep.gif?authuser=0&hl=th)
ควรคงค่ากำหนดการหมุนเวียนผู้ใช้ไว้เมื่อย้ายไปมาระหว่างกิจกรรม แต่เพราะผู้ใช้โทรศัพท์ส่วนใหญ่ต้องการแสดง Shorts ในภาพรวม ในช่วงระยะเวลาชั่วคราว เราได้เพิ่มการให้น้ำหนักพิเศษตามการวางแนว การหมุนเวียนผู้ใช้ ระบบจะรีเซ็ตเป็นการวางแนวตามธรรมชาติของอุปกรณ์เมื่อใดก็ตามที่ การหมุนของระบบจะเปลี่ยนเป็นการวางแนวตามธรรมชาติของอุปกรณ์ สำหรับโทรศัพท์ส่วนใหญ่ การวางแนวตามธรรมชาติของอุปกรณ์คือแนวตั้ง (0o) กำลังรีเซ็ตการหมุนเวียนผู้ใช้ มักเกิดขึ้นเมื่อใช้แอปแนวตั้งเท่านั้น ล็อกโทรศัพท์ หรือ การกลับไปยังพื้นที่ทำงานของ Launcher
การโต้ตอบการหมุนเวียนของผู้ใช้ไม่ได้เปลี่ยนแปลงไปมากนักในทศวรรษที่ผ่านมา ผู้ใช้ อาจพบว่าฟีเจอร์นี้ค้นหาได้ยากเมื่อพิจารณาจากประวัติที่ผ่านมาซึ่งมีการหมุนเวียน และตำแหน่งปุ่มในแถบนำทาง ด้วยเหตุนี้เราจึงได้เพิ่ม โหมดแนะนำกับปุ่มหมุนที่ไฮไลต์ปุ่มดังกล่าวเมื่อปรากฏขึ้น บทนำ การทำงานของโหมดนี้จะเกิดขึ้นเฉพาะกับการโต้ตอบกับปุ่ม 2-3 ปุ่มแรกหลังจากนั้น โหมดแนะนำถูกปิดใช้งาน
แหล่งที่มา
เพิ่มการสนับสนุนคำแนะนำการหมุนเวียนไปยัง Android 9 การเปลี่ยนแปลงส่วนใหญ่มักอยู่ใน ไฟล์ต่อไปนี้
services/.../server/policy/PhoneWindowManager.java
:- ฮุกที่ใช้เอาต์พุตของ
WindowOrientationListener
(MyOrientationListener
มีหน้าที่ตรวจสอบ เซ็นเซอร์เพื่อระบุว่ามีการหมุนอุปกรณ์หรือไม่) - ให้
WindowOrientationListener
ทำงานอยู่ตลอดเวลา การหมุนอัตโนมัติปิดใช้อยู่ (ดูneedSensorRunningLp()
) - คำนวณการหมุนเวียนของระบบตามค่ากำหนดการหมุนเวียนของผู้ใช้ ด้านบน
การตั้งค่ากิจกรรม
screenOrientation
และสถานะระบบ (ดูrotationForOrientationLw()
) - ตรวจสอบว่ากิจกรรมยอดนิยมสามารถหมุนไปยังการหมุนที่กำหนดได้หรือไม่ (โปรดดู
isRotationChoicePossible()
)
- ฮุกที่ใช้เอาต์พุตของ
SystemUI/.../statusbar/phone/NavigationBarFragment
:- กำหนดว่าควรแสดงปุ่ม Navbar ขณะหมุนหรือไม่
การติดต่อกลับตามคำแนะนำจาก
PhoneWindowManager
(ดูonRotationProposal()
) - จัดการเมื่อต้องการซ่อนปุ่ม Navbar ที่หมุน (ดูการเรียก
setRotateSuggestionButtonState(false)
) - จัดการกับการหมดเวลาของปุ่ม รวมถึงกรณีพิเศษเมื่อ แถบนำทางซ่อนอยู่ (โดยทั่วไปจะเป็นแบบเต็มหน้าจอ)
- รีเซ็ตค่ากำหนดของผู้ใช้เมื่อกลับไปใช้ตามปกติ
การวางแนว (
mRotationWatcher
) - เลือกรูปแบบที่เหมาะสมสำหรับภาพเคลื่อนไหวของปุ่ม Navbar
ใช้ใน
NavigationBarView
แล้ว (ดูonRotationProposal()
) - เพิ่มตรรกะโหมดแนะนำ รวมถึงภาพเคลื่อนไหวพิเศษ
(ดูส่วนอ้างอิงถึง
Settings.Secure.NUM_ROTATION_SUGGESTIONS_ACCEPTED
) - ใช้แฟล็กการหมุนเวียนหรือปิดใช้2 (ดู
disable()
)
- กำหนดว่าควรแสดงปุ่ม Navbar ขณะหมุนหรือไม่
การติดต่อกลับตามคำแนะนำจาก
SystemUI/.../statusbar/phone/NavigationBarView.java
:- ภาพเคลื่อนไหวของไอคอนปุ่มรูปแบบให้ตรงกับการหมุนเวียนที่รอดำเนินการ (โปรดดู
updateRotateSuggestionButtonStyle()
) - จัดการการเปลี่ยนแปลงการแสดงปุ่ม (โปรดดู
setRotateButtonVisibility()
) รวมถึงตรรกะที่จะซ่อน ปุ่มหมุนหากบริการการช่วยเหลือพิเศษบางรายการทำงานอยู่ (พิจารณาการจัดอันดับกลุ่มปุ่ม Navbar ด้านขวาสุด)
- ภาพเคลื่อนไหวของไอคอนปุ่มรูปแบบให้ตรงกับการหมุนเวียนที่รอดำเนินการ (โปรดดู
SystemUI/res/layout/menu_ime.xml
:- มี
KeyButtonView
ใหม่สำหรับปุ่มหมุน วางซ้อนอยู่เหนือเมนูและตัวเลือก IME/แป้นพิมพ์ แต่อยู่ใต้ ปุ่มการช่วยเหลือพิเศษ
- มี
SystemUI/res/drawable/ic_sysbar_rotate_button.xml
:- เชิงซ้อน
AnimatedVectorDrawable
ที่ใช้สร้างภาพเคลื่อนไหว หมุนปุ่ม Navbar - การจัดรูปแบบ (ใน
SystemUI/res/values/styles.xml
) ใช้เพื่อ ตั้งค่ามุมเริ่มต้นและมุมสิ้นสุดของการหมุนเพื่อให้ดึงส่วนที่ถอนออกได้เหมือนกัน ที่ใช้ในการสร้างภาพเคลื่อนไหวในการหมุนเริ่มต้นและสิ้นสุดต่างๆ - มีการตั้งค่าการแต้มสีไอคอนผ่าน
TintedKeyButtonDrawable
- เชิงซ้อน
การใช้งาน
Android 9 มีการเปลี่ยนแปลงที่จําเป็นทั้งหมดเพื่อให้ คำแนะนำการหมุนที่ทำงานสำหรับ อุปกรณ์ที่ใช้แป้นนำทางของซอฟต์แวร์ (กลับ หน้าแรก ฯลฯ)
ผู้ผลิตอุปกรณ์ที่สร้างอุปกรณ์ที่มีคีย์การนำทางฮาร์ดแวร์ที่ต้องการ ในการใช้ฟีเจอร์นี้ จะต้องออกแบบและใช้งาน UI ระบบของตนเอง ราคาแพงหรือปิดการใช้งานคุณลักษณะ ขอแนะนำให้ใช้แพลตฟอร์มที่แนะนำ ใช้งานง่ายเมื่อถืออุปกรณ์ไว้ที่ตำแหน่ง 90o หรือ 180o ตามระบบปัจจุบัน การหมุนและเข้าถึงได้ง่าย ด้วยเหตุนี้ การใช้การแจ้งเตือน (เช่นเดียวกับที่ดำเนินการกับเครื่องมือเลือก IME/แป้นพิมพ์)
ข้อกำหนดเกี่ยวกับฮาร์ดแวร์ในการใช้ฟีเจอร์นี้จะเหมือนกับข้อกำหนด เพื่อใช้การหมุนอัตโนมัติ
จำเป็นต้องใช้เพื่อความสอดคล้องในการติดตั้งใช้งาน ค่ากำหนดการหมุนเวียนของผู้ใช้
(Settings.System.USER_ROTATION
) รีเซ็ตเป็นตามปกติของอุปกรณ์
การหมุนเมื่อระบบเปลี่ยนเป็นการหมุนตามธรรมชาติของอุปกรณ์ไม่ว่าด้วยเหตุผลใดก็ตาม
เมื่อหมุนอัตโนมัติปิดอยู่ การติดตั้งใช้งานที่มีให้มีการดำเนินการนี้ (ดู
NavigationBarFragment.mRotationWatcher
)
มี Flag ใหม่ใน StatusBarManager.disable2
สำหรับชั่วคราว
ป้องกันไม่ให้แสดงคำแนะนำในการหมุน โปรดดู
StatusBarManager.DISABLE2_ROTATE_SUGGESTIONS
แฟล็กนี้ต้องเป็น
เป็นไปตามลักษณะการใช้งานทั้งหมดเนื่องจากแอประบบที่สำคัญใช้ ซึ่งรวมถึง
วิซาร์ดการตั้งค่า การใช้งานที่ระบุรองรับการดำเนินการนี้ (ดู
NavigationBarFragment.disable()
)
เราขอแนะนำอย่างยิ่งให้เปิดใช้ฟีเจอร์ดังกล่าวและทำตาม AOSP หากเป็นไปได้ เรามุ่งมั่นที่จะคงประสบการณ์การหมุนเวียนให้คล้ายกัน ระหว่างอุปกรณ์ต่างๆ ซึ่งสะท้อนให้เห็นประสบการณ์แบบเดียวกันในโทรศัพท์ส่วนใหญ่ในปัจจุบัน หมุนอัตโนมัติกับล็อกแนวตั้ง
การปรับแต่ง
เนื่องจากคำแนะนำการหมุนจะปรากฏเฉพาะในโหมดล็อกการหมุนอัตโนมัติ (ปิดการหมุนอัตโนมัติ)
คุณสามารถเลือกได้ว่าฟีเจอร์นี้เป็นค่าเริ่มต้นสำหรับการติดตั้งใหม่หรือไม่โดย
เลือกให้หมุนอัตโนมัติโดยค่าเริ่มต้น โปรดดู
def_accelerometer_rotation
นิ้ว
SettingsProvider/res/values/defaults.xml
เพื่อทำการเปลี่ยนแปลงเริ่มต้น
ผู้ใช้สามารถเปลี่ยนแปลงได้อย่างง่ายดายว่าการหมุนอัตโนมัติทำงานอยู่หรือไม่ (โดยไม่คำนึงถึงค่าเริ่มต้น) ผ่านชิ้นส่วนหมุนในการตั้งค่าด่วนหรือการตั้งค่าการแสดงผล
การตรวจสอบความถูกต้อง
คุณเปิดหรือปิดฟีเจอร์นี้ได้โดยการเปลี่ยนการจำกัด
Settings.Secure
ซึ่งบรรลุผลได้ง่ายที่สุดโดยการเรียกใช้
คำสั่งต่อไปนี้จากอินสแตนซ์ adb ที่มีสิทธิ์
adb shell settings put secure show_rotation_suggestions <x>
ตั้งค่า x เป็น 0
สำหรับปิดและ 1
สำหรับเปิด
สำหรับการทดสอบ คุณสามารถรีเซ็ตโหมดแนะนำได้โดยเปลี่ยน
Settings.Secure
ซึ่งบรรลุผลได้ง่ายที่สุดโดยการเรียกใช้
คำสั่งต่อไปนี้จากอินสแตนซ์ adb ที่มีสิทธิ์
adb shell settings put secure num_rotation_suggestions_accepted 0