รองรับแพลตฟอร์มเวอร์ชันอื่น

แม้ว่า Android เวอร์ชันล่าสุดมักจะมี API ที่ยอดเยี่ยมสำหรับแอปของคุณ แต่คุณก็ควรดำเนินการต่อ เพื่อรองรับ Android เวอร์ชันเก่าจนกว่าจะมีการอัปเดตอุปกรณ์มากขึ้น ช่วงเวลานี้ บทเรียนจะบอกวิธีใช้ประโยชน์จาก API ล่าสุดไปพร้อมๆ กับสนับสนุนเวอร์ชันเก่า เวอร์ชันต่างๆ ได้ด้วย

ใช้วิซาร์ดโปรเจ็กต์ใหม่ของ Android Studio เพื่อค้นหาการกระจายของโปรเจ็กต์ที่ใช้งานอยู่ อุปกรณ์ที่ใช้ Android แต่ละเวอร์ชัน การกระจายนี้อิงตามจํานวนอุปกรณ์ที่ ก็ไปที่ Google Play Store ได้เลย โดยทั่วไป เราแนะนำให้รองรับประมาณ 90% ของอุปกรณ์ที่ใช้งานอยู่ กำหนดเป้าหมายแอปเป็นเวอร์ชันล่าสุด

เคล็ดลับ: เพื่อให้บริการฟีเจอร์ที่ดีที่สุดและ ใน Android เวอร์ชันต่างๆ คุณควรใช้ไลบรารีการสนับสนุนของ 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">

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสร้างและการใช้ธีม โปรดอ่านคำแนะนำสไตล์และธีม