สร้าง app ใน android studio ให้รองรับ android เวอร์ชั่นต่างๆ

เขียนเมื่อ 9 ปีก่อน โดย Ninenik Narkdee
android version android theme android studio android

คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ android version android theme android studio android

ดูแล้ว 10,562 ครั้ง


แม้ว่า android เวอร์ชั่นล่าสุดที่ออกมาจะมีความสามารถที่ดีเพียงใดก็ตาม 
แต่เราก็ยังควรที่จะสร้าง app ให้รองรับเวอร์ชั่นเก่า จนกว่าจะมีอุปกรณ์ที่รองรับ
เวอร์ชั่น android ใหม่ๆ มากพอ 
 
เนื้อหาตอนนี้จะแนะนำถึงการใช้คุณสมบัติใหม่ๆ จากเวอร์ชั่นล่าสุดของ android โดย
ที่ยังคงให้สามารถรองรับการใช้งานกับ android เวอร์ชั่นเก่าได้
 
เราสามารถดูข้อมูลการใช้งาน Version ต่างๆ ของอุปกรณ์ android ได้ที่ลิ้งค์นี้
ข้อมูลดังกล่าว จะช่วยให้เราตัดสินใจหรือวางแผนในการกำหนดทิศทางของ app ของเราได้
เช่นอุปกรณ์ส่วนใหญ่รองรับ version อะไร ขนาดหน้าจอเท่าไหร่ที่มีการใช้งานมาก แบบนี้เป็นต้น
 
คำแนะนำ:: เพื่อให้ได้รับคุณสมบัติและมีฟังก์ชั่นที่รองรับ android หลายเวอร์ชั่น เราควรมีการใช้งาน
Android Support Library ใน app ของเรา ซึ่งในส่วนนี้ android studio ก็กำหนดคุณสมบัตินี้มา
ให้เราเป็นค่าเริ่มต้นอยู่แล้ว
 
 
การกำหนด android API ต่ำสุดที่รองรับและ API ที่ใช้ทดสอบ run app
 
ในไฟล์ AndroidManifest.xml ซึ่งจะมีรายละเอียดต่างๆ เกี่ยวกับ app ที่เราสร้าง และการกำหนด
เวอร์ชั่นของ android ที่รองรับ 
เช่นการกำหนด  minSdkVersion และ targetSdkVersion attributes
 
minSdkVersion คือ เวอร์ชั่น API ต่ำสุดที่รองรับ
targetSdkVersion คือเวอร์ชั่น API สูงสุดที่รองรับ หรือที่เราจะทดสอบ run app 
 
ตัวอย่างการกำหนดค่า ในไฟล์ AndroidManifest.xml 
 
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="21" />
 
ตัวอย่างไฟล์เต็ม
 
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.ninenik.study002" >

    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="21" />
    
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
 
การกำหนด targetSdkVersion  จะมีประโยชน์มากในการใช้สำหรับเรียกใช้ style ใหม่ๆ จาก API ล่าสุด
ให้รองรับเครื่องที่ใช้ API รุ่นเก่าได้
 
 
 
การตรวจสอบเวอร์ชั่นการทำงานของระบบ
 
Android มีโค้ดเฉพาะสำหรับแต่ละเวอร์ชั่นสำหรับตรวจสอบ โดยจะเรียกใช้จาก Build Class ซึ่งเราจะต้อง 
import class เข้ามา  ใช้ code ต่อไปนี้เพื่อรวจสอบว่า app ของเราทำงานเมื่ออยู่ในเวอร์ชั่นใดๆ หรือมากกว่า
เช่น ตาม code ด้านล่าง เป็นการตรวจสอบว่า
 
        // ตรวจสอบเพื่อยืนยันว่าเรากำลังใช้งานบน android  Honeycomb 
        // หรือสูงกว่า เพื่อเรียกใช้ ActionBar API
 
        // ตรวจสอบเพื่อยืนยันว่าเรากำลังใช้งานบน android  Honeycomb 
        // หรือสูงกว่า เพื่อเรียกใช้ ActionBar API
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            // กำหนดให้ icon ใน action bar ไม่ทำงานคล้ายปุ่ม Home
            ActionBar actionBar = getActionBar();
            actionBar.setHomeButtonEnabled(false);

        }
 
ตัวอย่างแบบเต็มในไฟล์ MainActivity.java
 
package com.example.ninenik.study002;

import android.app.ActionBar;
import android.os.Build;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;


public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // ตรวจสอบเพื่อยืนยันว่าเรากำลังใช้งานบน android  Honeycomb 
        // หรือสูงกว่า เพื่อเรียกใช้ ActionBar API
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            // กำหนดให้ icon ใน action bar ไม่ทำงานคล้ายปุ่ม Home
            ActionBar actionBar = getActionBar();
            actionBar.setHomeButtonEnabled(false);

        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}
 


 
การกำหนด Style และ Theme ตามเวอร์ชั่น
 
ตามที่เคยลองใช้งาน theme มาแล้วในตอน
android theme กับการจัดการ style ให้กับ action bar 
 
ซึ่งเราจะกำหนดค่าในไฟล์ AndroidManifest.xml ซึ่งการกำหนด theme นั้น เราสามารถ
กำหนดได้ทั้ง app หรือกำหนดให้แต่ละ activity ก็ได้
 
ตัวอย่างการกำหนดค่า
 
แสดง activity แบบ dialog box
<activity android:theme="@android:style/Theme.Dialog">
 
แสดง activity แบบให้มีพื้นหลังโปร่งใส
<activity android:theme="@android:style/Theme.Translucent">
 
หรือเราจะกำหนด theme ขึ้นมาเองก็ได้ โดยกำหนดใน /res/values/styles.xml:
<activity android:theme="@style/CustomTheme">
 
การกำหนดใช้ theme ทั้ง app หรือทุกๆ activity ให้ theme เดียวกัน ให้เรากำหนด
android:theme attribute ใน <application>
<application android:theme="@style/CustomTheme">
 
เราได้รู้เกี่ยวกับการกำหนดให้ app ของเราสามารถใช้งานและรองรับเวอร์ชั่น API ต่างๆ
เบื้องต้น รายละเอียดเพิ่มเติมจะได้ศึกษาต่อไป


กด Like หรือ Share เป็นกำลังใจ ให้มีบทความใหม่ๆ เรื่อยๆ น่ะครับ



อ่านต่อที่บทความ









เนื้อหาที่เกี่ยวข้อง









URL สำหรับอ้างอิง





คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )







เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