หากคุณใช้หน้าจอแนะนําที่กําหนดเองใน Android 11 หรือเวอร์ชันก่อนหน้า ให้ย้ายข้อมูล
แอปไปยัง SplashScreen
API เพื่อให้ความช่วยเหลือ
เพื่อให้แสดงได้อย่างถูกต้องใน Android 12 ขึ้นไป
ตั้งแต่ Android 12 เป็นต้นไป ระบบจะใช้หน้าจอเริ่มต้นของระบบ Android
เปิดหน้าจอ
เย็นและอบอุ่น
เริ่มต้นสําหรับทุกแอป โดยค่าเริ่มต้น
หน้าจอแนะนำของระบบนี้สร้างขึ้นโดยใช้องค์ประกอบไอคอน Launcher ของแอป
และ windowBackground
ของ
ถ้าเป็นสีเดียว
หากไม่ย้ายข้อมูลแอป ประสบการณ์การเปิดแอปใน Android 12 ขึ้นไปอาจลดลงหรือให้ผลลัพธ์ที่ไม่ต้องการ
หากมีการใช้หน้าจอแนะนำที่มีอยู่โดยใช้ธีมที่กำหนดเองซึ่งลบล้าง
android:windowBackground
ระบบจะแทนที่หน้าจอแนะนำที่กำหนดเองด้วยหน้าจอแนะนำเริ่มต้นของระบบ Android ใน Android 12 ขึ้นไป ซึ่งอาจไม่ใช่ประสบการณ์การใช้งานที่แอปของคุณตั้งใจไว้หากมีการใช้หน้าจอแนะนำที่มีอยู่โดยใช้
Activity
โดยเฉพาะ การเปิดตัวแอปในอุปกรณ์ที่ใช้ Android 12 ขึ้นไปจะส่งผลให้มีหน้าจอแนะนำที่ซ้ำกัน โดยหน้าจอแนะนำของระบบจะแสดงขึ้นตามด้วยกิจกรรมหน้าจอแนะนำที่มีอยู่
คุณสามารถป้องกันประสบการณ์การใช้งานที่ลดลงหรือไม่ตั้งใจเหล่านี้ได้โดยทําตามกระบวนการย้ายข้อมูลตามที่อธิบายไว้ในเอกสารนี้ หลังจากที่คุณย้ายข้อมูล API ปรับปรุงเวลาที่ใช้ในการเริ่มต้น ทำให้คุณควบคุมประสบการณ์การใช้งานหน้าจอแนะนำได้อย่างเต็มที่ และสร้างประสบการณ์การเปิดตัว ที่สม่ำเสมอยิ่งขึ้นกับแอปอื่นๆ บนแพลตฟอร์ม
ไลบรารีความเข้ากันได้ของ SplashScreen
คุณสามารถใช้ SplashScreen
API ได้โดยตรง แต่เราขอแนะนำให้ใช้
ไลบรารีความเข้ากันได้ของ Androidx SplashScreen
แทน ไลบรารี compat ใช้ SplashScreen
API, เปิดใช้การทำงานร่วมกันแบบย้อนหลัง และสร้างรูปลักษณ์ที่สอดคล้องกับการแสดงหน้าจอแนะนำใน Android ทุกเวอร์ชัน เอกสารนี้เขียนโดยใช้การสื่อสาร
ไลบรารี
หากคุณย้ายข้อมูลโดยใช้ SplashScreen
API โดยตรงใน Android 11 และรุ่นก่อนหน้า
หน้าจอแนะนำจะมีลักษณะเหมือนก่อนการย้ายข้อมูลทุกประการ ตั้งแต่ Android 12 เป็นต้นไป หน้าจอแนะนำจะมีรูปลักษณ์และการใช้งานของ Android 12
หากคุณย้ายข้อมูลโดยใช้ไลบรารี SplashScreen
compat ระบบจะแสดงหน้าจอแนะนำเดียวกันใน Android ทุกเวอร์ชัน
ย้ายข้อมูลการใช้งานหน้าจอแนะนำ
ทำตามขั้นตอนต่อไปนี้เพื่อย้ายข้อมูลหน้าจอแนะนำที่มีอยู่ ลงใน Android 12 ขึ้นไป
กระบวนการนี้ใช้ได้กับการติดตั้งใช้งานประเภทใดก็ตามที่คุณจะย้ายข้อมูล หากคุณย้ายข้อมูลจาก Activity
โดยเฉพาะ ให้ทําตามแนวทางปฏิบัติแนะนำที่อธิบายไว้ในเอกสารนี้เพื่อปรับใช้หน้าจอแนะนำ Activity
ที่กําหนดเอง SplashScreen
API ยังช่วยลดเวลาในการเริ่มต้นทำงานด้วย
เวลาในการตอบสนองที่มาพร้อมกับกิจกรรมบนหน้าจอแนะนำโดยเฉพาะ
วิธีย้ายข้อมูลหน้าจอแนะนำ
ในไฟล์
build.gradle
เปลี่ยนcompileSdkVersion
และเพิ่ม ไลบรารีที่สอดคล้องกับSplashScreen
ในทรัพยากร Dependencybuild.gradle android { compileSdkVersion 31 ... } dependencies { ... implementation 'androidx.core:core-splashscreen:1.0.0-beta02' }
สร้างธีมร่วมกับระดับบนสุดของ
Theme.SplashScreen
กำหนดค่าของpostSplashScreenTheme
เป็นธีมที่Activity
ต้องใช้ และกำหนดค่าของwindowSplashScreenAnimatedIcon
เป็นภาพวาดหรือภาพเคลื่อนไหวที่วาดได้ แอตทริบิวต์อื่นๆ จะระบุหรือไม่ก็ได้<style name="Theme.App.Starting" parent="Theme.SplashScreen"> <!-- Set the splash screen background, animated icon, and animation duration. --> <item name="windowSplashScreenBackground">@color/...</item> <!-- Use windowSplashScreenAnimatedIcon to add a drawable or an animated drawable. One of these is required. --> <item name="windowSplashScreenAnimatedIcon">@drawable/...</item> <!-- Required for animated icons. --> <item name="windowSplashScreenAnimationDuration">200</item> <!-- Set the theme of the Activity that directly follows your splash screen. This is required. --> <item name="postSplashScreenTheme">@style/Theme.App</item> </style>
ถ้าคุณต้องการเพิ่มสีพื้นหลังใต้ไอคอน คุณสามารถใช้ ธีม
Theme.SplashScreen.IconBackground
และตั้งค่าwindowSplashScreenIconBackground
ในไฟล์ Manifest ให้แทนที่ธีมของกิจกรรมเริ่มต้นด้วยธีมที่คุณสร้างขึ้นในขั้นตอนก่อนหน้า
<manifest> <application android:theme="@style/Theme.App.Starting"> <!-- or --> <activity android:theme="@style/Theme.App.Starting"> ...
โทรหา
installSplashScreen
ในกิจกรรมเริ่มต้นก่อนโทรsuper.onCreate()
Kotlin
class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { // Handle the splash screen transition. val splashScreen = installSplashScreen() super.onCreate(savedInstanceState) setContentView(R.layout.main_activity) ...
Java
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // Handle the splash screen transition. SplashScreen splashScreen = SplashScreen.installSplashScreen(this); super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); } }
installSplashScreen
จะแสดงผลออบเจ็กต์หน้าจอแนะนำ ซึ่งคุณอาจใช้เพื่อปรับแต่งภาพเคลื่อนไหวหรือแสดงหน้าจอแนะนำบนหน้าจอเป็นเวลานานขึ้น ดูรายละเอียดเพิ่มเติมเกี่ยวกับการปรับแต่งภาพเคลื่อนไหวได้ที่
เปิดหน้าจอแนะนำไว้เป็นเวลานาน
และ
ปรับแต่งภาพเคลื่อนไหวสำหรับการปิดหน้าจอแนะนำ
ปรับกิจกรรมหน้าจอแนะนําที่กําหนดเองให้เข้ากับหน้าจอแนะนํา
หลังจากย้ายข้อมูลไปยังหน้าจอแนะนําสําหรับ Android 12 ขึ้นไป ให้เลือกว่า
กับหน้าจอแนะนำที่กำหนดเองก่อนหน้านี้ Activity
คุณมีสิ่งต่อไปนี้
ตัวเลือก:
- เก็บกิจกรรมที่กําหนดเองไว้ แต่ป้องกันไม่ให้แสดง
- เก็บกิจกรรมที่กําหนดเองไว้เพื่อเหตุผลด้านการสร้างแบรนด์
- นำกิจกรรมที่กำหนดเองออกและปรับเปลี่ยนแอปตามต้องการ
ป้องกันไม่ให้กิจกรรมที่กําหนดเองแสดง
หากหน้าจอแนะนำ Activity
ก่อนหน้าใช้สำหรับการกำหนดเส้นทางเป็นหลัก
คิดหาวิธีนำคำดังกล่าวออก ตัวอย่างเช่น คุณอาจลิงก์ไปยัง
กิจกรรมหรือย้ายไปยังกิจกรรมเอกพจน์ที่มีส่วนประกอบย่อย หากไม่ใช่
คุณสามารถใช้
SplashScreen.setKeepOnScreenCondition
เพื่อคงกิจกรรมการกำหนดเส้นทางไว้ แต่ไม่ให้แสดงผล ดังนั้น
จะส่งหน้าจอแนะนำไปยังกิจกรรมถัดไป และสนับสนุน
การเปลี่ยนแปลง
Kotlin
class RoutingActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { val splashScreen = installSplashScreen() super.onCreate(savedInstanceState) // Keep the splash screen visible for this Activity. splashScreen.setKeepOnScreenCondition { true } startSomeNextActivity() finish() } ...
Java
public class RoutingActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { SplashScreen splashScreen = SplashScreen.installSplashScreen(this); super.onCreate(savedInstanceState); // Keep the splash screen visible for this Activity. splashScreen.setKeepOnScreenCondition(() -> true ); startSomeNextActivity(); finish(); } ...
เก็บกิจกรรมที่กําหนดเองไว้สําหรับการสร้างแบรนด์
หากต้องการใช้หน้าจอแนะนำก่อนหน้า Activity
เพื่อเหตุผลด้านการสร้างแบรนด์ คุณสามารถเปลี่ยนจากหน้าจอแนะนำของระบบเป็นหน้าจอแนะนำที่กำหนดเองActivity
ได้โดยปรับแต่งภาพเคลื่อนไหวสำหรับการปิดหน้าจอแนะนำ
อย่างไรก็ตาม เราขอแนะนำให้หลีกเลี่ยงสถานการณ์นี้หากเป็นไปได้ และใช้ SplashScreen
API เพื่อแสดงแบรนด์ในหน้าจอแนะนำ
หากต้องแสดงกล่องโต้ตอบ เราขอแนะนำให้แสดงทับกิจกรรมบนหน้าจอแนะนำที่กำหนดเองที่ตามมา หรือ ในกิจกรรมหลักหลังจากหน้าจอแนะนำของระบบ
นํากิจกรรมหน้าจอแนะนําที่กําหนดเองออก
โดยทั่วไป เราขอแนะนำให้นำหน้าจอแนะนำแบบกำหนดเองActivity
ก่อนหน้าออกทั้งหมดเพื่อไม่ให้มีหน้าจอแนะนำซ้ำกัน เพื่อเพิ่มประสิทธิภาพ และเพื่อลดเวลาในการโหลดหน้าจอแนะนำ มีเทคนิคต่างๆ ที่คุณใช้เพื่อหลีกเลี่ยงการแสดงกิจกรรมหน้าจอแนะนำซ้ำได้
ใช้การโหลดแบบเลื่อนเวลาสำหรับคอมโพเนนต์ โมดูล หรือไลบรารี หลีกเลี่ยงการโหลดหรือเริ่มต้นคอมโพเนนต์หรือไลบรารีที่ไม่จําเป็นสําหรับให้แอปทํางานเมื่อเปิด โหลดในภายหลังเมื่อแอปต้องการ
หากแอปต้องการคอมโพเนนต์ทำงานอย่างถูกต้องจริงๆ ให้โหลดเมื่อ ที่จำเป็นจริงๆ และไม่ใช่ตอนเปิดตัว หรือใช้ Thread ที่พื้นหลังโหลด หลังจากที่แอปเริ่มทำงาน พยายามรักษา
Application.onCreate()
ให้สว่างที่สุด เท่าที่จะเป็นไปได้นอกจากนี้ คุณยังได้รับประโยชน์จากการใช้คลังการเริ่มต้นของแอปเพื่อเริ่มต้นใช้งานคอมโพเนนต์เมื่อแอปพลิเคชันเริ่มต้น เมื่อดำเนินการดังกล่าว โปรดตรวจสอบว่ายังคงโหลดข้อบังคับทั้งหมดสำหรับกิจกรรมเริ่มต้น และอย่าทำให้เกิดความกระตุกเมื่อข้อบังคับที่โหลดแบบขี้เกียจพร้อมใช้งาน
สร้างตัวยึดตำแหน่งขณะโหลดข้อมูลจำนวนเล็กน้อยในเครื่อง ใช้เมนู แนวทางการกำหนดธีมที่แนะนำ และระงับการแสดงผลไว้จนกว่าแอปจะ พร้อมแล้ว หากต้องการใช้หน้าจอแนะนำที่เข้ากันได้แบบย้อนหลัง ให้ทำตามขั้นตอนที่ระบุไว้ในแสดงหน้าจอแนะนำบนหน้าจอเป็นเวลานานขึ้น
แสดงตัวยึดตำแหน่ง สําหรับการโหลดที่อิงตามเครือข่ายซึ่งมีระยะเวลาที่ไม่แน่นอน ให้ปิดหน้าจอแนะนำและแสดงตัวยึดตําแหน่งสําหรับการโหลดแบบไม่พร้อมกัน ลองใช้ภาพเคลื่อนไหวเล็กๆ น้อยๆ ในพื้นที่เนื้อหาที่แสดงสถานะการโหลด ตรวจสอบว่าโครงสร้างเนื้อหาที่โหลดตรงกับโครงสร้างโครงร่างมากที่สุด เพื่อให้การเปลี่ยนเป็นไปอย่างราบรื่นเมื่อโหลดเนื้อหา
ใช้การแคช เมื่อผู้ใช้เปิดแอปเป็นครั้งแรก คุณจะแสดง สัญญาณบอกสถานะการโหลดสำหรับองค์ประกอบ UI บางอย่าง ดังที่ปรากฏในรูปต่อไปนี้ ครั้งถัดไปที่ผู้ใช้กลับมาที่แอป คุณสามารถแสดงเนื้อหาที่แคชไว้นี้ขณะโหลดเนื้อหาล่าสุด