我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android动态更换应用图标的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android动态更换应用图标的方法

这篇文章主要介绍“Android动态更换应用图标的方法”,在日常操作中,相信很多人在Android动态更换应用图标的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android动态更换应用图标的方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

技术实现

如果说多年以前,实现图标的切换还是一种时髦的技术,那么,我们可以直接使用PackageManager就可以实现动态更换桌面图标。实现的细节是,在Manifest文件中使用标签准备多个Activity入口,没个activity都指向入口Activity,并且为每个拥有标签的activity设置单独的icon和应用名,最后调用SystemService 服务kill掉launcher,并执行launcher的重启操作。

首先,我们在AndroidManifest.xml文件中添加如下代码:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    package="com.xzh.demo">    <!-- 权限-->    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>    <application        android:allowBackup="true"        android:icon="@mipmap/wb_default_logo"        android:label="@string/app_name"        android:roundIcon="@mipmap/wb_default_logo"        android:supportsRtl="true"        android:theme="@style/Theme.AndroidDemo">       ...//省略其他代码        <!-- 默认微博-->        <activity-alias            android:name="com.xzh.demo.default"            android:targetActivity=".MainActivity"            android:label="@string/app_name"            android:enabled="false"            android:icon="@mipmap/wb_default_logo"            android:exported="true">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity-alias>        <!-- 3D微博-->        <activity-alias            android:name=".threedweibo"            android:targetActivity=".MainActivity"            android:label="@string/wb_3d"            android:enabled="false"            android:icon="@mipmap/wb_3dweibo"            android:exported="true">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity-alias>        ... //省略其他    </application></manifest>

上面配置中涉及到的属性如下:

  • android:name:注册的组件名字,启动组件的名称。

  • android:enabled:是否启用这个组件,也就是是否显示这个入口。

  • android:icon:图标

  • android:label:名称

  • android:targetActivity:默认的activity没有这个属性,指定目标activity,与默认的activity中的name属性是一样的,需要有相应的java类文件。

接着,我们在MainActivity触发Logo图标更换逻辑,代码如下:

class MainActivity : AppCompatActivity() {    var list: List<LogoBean> = ArrayList()    var recyclerView: RecyclerView? = null    var adapter: LogoAdapter? = null    override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)        setContentView(R.layout.activity_main)        initView()        initData()        initRecycle()    }    private fun initView() {        recyclerView = findViewById(R.id.recycle_view)    }    private fun initData() {        list = Arrays.asList(            LogoBean(R.mipmap.wb_default_logo, "默认图标", true),            LogoBean(R.mipmap.wb_3dweibo, "3D微博", false),            LogoBean(R.mipmap.wb_cheese_sweetheart, "奶酪甜心", false),            LogoBean(R.mipmap.wb_chocolate_sweetheart, "巧克力", false),            LogoBean(R.mipmap.wb_clear_colorful, "清透七彩", false),            LogoBean(R.mipmap.wb_colorful_sunset, "多彩日落", false),            LogoBean(R.mipmap.wb_colorful_weibo, "炫彩微博", false),            LogoBean(R.mipmap.wb_cool_pool, "清凉泳池", false),            LogoBean(R.mipmap.wb_fantasy_purple, "梦幻紫", false),            LogoBean(R.mipmap.wb_fantasy_starry_sky, "幻想星空", false),            LogoBean(R.mipmap.wb_hot_weibo, "热感微博", false),        )    }    private fun initRecycle() {        adapter =LogoAdapter(this,list);        val layoutManager = GridLayoutManager(this, 3)        recyclerView?.layoutManager = layoutManager        recyclerView?.adapter = adapter        adapter?.setOnItemClickListener(object : OnItemClickListener {            override fun onItemClick(view: View?, position: Int) {                 if(position==1){                     changeLogo("com.xzh.demo.threedweibo")                 }else if (position==2){                     changeLogo("com.xzh.demo.cheese")                 }else if (position==3){                     changeLogo("com.xzh.demo.chocolate")                 }else {                     changeLogo("com.xzh.demo.default")                 }            }        })    }    fun changeLogo(name: String) {        val pm = packageManager        pm.setComponentEnabledSetting(            componentName,            PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP        )        pm.setComponentEnabledSetting(            ComponentName(this, name),            PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP        )        reStartApp(pm)    }    fun reStartApp(pm: PackageManager) {        val am = getSystemService(ACTIVITY_SERVICE) as ActivityManager        val intent = Intent(Intent.ACTION_MAIN)        intent.addCategory(Intent.CATEGORY_HOME)        intent.addCategory(Intent.CATEGORY_DEFAULT)        val resolveInfos = pm.queryIntentActivities(intent, 0)        for (resolveInfo in resolveInfos) {            if (resolveInfo.activityInfo != null) {                am.killBackgroundProcesses(resolveInfo.activityInfo.packageName)            }        }    }}

注意上面的changeLogo()方法中的字符串需要和AndroidManifest.xml文件中的<activity-alias>的name相对应。运行上面的代码,然后点击应用中的某个图标,就可以更换应用的桌面图标,

如下图所示:

Android动态更换应用图标的方法

到此,关于“Android动态更换应用图标的方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android动态更换应用图标的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android动态更换应用图标的方法

这篇文章主要介绍“Android动态更换应用图标的方法”,在日常操作中,相信很多人在Android动态更换应用图标的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android动态更换应用图标的方法”的疑
2023-07-02

Android 应用更换皮肤实现方法

