แม้ว่า Android เวอร์ชันล่าสุดมักจะมี API ที่ยอดเยี่ยมสำหรับแอปของคุณ แต่คุณควรรองรับ Android เวอร์ชันเก่าต่อไปจนกว่าอุปกรณ์จำนวนมากขึ้นจะได้รับการอัปเดต บทเรียนนี้จะแสดงวิธีใช้ประโยชน์จาก API เวอร์ชันล่าสุดไปพร้อมกับรองรับเวอร์ชันเก่าด้วย
ใช้วิซาร์ดโปรเจ็กต์ใหม่ของ Android Studio เพื่อค้นหาการกระจายของโปรเจ็กต์ที่ใช้งานอยู่ อุปกรณ์ที่ใช้ Android แต่ละเวอร์ชัน การกระจายนี้อิงตามจํานวนอุปกรณ์ที่ ให้ไปที่ Google Play Store โดยทั่วไป เราขอแนะนำให้รองรับอุปกรณ์ที่ใช้งานอยู่ประมาณ 90% พร้อมกับกำหนดเป้าหมายแอปเป็นเวอร์ชันล่าสุด
เคล็ดลับ: คุณควรใช้ Android Support Library ในแอปเพื่อให้ฟีเจอร์และฟังก์ชันการทำงานที่ดีที่สุดใน Android หลายเวอร์ชัน ซึ่งจะช่วยให้คุณใช้ API แพลตฟอร์มล่าสุดหลายรายการในเวอร์ชันเก่าได้
ระบุระดับ API ขั้นต่ำและระดับเป้าหมาย
ไฟล์ AndroidManifest.xml
จะอธิบายรายละเอียดเกี่ยวกับแอปและ
ระบุเวอร์ชัน Android ที่รองรับ โดยเฉพาะอย่างยิ่ง minSdkVersion
และแอตทริบิวต์ targetSdkVersion
สำหรับองค์ประกอบ <uses-sdk>
ระบุระดับ API ต่ำสุดที่แอปของคุณใช้งานร่วมกันได้ และระดับ API สูงสุด
ที่คุณได้ออกแบบและทดสอบแอป
เช่น
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... > <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" /> ... </manifest>
เมื่อมีการเปิดตัว Android เวอร์ชันใหม่ รูปแบบและลักษณะการทํางานบางอย่างอาจเปลี่ยนแปลงไป
หากต้องการให้แอปใช้ประโยชน์จากการเปลี่ยนแปลงเหล่านี้และตรวจสอบว่าแอปเหมาะกับสไตล์ของอุปกรณ์ของผู้ใช้แต่ละราย คุณควรตั้งค่า targetSdkVersion
ให้ตรงกับ Android เวอร์ชันล่าสุดที่ใช้ได้
ตรวจสอบเวอร์ชันของระบบในช่วงรันไทม์
Android มีรหัสที่ไม่ซ้ำกันสำหรับแพลตฟอร์มแต่ละเวอร์ชันใน Build
ของค่าคงที่นี้ ใช้รหัสเหล่านี้ภายในแอปเพื่อสร้างเงื่อนไขที่ช่วยให้มั่นใจว่าโค้ดที่
ขึ้นอยู่กับระดับ API ที่สูงกว่าจะทำงานก็ต่อเมื่อ API เหล่านั้นพร้อมใช้งานในระบบ
Kotlin
private fun setUpActionBar() { // Make sure we're running on Honeycomb or higher to use ActionBar APIs if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { actionBar.setDisplayHomeAsUpEnabled(true) } }
Java
private void setUpActionBar() { // Make sure we're running on Honeycomb or higher to use ActionBar APIs if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); } }
หมายเหตุ: เมื่อแยกวิเคราะห์ทรัพยากร XML Android จะไม่สนใจ XML
ที่อุปกรณ์ปัจจุบันไม่รองรับ คุณจึงใช้แอตทริบิวต์ XML ที่รองรับเฉพาะเวอร์ชันใหม่ได้อย่างปลอดภัยโดยไม่ต้องกังวลว่าเวอร์ชันเก่าจะใช้งานไม่ได้เมื่อพบโค้ดดังกล่าว ตัวอย่างเช่น หากคุณตั้งค่าเป็น targetSdkVersion="11"
แอปของคุณจะมี ActionBar
โดยค่าเริ่มต้นใน Android 3.0 ขึ้นไป หากต้องการเพิ่มรายการเมนู ในแถบการทำงาน คุณต้องตั้งค่า
android:showAsAction="ifRoom"
ใน XML ทรัพยากรเมนู ทำได้อย่างปลอดภัย
ในไฟล์ XML แบบข้ามเวอร์ชัน เนื่องจาก Android เวอร์ชันเก่าจะไม่สนใจ
แอตทริบิวต์ showAsAction
(คุณไม่จำเป็นต้องมี
ใน res/menu-v11/
)
ใช้รูปแบบและธีมของแพลตฟอร์ม
Android มีธีมเกี่ยวกับประสบการณ์ของผู้ใช้ ทำให้แอปมีรูปลักษณ์และความรู้สึกของ ระบบปฏิบัติการที่เกี่ยวข้อง คุณสามารถใช้ธีมเหล่านี้กับแอปของคุณภายใน Manifest เมื่อใช้สไตล์และธีมในตัวเหล่านี้ แอปของคุณจะเป็นไปตามรูปลักษณ์และความรู้สึกล่าสุดของ Android อย่างเป็นธรรมชาติในทุกๆ รุ่นใหม่
วิธีทำให้กิจกรรมมีลักษณะเหมือนกล่องโต้ตอบ
<activity android:theme="@android:style/Theme.Dialog">
วิธีทำให้กิจกรรมมีพื้นหลังโปร่งใส
<activity android:theme="@android:style/Theme.Translucent">
หากต้องการใช้ธีมที่กำหนดเองที่กำหนดไว้ใน /res/values/styles.xml
ให้ทำดังนี้
<activity android:theme="@style/CustomTheme">
หากต้องการใช้ธีมกับทั้งแอป (กิจกรรมทั้งหมด) ให้เพิ่ม android:theme
แอตทริบิวต์
ไปยังองค์ประกอบ <application>
:
<application android:theme="@style/CustomTheme">
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสร้างและการใช้ธีม โปรดอ่านคำแนะนำสไตล์และธีม