(Android) Android中改變Activity的不同icon:activity-alias

Android設置title中的Icon有幾種方法,介紹如下:

一種是直接在AndroidManifest.xml文件中設置android:icon屬性,這種方法簡單有效,應該算是我們最常用的設置Icon的方法:

        <activity android:name=".activities.ImportExportSimCardActivity"
            android:label="@string/exportsimcardtitle"
            android:icon="@drawable/ic_activity_export_sim"
            android:theme="@style/ImportExportSimCardActivityTheme" >
        </activity>

但有些時候我們希望在代碼中可以動態更改Icon,或者說有可能兩個Activity其實共用一份代碼,需要看情況設置icon,如下面的情況:

Android中改變Activity的不同icon:activity-alias - 乂乂 - 一個人,一支菸  ·~~

於是另一種方法,在代碼中改變。可以使用 requestWindowFeature(Window.FEATURE_LEFT_ICON)setFeatureDrawableResource()函數。

package com.android.importexport; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.Window; 
public class Test01 extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
         
        requestWindowFeature(Window.FEATURE_LEFT_ICON); 
        // requestWindowFeature()必須在setContentView()之前,否則會報錯;
        // requestWindowFeature()操控的對象還有:
        // 1.DEFAULT_FEATURES:系統默認狀態,一般不需要指定
        // 2.FEATURE_CONTEXT_MENU:啓用ContextMenu,默認該項已啓用,一般無需指定
        // 3.FEATURE_CUSTOM_TITLE:自定義標題。當需要自定義標題時必須指定。如:標題是一個按鈕時
        // 4.FEATURE_INDETERMINATE_PROGRESS:不確定的進度
        // 5.FEATURE_LEFT_ICON:標題欄左側的圖標
        // 6.FEATURE_NO_TITLE:無標題
        // 7.FEATURE_OPTIONS_PANEL:啓用“選項面板”功能,默認已啓用。
        // 8.FEATURE_PROGRESS:進度指示器功能
        // 9.FEATURE_RIGHT_ICON:標題欄右側的圖標
         
        setContentView(R.layout.main);  
        setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, R.drawable.ic_activity_export_sim); 
    } 
}

以上代碼可以解決icon改變的問題,但是在Android3.0 HoneyComb中ActionBar會無法獲取(getActionBar返回null),而且需要重新自定義title的格式了。無法使用HoneyComb自定義的風格,這個很雞肋。

於是可以考慮第三種方法,使用activity-alias,它可以快速指向到一個Activity,但同時又能各自定義不同的icon,實現如下:

<!-- <Kenny.z>> Activity for Export Contacts to SimCard -->
        <activity android:name=".activities.ImportExportSimCardActivity"
            android:label="@string/exportsimcardtitle"
            android:icon="@drawable/ic_activity_export_sim"
            android:theme="@style/ImportExportSimCardActivityTheme" >
        </activity>
        <activity-alias android:name="ExportSimCardActivity"
         android:targetActivity=".activities.ImportExportSimCardActivity"
            android:label="@string/exportsimcardtitle"
            android:icon="@drawable/ic_activity_export_sim"
            android:theme="@style/ImportExportSimCardActivityTheme">
            <intent-filter>
                <action android:name="com.android.contacts.action.EXPORT_TO_SIM" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity-alias>
        <activity-alias android:name="ImportSimCardActivity"
         android:targetActivity=".activities.ImportExportSimCardActivity"
            android:label="@string/exportsimcardtitle"
            android:icon="@drawable/ic_activity_import_sim"
            android:theme="@style/ImportExportSimCardActivityTheme">
            <intent-filter>
                <action android:name="com.android.contacts.action.IMPORT_FROM_SIM" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity-alias>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章