Android应用更换皮肤功能的实现思路 我们可以将皮肤包做成一个apk文件,在应用apk中读取皮肤包中的数据。 应用apk读取皮肤包apk的数据的条件 1. 有相同签名 2. And
2022-06-06

详解Android的Splash启动图的两种动态切换方式

冷启动的时候因为要考虑网路原因,默认显示一张本地图片。热启动的时候会根据获取的启动图是否是新动态替换。 以下是实现动态替换的两种方式: Glide的缓存下载 Glide中的downloadOnly方法可实现图片的下载功能 图片下载Obser
2022-06-06

Android开发中实现home图标动画切换效果的方法

本篇文章为大家展示了Android开发中实现home图标动画切换效果的方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。如图所示:实现这个效果仅需几步:1.首先,该页面的布局是一个DrawerLay
2023-05-31

Android实现GridView中ImageView动态变换的方法

本文实例讲述了Android实现GridView中ImageView动态变换的方法。分享给大家供大家参考。具体如下: 使用YY影音的时候,发现点击GridView的某一个Item,Item里面的图标会在按下的时候发生变换,变成另外一个图片。
2022-06-06

Android应用自动更新功能实现的方法

本文给大家分享Android里应用版本更新功能这一块的实现。 一个好的应用软件都是需要好的维护,从初出版本到最后精品,这个过程需要版本不停的更新,那么如何让用户第一时间获取最新的应用安装包呢?那么就要求我们从第一个版本就要实现升级模块这一功
2022-06-06

android实现添加耳机状态图标的方法

本文实例讲述了android实现添加耳机状态图标的方法。分享给大家供大家参考。具体如下: 原生态的android系统是没有耳机插入或未插入的状态指示的,本文就是讲解如何添加耳机插入的状态指示。效果图如下如图,当插入耳机后,在status b
2022-06-06

Windows 7 驱动器图标更换方法与软件下载地址

今天,就给大家介绍两款可以个性化更换Windows7驱动器图标的小软件。   先看下效果:      图为:变换之前   图为:变换之后   虽然两款小软件都是英文界面,不过因为由于功能相当简单,相信大家看到界面就会操EaWNCN作了,下面
2023-05-25

Android实现动态切换组件背景的方法

本文所述的程序实现的功能为在软件中动态的选择组件背景,系统皮肤,自定义吐司背景等。 为实现这一要求,就需要用到安卓中的SharedPrefence的功能,首先在设置里面写一个控件,设置一个点击监听器,点击的时候显示一个Alert选择弹窗,让
2022-06-06

Android实现Listview异步加载网络图片并动态更新的方法

本文实例讲述了Android实现Listview异步加载网络图片并动态更新的方法。分享给大家供大家参考,具体如下: 应用实例:解析后台返回的数据,把每条都显示在ListView中,包括活动图片、店名、活动详情、地址、电话和距离等。 在布局文
2022-06-06

用DiskGenius转换动态磁盘的方法

用DiskGenius(软件下载地址https://www.jb51.net/softs/44330.html)转换动态磁盘 兼说 Windows 7 不能导入编程客栈动态磁盘的问题,提示说,包数据有错误。 在 windows
2023-05-26

win7更换主题会导致个性化图标也被更换的解决方法

php会弄个性化图标的人,经常在看腻一个主题的时候,都会选择换一个主题,但是最悲剧的事情就是。我一换主题所有的个性化图标都要重新设置一次,有没有方法让我更换主题个性化图标还存在呢?1、右键桌面空白处,选择个性化设置2、www.cppcns.
2023-06-01

Surface Win8应用自动更新图文设置方法

如何让你的Surface设备中的Win8应用自动更新呢?下面且看小编慢慢来为大家道来。 在WIN8商店上面,点击设置——选择——应用更新。将里面的自动更新下载打开就可以了。哈哈,就是这么简单哦
2022-06-04

Android编程实现图标拖动效果的方法

本文实例讲述了Android编程实现图标拖动效果的方法。分享给大家供大家参考,具体如下: 最近优化图标拖动时的速率,稍微有一点点效果,直接把代码贴出来,有兴趣一起讨论的朋友可以给我留言。 代码如下: DragView.javapackage
2022-06-06

Android应用中图片浏览时实现自动切换功能的方法详解

先给最终效果图:当我们在最下边的gallery中切换图片时,上面的大图片会自动切换,切换时有动画效果哦,很简单的一个程序,有待完善更多的功能! activity代码:package cn.com.chenzheng_java; impor
2022-06-06

android编程实现局部界面动态切换的方法

本文实例讲述了android编程实现局部界面动态切换的方法。分享给大家供大家参考,具体如下: 局部界面固定,局部界面可以动态切换。效果如下:这个效果由3个layout构成 main.xml
2022-06-06

Android编程实现应用自动更新、下载、安装的方法

本文实例讲述了Android编程实现应用自动更新、下载、安装的方法。分享给大家供大家参考,具体如下: 我们看到很多Android应用都具有自动更新功能,用户一键就可以完成软件的升级更新。得益于Android系统的软件包管理和安装机制,这一功
2022-06-06

Android使用addView动态添加组件的方法

在项目开发中,我们经常需要进行动态添加组件,其中可添加的部分有两项:布局和组件 其中,添加的布局主要有RelativeLayout型(相对布局)的和LinearLayout(线性布局)添加的组件主要有文本显示框,编辑框,按钮等组件。 下面
2022-06-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录