แม้ว่า 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
https://www.ninenik.com/content.php?arti_id=620 via @ninenik
ซึ่งเราจะกำหนดค่าในไฟล์ 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 ต่างๆ
เบื้องต้น รายละเอียดเพิ่มเติมจะได้ศึกษาต่อไป