简介

有时候会存在特殊需求:当前的app不同的界面都需要设置为入口进行展示。但是Android系统默认只运行一个app存在一个应用启动图标。其实实现起来一点都不困难。

技术实现

方式一:通过设置属性进行实现多图标

根据官方api介绍,创建app的启动图标实在manifest文件中进行配置的。默认配置:

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">

...

其中在application中配置的icon即应用程序的启动图标icon,label字段就是应用程序情动图标的文字描述,而下面的activity中的intent filter节点就是设置启动图标的详情。目前的代码展示了当前MainActivity是启动界面,和普通界面的区别在于设置了category属性为LAUNCHER。

如果需要实现多个启动图标只需要在目标activity或者任一带有ui界面的组件设置intent-filter节点的catgegory属性值为LAUNCHER即可。测试代码:

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">

android:name=".Main2Activity">

运行之后可以看到桌面存在两个图标一摸一样的图标:

ssda

但是打开之后的界面确不一样:

152

dsf

目前为止,基本功能实现了。但是我们需要的是桌面显示不同的图标和名称。

由于manifest文件是xml,即符合一般的xml解析规则,当子节点和父节点同时存在某一属性时,子节点属性会覆盖父节点属性。修改代码如下:

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">

android:name=".Main2Activity"

android:icon="@drawable/ic01"

android:label="MyTest">

修改了启动图标的icon和名称,运行结果:

ds

可以看到,和样本的效果基本类似。同时发现一个小插曲,当我们在编译运行app时候,会默认打开一个界面。此时我们有两个主界面,怎么指定系统打开界面呢?

很简单,在intent-fiflter节点中添加如下代码即可:

方式二:通过官方api实现多图标

官方api还提供另外一种实现方式:activity-alias 。这种方式是把同一个组件进行别名式操作,对象只有一个,增加了入口而已。

编写方式如下:

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">

android:name="TestAc"

android:targetActivity=".MainActivity"

android:label="MyTest2"

android:icon="@drawable/ic012">

...

其中的必须字段为:

name:设置目标activity的名称;

targetActivity:目标activity的全称;

运行效果:

45

此时点击M有Test2跳转的依然是主界面。因为它的目标activity是主界面。

小结

虽然通过以上方式我们实现了应用程序多图标入口的功能,但是在系统的应用设置列表中,依然只有一个app进程。在桌面随便卸载哪一个图标,整个app都会被卸载。

其中的清单文件属性:

android.intent.category.LAUNCHER:官方解释为最上层的启动。

android.intent.action.MAIN:作为主要入口点,不需要接收数据。

这两个属性的区别个人觉得区分不大。

欢迎大家一起探讨。

