Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 【Android】8.4 讓主題自適應不同的Android版本,8.4android

【Android】8.4 讓主題自適應不同的Android版本,8.4android

編輯:關於android開發

【Android】8.4 讓主題自適應不同的Android版本,8.4android


分類:C#、Android、VS2015;

創建日期:2016-02-17

一、簡介

默認情況下,高版本提供的主題不能在低版本的Android系統上運行。但是,通過自定義主題,可以讓你的系統自適應各自對應的版本。這種方式帶來的最大好處是:如果僅僅為了讓你的應用程序自適應不同的Android系統,只需要設計一套應用程序即可,而不需要針對不同的Android系統去分別實現不同的應用程序版本。

二、示例—ch0804ThemeDemo

1、運行截圖

下圖是本項目主界面在Android 6.0(API 23)模擬器下運行的效果:

不改變任何選項,但是將模擬器選擇為API 19的x86模擬器,然後按<F5>調試運行,此時它就會自動使用Resources/values文件夾下的style.xml文件。

下面左圖是本項目主界面在Android 4.4.2(API 19)模擬器下運行的效果,右圖是本示例運行的效果:

 

2、設計步驟

例如,材質主題是從Android 5.0(v21)開始提供的,該主題無法在比Android 5.0低的Android 4.4(v19)中使用,但是你又不想僅僅為了解決主題問題而再去另外創建一個功能完全相同的項目,即希望讓你的應用程序不需要做任何改變就能自適應所運行的Android系統,此時需要在項目中按下面的步驟實現主題的兼容性。

(1)在Resources文件夾下添加與版本對應的子文件夾和styles.xml

先在Resources文件夾下創建一個values-v21子文件夾,然後在該子文件夾下下創建一個styles.xml文件:

<?xml version="1.0" encoding="utf-8" ?>
<resources>
  <style name="MyTheme" parent="android:Theme.Material.Light.DarkActionBar">
  </style>
  ……
</resources>

values-v21表示該文件夾下的style.xml文件僅適用於Android 5.0及更高版本。

(2)在Resources/values文件夾下添加低版本使用的styles.xml

修改上個例子創建的Resources/values/styles.xml文件,讓其繼承自舊版本的主題,同時讓使用的名稱和上面自定義的名稱相同:

<?xml version="1.0" encoding="utf-8" ?>

<resources>
  <style name="MyTheme" parent="android:Theme.DeviceDefault.Light.DarkActionBar">
  </style>
  ……
</resources>

通過以上兩個步驟,就可以用引用自定義主題的辦法實現版本的自適應性了。這是因為當將應用程序運行在Android 5.0及更高版本的設備上時,系統就會自動使用在Resources/values-v21/styles.xml中指定的主題;當應用程序在低於Android 5.0的設備上運行時(比如API 19),系統就會自動使用在Resources/values/styles.xml中指定的自定義主題。

(3)引用自定義的主題

要在應用程序級別使用名為“MyTheme”的主題,只需要修改AndroidManifest.xml文件的配置:

<application android:label="MyApp" android:theme="@style/MyTheme">

</application>

要在某個活動頁面使用自定義的主題,只需要在對應的Activity中聲明它:

[Activity(Label = "MyActivity", Theme = "@style/MyTheme")]

注意:如果你自定義的主題使用的是colors.xml文件中自定義的顏色,一定要將自定義的這個colors.xml文件放在Resources/values文件夾下,而不是放在Resources/values-v21文件夾下,這樣做的目的是:讓所有版本都可以訪問自定義的顏色。如果放在Resources/values-v21文件夾下,則只有Android 5.0(API 21)及更高版本可訪問自定義的顏色。

3、本示例對應的源文件

(1)ch0804_ThemeDemo.axml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:text="Hello,這是引用myThemes自定義主題的頁面。"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/textView1"
        android:gravity="center" />
</LinearLayout>

(2)ch0804ThemeDemo.cs文件

using Android.App;
using Android.OS;
namespace MyDemos.SrcDemos
{
    [Activity(Label = "@string/ApplicationName")]
    public class ch0804ThemeDemo4 : Activity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.ch0804_ThemeDemo4);
        }
    }
}

由於該文件中沒有指定主題,因此它會自動應用清單文件中指定的對所有頁面都起作用的自定義主題。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved