動態(tài)修改App顯示圖標

我們可以在應用中集成多個圖標,到特定節(jié)日顯示特殊的圖標,好比雙11顯示打折的圖標,雙11后顯示普通圖標。

讓我們來看下如何代碼設(shè)置:

  1. 首先在AndroidManifest.xml文件中添加多個圖標,主要使用activity-alias標簽
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="test.tlkg.com.icotest">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <!--去掉<category android:name="android.intent.category.LAUNCHER" />這句-->
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
        </activity>
        <!--默認顯示的圖標enabled=true-->
        <activity-alias
            android:name=".icon_tag"
            android:enabled="true"
            android:icon="@mipmap/ic_launcher"
            android:label="圖標"
            android:targetActivity=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity-alias>
        <!--代碼設(shè)置要更改的圖標,enabled=false,這里可以根據(jù)需要添加多個activity-alias節(jié)點-->
        <!--這個為了演示只添加了兩個圖標,一個默認的,一個代碼設(shè)置要更改的-->
        <activity-alias
            android:name=".icon_tag_new"
            android:enabled="false"
            android:icon="@mipmap/ic_launcher_round"
            android:label="圖標"
            android:targetActivity=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity-alias>
    </application>

</manifest>

2 . 代碼更改圖標,這個主要通過設(shè)置enable屬性來改變要顯示的圖標,示例代碼如下:(Kotlin版)

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        btn.setOnClickListener {
            switchIco(1)
        }
    }

    /**
     * 切換桌面圖標,1普通,2圓形
     */
    fun switchIco(useIco: Int = 1) {
        try {
            val icon_tag = "test.tlkg.com.icotest.icon_tag"
            val ico_tagnew = "test.tlkg.com.icotest.icon_tag_new"
            val pm = packageManager
            val componentName = ComponentName(baseContext, icon_tag)
            val componentNamenew = ComponentName(baseContext, ico_tagnew)
            if (useIco == 1) {
                pm.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP)
                pm.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP)
            } else if (useIco == 2) {
                pm.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP)
                pm.setComponentEnabledSetting(componentNamenew, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP)
            }
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }
}

這里要重要啟動下App,可以從最近任務(wù)列表中移除重新打開。
有興趣的同學試下哈~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,030評論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,232評論 2 33
  • 什么是愛情,什么又是大學時代的愛情。我不知道有沒有人知道,但是我從來都沒明白過,也從來沒有清楚過。 ...
    只是安良閱讀 271評論 0 0
  • 空降部隊:主要是以空降到戰(zhàn)場為作戰(zhàn)方式,其特點是裝備輕型化、高度機動化、兵員精銳化。一般獨立建制為師級或旅級,直接...
    文靜大公主閱讀 1,179評論 0 1

友情鏈接更多精彩內(nèi)容