android图标成功,Android多启动图标实现相关推荐

  1. linux 已打开文件图标管理,Linux_没有启动图标利用Linux命令在终端打开文件,  在Linux系统中,打开一个 - phpStudy...

    没有启动图标利用Linux命令在终端打开文件 在Linux系统中,打开一个文件很简单,只要有启动图标就可以了,但是如果没有启动图标的话要如何在终端下打开文件呢?使用命令就能很好的解决这个问题,下面小编 ...

  2. android 数据显示成功,android如何将从数据库读取的数据显示在listview中?

    满意答案 jjtu7565 推荐于 2019.09.27 采纳率:43%    等级:12 已帮助:7279人 final SimpleAdapter adapter = new SimpleAdap ...

  3. Android /iPhone/iPad UI之常用图标尺寸规范

    整合的相对比较全面了,如果不足可以指出在补充完整. Android-App 常用图标尺寸规范 出自:http://www.cnblogs.com/libertycode/p/5666088.html ...

  4. 13-Qt使用Ps制作软件启动图标和应用内图标的一般方法于步骤

    13-Qt使用Ps制作软件启动图标和应用内图标的一般方法于步骤 一.本文目标 本文所指的图标包括应用软件的"启动图标"和"应用内图标". 本文虽然分类到qt分类 ...

  5. ubuntu 为可执行程序创建启动图标

    例子:为xmind的可执行程序创建启动图标: 参考1: 首先安装xmind: 下载安装包 解压安装包,运行sudo ./setup.sh安装必要的组件 如果使用64位系统,则进入XMind_amd64 ...

  6. 【错误记录】Android 应用安装后出现两个启动图标 ( 排查应用及依赖库中配置了 android.intent.category.LAUNCHER 的 Activity )

    文章目录 一.报错信息 二.解决方案 一.报错信息 Android 应用安装后 , 出现两个相同的启动图标 , 其中一个可以启动 , 另外一个启动后 , 直接崩溃 ; 卸载其中一个 , 会将整个应用卸 ...

  7. android icon 圆角半径,iOS和安卓APP启动图标的尺寸和圆角值详解

    今天在APP设计交流群里,又有不少的初学的APP设计小伙伴都在问ios端和安卓端的启动图标尺寸大小和圆角半径大小. 第一部分:我们先来看看iOS端的图标的尺寸和圆角大小详解 A.iOS6和之前版本,应 ...

  8. Android 屏幕适配攻略(六)设置通知样图标与启动图标适配

    Android 屏幕适配攻略(六)设置通知样图标与启动图标适配 1 Android中资源文件中的图片加载分析 Android中对屏幕的像素适配处理分类 屏幕密度 对应的标签 对应的像素 120dip ...

  9. Android系统 小米/三星/索尼 应用启动图标未读消息数(BadgeNumber)动态提醒

    在Android手机上,如QQ.微信当有未读消息的时候.我们可以看到在应用的启动图标的右上角会有一个红色圈圈.且圈圈里会动态显示未读消息的数目,如下图显示: 那么该功能是怎么实现的呢? 在万能的互联网 ...

最新文章

  1. 世界上本没有架构,建设的需求多了便有了架构
  2. JDK8特性--Stream(求和,过滤,排序)
  3. DA14580开发血迹12--完整Profile解析(以心率服务为例)
  4. celery开发中踩的坑
  5. fifo算法_【算法学习】分枝限界法
  6. 2x麦克劳林公式_极限求解-泰勒公式理解
  7. FullPage.js – 轻松实现全屏滚动(单页网站)效果
  8. 手游修改 wpe封包 fiddler抓包 逆向破解 gg修改 哪种最厉害?
  9. 一种基于折射反向学习机制与自适应控制因子的改进樽海鞘群算法
  10. 高频直流电源在整改、降压和作用方面解决方案
  11. 规划资源管理常用表格
  12. 试验设计[实验设计]
  13. 安卓平板硬件测试软件,《安兔兔硬件检测》:必备的系统工具
  14. 一大波苹果CMS系统主题来袭
  15. 基于MATLAB平台实现红绿灯(交通灯)识别
  16. libvirt API学习笔记
  17. linux系统的6000端口是什么,3种关闭linux系统端口方法
  18. 合作共赢:加密云储——穿针引线,布局IPFS分布式存储领域
  19. java黑皮书25.18-19----(压缩与解压),带界面,概念版
  20. c语言静态两个数码管显示0-99,按键控制计数,用两个数码管显示0到99。十位数为0的时候,显示为空白...

热门文章

  1. React+Webpack+ES6 兼容低版本浏览器(IE9)解决方案
  2. 前台ajax请求php后台返回成功却进error方法解决
  3. pycharm安装第三方包问题解决
  4. Failed to execute goal net.alchim31.maven:scala-maven-plugin:3.2.2:testCompile问题解决
  5. Spring Boot 2.X 如何优雅的解决跨域问题?
  6. 读取CSV文件并将值存储到数组中
  7. 如何获取查询生成器以字符串形式输出其原始SQL查询?
  8. LINQ的Java等效项是什么? [关闭]
  9. 检索每个组中的最后一条记录-MySQL
  10. 如何在Vim中进行不区分大小写的搜索