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

แม้ว่า 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">

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