Android之制作App的图标

news/2025/3/14 21:36:52/

在过去,Android应用程序的图标都是应该放到相应的分辨率的mipmap目录下,不过从Android8.0开始,Google已经不再建议使用单一的一张图片来作为应用程序的图标,而是应该使用前景和背景分离的图标设计方式。具体来讲,应用程序的图标应该被分为两层:前景层和背景层。前景层用来展示应用图标的Logo,背景层用来衬托应用图标的Logo。需要注意的是,背景层在设计的时候只允许定义颜色和纹理,不能定义形状。
那么图标的形状由谁来定义呢?Google将这个权利交给手机厂商。手机厂商会在图标的前景层和背景层之上再盖上一层mask。这个mask可以是圆角矩形,圆形或者方形。由具体手机厂商而定,这样就可以将手机上所有应用程序的图标裁剪成相同的形状,从而统一图标的设计规范。
如下两个图片是8.0及以上系统的图标原理示意图。可以看到最终裁剪出的应用程序图标也是圆形的。
在这里插入图片描述

裁剪后的应用程序图标。
在这里插入图片描述
了解了工作原理我们可以借助AndroidStudio工具来制作能够兼容各个Android系统版本的应用程序图标。点击导航栏中的File->new->Image Asset打开Asset Studio工具。如下图
在这里插入图片描述
在Asset Studio中,左边是操作区域,右边是预览区域。
在这里插入图片描述
先来看操作区域,第一行的Icon Type保持默认就可以了,表示同时创建兼容8.0系统以及老版本系统的应用图标。第二行的Name用于指定应用图标的名称,这里保持ic_launcher的命名即可。这样可以覆盖掉之前自动生成的应用程序图标。接下来的三个页签,Foreground Layer用于编辑前景层,Background Layer用于编辑背景层,Legacy用于编辑老版本系统的图标。
再来看预览区域,它的作用就是预览应用图标的最终效果。再预览区域中给出了可能生成的图标形状。每个图标都有一个圆圈,这个圆圈叫做安全区域,必须保证图标的前景层完全处于安全区域才行,否则可能会出现应用图标的Logo被手机厂商的mask裁剪掉的情况。
在Foreground Layer中选取之前准备好的那张Logo图片,并通过下方的Resize拖动条对图片进行缩放,以保证前景层的所有内容都在安全区域中的。然后在Background Layer中选择"Color"这种Asset Type模式,并使用#309C78这个颜色值作为背景层的颜色。
在这里插入图片描述
在预览部分我们可以看到我们的图标已经能够应对各种不同类型的mask了。
接下来点击“next”会进入一个确认图标生成路径的界面,然后直接点击界面上的“Finish”按钮就可以完成图标的制作了。所有图标相关的文件都会被生成到相应分辨率的mipmap目录下。
在这里插入图片描述

其中有一个mipmap-anydpi-v26目录中放的不是图片,而是xml文件,这是什么意思呢?其实只要Android8.0及以上系统的手机,都会使用这个目录下的文件来作为图标。通过打开ic_launcher.xml文件来查看它的代码:

<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"><background android:drawable="@color/ic_launcher_background"/><foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>

这就是适配Android8.0及以上系统应用图标的标准写法。可以看到,这里在< adaptive-icon >标签中定义了一个< background >标签用于指定图标的背景层,引用的是我们之前设置的颜色值。又定义了一个< foreground >标签用于指定图标的前景层,引用的就是我们之前准备的那张logo图。
那么这个ic_launcher.xml文件在哪里被引用呢?其实只要打开AndroidManifest.xml文件
在这里插入图片描述
可以看到,< application >标签的android:icon属性就是专门用于指定应用程序图标的,这里将图标指定了@mipmap/ic_launcher,那么在Android8.0及以上系统中,就会使用mipmap-anydpi-v26目录下的ic_launcher.xml文件来作为应用图标。7.0及以上系统就会使用mipmap相应分辨率下的ic_launcher.png图片来作为应用图标。另外你可能会注意到< application >标签下还有一个android:roundIcon属性,这是一个只适用于Android7.1系统的过渡版本,很快就被8.0系统的新图标适配方案所替代了。
运行程序可以看到我们的桌面应用。
在这里插入图片描述


http://www.ppmy.cn/news/39419.html

相关文章

【python设计模式】18、仲裁者模式

哲学思想&#xff1a; 仲裁者模式是一种软件设计模式&#xff0c;它的哲学思想是将对象之间的交互行为转移到第三方对象&#xff0c;以避免直接耦合。该模式的核心思想是&#xff1a;当对象之间需要通信时&#xff0c;它们不直接相互交互&#xff0c;而是通过一个中介者对象来…

电脑+浏览器——黑色护眼

电脑浏览器——黑色护眼电脑办公Excel主题&#xff0c;黑色表格&#xff0c;黑色背景电脑办公 Excel https://www.kewenba.com/12562.html 主题&#xff0c;黑色 表格&#xff0c;黑色背景 【页面布局】-【背景】&#xff0c;然后选择一张黑色图片

web基础

web基础 与http 域名&#xff1a;由于IP地址不易记忆&#xff0c;域名用来代替IP地址&#xff0c; &#xff08;DNS&#xff09;服务与配置&#xff1a;先在本地hosts里去找&#xff0c;然后在本地域名服务器递归查找&#xff0c;本地域名服务器在一级二级按域名长度迭代查找后…

STM32F4_串口通信详解

目录 1. 串口相关介绍及使用 1.1 串口设置的一般步骤&#xff1a; 1.1.1 串口时钟和GPIO时钟使能 1.1.2 设置引脚复用器映射 1.1.3 GPIO端口模式设置 1.1.4 串口参数初始化 1.1.5 开启中断并且初始化NVIC&#xff0c;使能中断 1.1.6 使能串口 1.1.7 串口数据发送与接收…

java基础之抽象类与接口

文章目录1.抽象方法和抽象类2.抽象类的作用3.接口4.接口和抽象类的异同5.面向接口编程1.抽象方法和抽象类 抽象方法和抽象类必须使用abstract修饰符来定义&#xff0c;有抽象方法的类只能被定义成抽象类&#xff0c;抽象类里可以没有抽象方法。 抽象类必须使用abstract修饰符来…

咖啡业:混战不止

配图来自Canva可画 不知不觉间&#xff0c;作为舶来品的咖啡已经深入到人们的日常生活中&#xff0c;尤其是对于上班族而言&#xff0c;咖啡更是成为了提神醒脑的一大“利器”&#xff0c;因此&#xff0c;大街小巷出现了越来越多咖啡店的身影。而随着消费者消费观念的不断改变…

pt05Encapsulationinherit

Encapsulation &inherit 封装继承 封装 向类外提供必要的功能&#xff0c;隐藏实现的细节, 代码可读性更高优势&#xff1a;简化编程&#xff0c;使用者不必了解具体的实现细节&#xff0c;只需要调用对外提供的功能。私有成员&#xff1a;作用&#xff1a;无需向类外提供…

有效的数独(数组)

请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请参考示例图&#xff09; …