动态修改App显示图标

我们可以在应用中集成多个图标,到特定节日显示特殊的图标,好比双11显示打折的图标,双11后显示普通图标。

让我们来看下如何代码设置:

  1. 首先在AndroidManifest.xml文件中添加多个图标,主要使用activity-alias标签



    

        
        
            
                
            
        
        
        
            
                
                
            
        
        
        
        
            
                
                
            
        
    


2 . 代码更改图标,这个主要通过设置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,可以从最近任务列表中移除重新打开。
有兴趣的同学试下哈~

你可能感兴趣的:(动态修改App显示图标)