Android 2.0环境下的图标设计原则

国产安卓手机免GMS运行Gemini的工程化方案 Gemini作为谷歌深度集成的AI助手,其本质是一套依赖身份认证、模型推理与上下文同步的云服务架构。在缺乏谷歌移动服务(GMS)的国产安卓设备上,原生APK无法启动并非技术缺陷,而是服务链路断裂所致。真正可行的路径是解耦前端容器与后端能力——以WebView复用Chrome登录态,通过本地代理网关中继OAuth2.0令牌、净化响应头、模拟TLS指纹,并采用ONNX Runtime Mobile适配骁龙、麒麟、天玑等国产芯片的硬件加速单元。该方案兼顾合规性与生产可用性,使文本理解、多轮对话、代码生成等核心能力 阅读详情

Android 2.0环境下的图标设计原则

 
创造一个统一外观,感觉完整的用户界面会增加你的产品附加价值。精炼的图形风格也使用户觉得用户界面更加专业。

本文档提供了一些信息,帮助你如何在应用界面的不同部分创造图标来匹配 Android 2.x框架下的普遍风格。遵守这些原则会辅助你为用户创造一个流畅而统一的体验。

为了使你创建图标的工作进行的更加快速,你可以下载 Android 图标模板包。更多信息请浏览Android图标模板包的使用。

提供特定密度的图标集

Android系统被设计在一系列屏幕尺寸和分辨率不同的设备上运行的。当你为自己的应用设计图标时,必须知道,你的应用有可能在任何设备上安装运行。正如支持多屏幕文档中所描述,  Android 为你直接提供这样的图标,他们会在任何设备上正确的显示,无论这些设备的屏幕大小和分辨率如何。

 一般来说,推荐的方式是为三种普遍的屏幕密度(如表1)中的每一种都创造一套独立的图标。然后,把他们储存在你的应用中特定的资源目录下。当你的应用运行时,Android平台将会检查设备屏幕的特性,从而加载特定密度资源目录下相应的图标。想要了解更多如何存储特定密度资源的信息,请参阅创造合格屏幕尺寸和密度的办法目录。

 Android 设备的屏幕密度基线是中等。因此,一种被推荐的为多种屏幕密度创造图标方式是:

  1. 首先为基准密度设计图标(看表一为实际的像素尺寸设计的图标)。
  2. 把图标放在你的应用的默认可绘制资源中,然后在 Android 可视化设备(AVD)或者HVGA设备如 T-Mobile G1中运行应用。
  3. 根据需要测试和调整你的基准图标。
  4.  当你对在基准密度下创建的图标感到满意的时候,为其他密度创造副本。
    •  把基准图标按比例增加为150%,创造一个高密度版本。
    •  把基准图标按比例缩小为75%,创造一个低密度版本。
  5.  把图标放入你的应用的特定密度资源目录中。例如:
    •  中密度版本在 res/drawable-mdpi/ 目录下运行(或在默认 res/drawable/ 目录下运行)
    •  高密度版本在 res/drawable-hdpi/目录下运行。
    •  高密度版本在res/drawable-ldpi/目录下运行。
  6. 如果需要,测试和调整高密度和低密度的图标。

关于如何创造和管理多密度图标集,参阅对设计师的小提醒

表 1. 对三种普遍屏幕密度中每一种密度的所需要的成品尺寸图标的摘要

Icon Type对于普遍的屏幕密度标准版本尺寸(像素表示),
 低密度屏幕(ldpi)中密度屏幕(mdpi) 高密度屏幕(hdpi)
启动器 36 x 36 px 48 x 48 px 72 x 72 px
菜单 36 x 36 px 48 x 48 px 72 x 72 px
状态栏 24 x 24 px 32 x 32 px 48 x 48 px
标签24 x 24 px 32 x 32 px 48 x 48 px
对话24 x 24 px 32 x 32 px 48 x 48 px
列表视图
24 x 24 px 32 x 32 px 48 x 48 px

启动器图标

启动器图标是一个图形,代表了设备的主页和启动器窗口中的应用。

用户会在点击主页底部的图标中打开启动器。启动器打开,显示所有已经安装应用的图标。他们被以格状排列。用户选择一个应用,通过任何可以得到的硬件导航控制,例如轨迹球点击启动器图标。

用户也可以把一个图标从启动器窗口中拖出来,放在主页上,来更方便的访问应用。再这种情况下,系统会显示你的应用的启动器图标在主页墙纸上的映射。此渲染的映射尺寸与在启动器中渲染的尺寸相同。

系统控制了所有启动器图标的缩放,所以他们被渲染为统一的高和宽。被渲染的启动器图标的实际像素尺寸在随着设备屏幕的像素尺寸和屏幕密度的不同而显示的不同。为了保证你的图标渲染效果最佳,请提供为低密度,中密度和高密度屏幕制作的图标。想得到更多信息,请参阅上面的提供特定密度图标集或下面的为设计师的建议。

风格

你创造启动器图标应该符合以下原则的一般风格。这个准则并不限制你可以做的图标,而是强调你的图标可以在其他设备上共享的普遍的办法。图1提供了例子。

图 1.启动器图标风格的插图

干净和现代:

  •  启动器图标应该是现代的,有时有点古怪,但是他们不应该是过时和粗糙的。如果可能的话,你应该避免过度使用象征性的隐喻。

简单和标志性的:

  • Android启动器图标应该是自然的抽象表现;你的图标应该高度简化和夸张,以至于他们可以在小尺寸时合适显示。你的图标不应该过于复杂。
  • 尝试用一个简单的部分作为整体的象征性的代表(例如,音乐图标以扬声器作为特征)。
  • 考虑使用自然轮廓和形状,包括几何的和有机的,与现实(不是照片般的真实)映射。
  • 你的图标不应该呈现一个对更大的图像不正确的观点。

触觉和质感:

  • 图标应该表现为不平淡的,有质感的材料。更多信息请看下面的材料和色彩。

面向前方和顶部照明:

  • Android 2.0和以后的平台的新规定: Android启动器图标应该面向前方,透视非常小,而且应该顶部照明。
此外,注意所有图标应该有独立的文字标签,而不是把文字设计嵌入到图标里面,把努力用在使图标有特色和难忘中去。

要看更多Android系统下应用的启动器图标的案例,请参阅标准启动器图标。

做什么和别做什么

以下有一些在你为自己的应用设计一个图标的过程中“可以做的的和不要做的”例子

Android启动器图标是...
  • 现代的,简约的,不平坦的,有触感,和质感的
  • 面向前方和顶部明亮,整体而言,色彩在一定的色谱中
Android 启动器图标不是...
  • 过时的,过分复杂,光滑的,平坦的
  • 旋转的, 剪裁不正的,过于深色的
Side-by-side examplesof good/bad icon design.

图 2. 启动器中"做什么和别做什么"的例子

质感和颜色

启动器的图标应该利用触觉,顶部照明,使用纹理材料。即使你的图标只是一个简单的形状,你应该尝试把它们当做真实世界的材料渲染。

该平台的默认应用中启动器图标用了以下图3所示的材料。 你的图标可以使用这些材料也可以创建新的材料。

Android 启动器图标经常包括由较小的形状组成一个较大的形状,并结合成一个中立的形状和一个中立的颜色。图标可能会使用中性色彩的组合,但保持较高的对比度。如果可能的话,每个图标不应该使用超过一个原色。

启动器的图标应该使用一个又限制的调色板,包含一系列中立的颜色和原色。该图标不应该过分饱和。

推荐的启动器图标调色板应用,如图4所示。你可以使用条侧板中的基本颜色和高亮元素。你可以使用白色到黑色垂直线性渐变叠加一起的调色板的颜色。这产生的印象是,光从顶部照射进来,且保持颜色的低饱和度。

图 3.你可以用它来创建你的图标的材料的例子.

图. 从推荐调色盘中选出的基本和高亮颜色组合形成的材料的例子

 当你从简易的调色盘中取出一个高亮颜色组成材料时,你可以创造如图5所示的材料组成。为了帮助你开始,图标包(icons pack)包括一个Photoshop模板文件(Launcher-icon-template.psd),文件提供了默认的材料,颜色和梯度。 

5. 推荐图标调色板.

尺寸和位置

启动器的图标应该使用不同的形状和形式,而且这些必须缩被缩放和定位来创建一致的视觉重量。

图6展示了图标放置在各版本中的不同的方式。至于更详细的描述,就是为了制造一个一致的直觉质量,并允许加入阴影,你应该使图标比实际版本中的范围小一些。如果你的图标是方形或近方形,尺寸应该更小。

  • 为全版本边界框显示为红色。
  • 推荐的实际图标边界框显示为蓝色。该图标框的大小比完整版中的尺寸更小,以便有空间包含阴影和特殊的图标处理。
  • 对于方形图标,推荐的边界框是橙色显示的。为正方形图标框比较小是因为要在两种类型的图表中建立同样的视觉重量。
  1. 高密度屏幕(hdpi) 的图标尺寸:
    1. 全版本: 72 x 72 px
    2. 图标: 60 x 60 px
    3. 正方形图标: 56 x 56 px
  1. 中密度屏幕(mdpi) 的图标尺寸:
    1. 全版本: 48 x 48 px
    2. 图标: 40 x 40 px
    3. 正方形图标: 38 x 38 px
  1. 低密度屏幕(ldpi) 的图标尺寸:
    1. 全版本: 36 x 36 px
    2. 图标: 30 x 30 px
    3. 正方形图标: 28 x 28 px

图 6. 图标版本范围中图标的尺寸和位置.

使用启动器图标模板

Android的图标模板包2.0是一个包含默认图标的材料和颜色调色板的模板。该模板为psd格式,方便Photoshop或相似的图像编辑器编辑。

To get started, fir要开始使用,首先下载 Android的图标模板包2.0.

一旦你下载了模板包,解压缩,并在Adobe Photoshop或类似的图片编辑器中中打开 Launcher-icon-template.psd ,注意调色板的材料和颜色。您可以使用该模板创建一个启动器的图标作为起点。

在创建您的图标之后,你可以按照以下规范添加阴影效果,作为你创造的合适的图片大小。

WVGA (高密度) 屏幕的阴影:

  1. 效果: 底部阴影
  2. 颜色: #000000
  3. 混合模式: 多重
  4. 不透明度: 75%
  5. 角度: 90°
  6. 距离: 2px
  7. 扩展: 0%
  8. 尺寸: 5px

HVGA (中密度) 屏幕阴影:

  1. 效果: 底部阴影
  2. 颜色: #000000
  3. 混合模式: 叠加
  4. 不透明度: 75%
  5. 角度: 90°
  6. 距离: 1px
  7. 扩展: 0%
  8. 尺寸: 3px

当添加了阴影,图标制作完成后,输出一个格式为PNG的透明文件,以确保您的图标在高密度屏显示大小为72 x72像素和在中密度屏显示大小为48 x48像素。关于为什么你应该为高,中,低密度的屏幕提供不同的启动器版本,参阅支持多种屏幕.

菜单图标

菜单图标是一个图形元素,当用户按下菜单按钮时在向用户显示菜单,在弹出菜单里显示。他们是平面展示的。菜单图标元素不能表现为3D或者透视的。

正如提供特定密度图标集中所描述的,你应该为低,中,和高密度的屏幕制作相应的图标集。这可以确保你的图标在一系列安装你的应用的设备中正常显示。见表1 所建议的为每种密度所创造的图标尺寸。此外,请参阅对设计师建议 中关于如何使用多组图标。

结构
  • 为了保持一致性,所有的菜单图标必须使用相同的原调色板和相同的效果。欲了解更多信息,参阅菜单图标颜色调色板 。
  • 菜单图标应包括圆角,要保证逻辑正确。例如,在图7中,合理表现圆角的部分是房顶而不是建筑余下的部分。
  • 所有这个页面上的特定尺寸是建立在一个48x48像素的画板,6像素安全边栏的基础上的。
  • 图标菜单效果(外发光)在灯光,效果,阴影 中被描述,它在必要时可以与6px安全边栏重叠。而基础形状必须始终留在安全边栏内。
  • 最后的图形必须导出为一个透明的PNG文件。
  • 在Adobe Photoshop中制作的菜单图标模板可以在图标模板包中得到。
A view of menuicon structure.

图 7.

菜单图标中的安全栏和圆角 。 图标尺寸是48x48.

菜单图标是平的。轻微凹陷和一些其他特效,如下所示,可以创造纵深感。

A view of light, effects, and shadows for menu icons.

图 8.菜单图标的灯光,特效和阴影.

1.前部:从原色调色板中挑出颜色填充渐变
2.内投影:黑色 | 20 % 不透明度
角度90° | 距离 2px
大小 2px
3.外发光:白色 | 55% 不透明度
扩展 10% |大小 3px
5.内斜角:

深度1%

角度 90° | 高度 10°
发光白色70%不透明度
阴影黑色 25% 不透明度

Color palette, white白色
r 255 | g 255 | b 255
用于外发光和斜面的高光。
Color palette, medium gradient渐变填充
1:  r 163 | g 163 | b 163
2:  r 120 | g 120 | b 120
用作颜色填充。
Color palette, black黑色
r 0 | g 0 | b 0
用于内部阴影和斜面的阴影。
  1. 使用工具如Adobe Illustrator创建基本形状。
  2. 导入到一个像Adobe Photoshop的工具,把它放置在48x48像素的透明的背景的图像上。注意安全栏。
  3. 增加如图8所描述的效果。
  4. 导出一个48x48像素的透明PNG格式的图标。
"做这些和不要做这些"

在为你的应用做菜单图标时,下面是一些“做这些和不要做这些”要考虑的例子。

状态栏图标

状态栏图标用来在状态栏中展示你的应用中的通知,他们与菜单图标非常相似,但是更加小,对比度更高。

正如提供特定密度图标集中所描述的,您应该为低,中和高密度的屏幕制作独立的图标集。这可以确保你的图标在一系列安装了你的应用的设备中显示正常。见表为每个密度屏幕所建议的尺寸。此外,请参阅对设计师的建议中关于如何创建图标集的描述。

结构
  • 圆角必须始终被应用到基础的形状中和状态栏图标细节中,如图9所示。
  • 所有这个页面上的特定尺寸是建立在一个25x25像素的画板,2像素安全边栏的基础上的。
  • 状态栏图标可以在必要时与安全栏左右重叠,但绝不能与安全栏的顶部和底部重叠。
  • 最后的图形必须导出为一个透明的PNG文件。
  • 在Adobe Photoshop中制作的菜单图标模板可以在图标模板包中得到。
A view ofstatus bar icon structure.

图 9.

状态栏图标中的安全栏和圆角 。 图标尺寸是25x25.

  

状态栏图标略有凹凸感的,高对比度的,绘制的图形可以加强对小尺寸的清晰度。

A view oflight, effects, and shadows for status bar icons.

图 10. 状态栏图标的灯光,特效和阴影.

1.前部:用原色板种颜色渐变填充
2.内部斜角:深度 100% | 方向 向下
尺寸0px |角度 90° |
角度 30°
高光 白色 75% 不透明度
阴影 黑色75% 不透明度
3.细节:白色
4.缺失细节:色板中灰色渐变
+ 内部斜角: 平滑 | 深度 1% | 方向向下| 大小 0px | 角度 117° | 
海拔 42° | 高光 白色70% | 无阴影
只有状态栏图标相关的手机功能使用全彩色,其他所有状态栏图标应保持单色。
Color palette, white 白色
r 255 | g 255 | b 255
用于图标内部细节和斜面的高光。
Color palette, grey gradient灰色渐变
1:  r 169 | g 169 | b 169
2:  r 126 | g 126 | b 126
用于图标内部缺失细节。
Color palette, fill gradient填充渐变
1:  1 r 105 | g 105 | b 105
2:  r 10 | g 10 | b 10
用于颜色填充.
Color palette, black黑色
r 0 | g 0 | b 0
用于斜面的阴影。
  1. 在Adobe Photoshop的以及类似的工具中,创建25x25像素的透明背景的基础形状的图像。考虑到安全边栏,保持上下2个像素的空白。
  2.  增加如图9所示的圆角。
  3.  增加如图10所示的灯光,特效和阴影。
  4.  输出一个PNG格式的透明图标,大小为25x25 px。
"做这些和不要做这些"

在为你的应用做状态栏图标时,下面是一些“做这些和不要做这些”要考虑的例子。

标签图标

标签图标是用来表示在一个多选项界面里的单独的标签元素的图形。每个标签图标有两种状态:未选中和选中。

正如提供特定密度图标集中所描述的,你应该为低,中,和高密度的屏幕制作相应的独立图标集。这可以确保你的图标在一系列安装你的应用的设备中正常显示。见表1所建议的为每种密度所创造的图标尺寸。此外,请参阅对设计师的建议 中关于如何使用多组图标。

结构
  • 未选定的标签图标和菜单图标具有相同的填充渐变和特效,但没有外部发光。
  • 被选择的标签图标,看上去像未选择的标签图标,但有一个暗淡的内部阴影,且和对话图标有着相同的前部渐变。
  • 标签图标有一个 1像素的安全边栏,且安全边栏只应该和抗混淆圆形的边缘重叠。
  • 此页面上指定的所有尺寸都基于一个大小为32x32像素的画板。在 Photoshop模板内,对边缘栏保持1像素的填充。
  • 最后的图像必须导出为一个32x32像素的透明PNG文件。
  • 在Adobe Photoshop制作的标签图标模板可以在标签模板包中得到。
A view ofunselected tab icon structure.

图 11. 未选中的标签图标的安全边栏和填充渐变。图标大小为32X32。

A view ofselected tab icon structure.

图 12. 已选中的标签图标的安全边栏和填充渐变。图标大小为32X32。

未选中的标签图标

灯光,特效和阴影

未选中的标签图标 看上去像以选中的标签图标, 但是有一个微弱的内部阴影, 而且和对话图标有着相同的前部渐变。

A viewof light, effects, and shadows for unselected tab icons.

图 13. 未选中的标签图标的灯光,特效和阴影.

1.前部:渐变  | 角度 90°
底部颜色: r 223 | g 223 | b 223
顶部颜色: r 249 | g 249 | b 249
底部颜色 位置: 0%
顶部颜色位置: 75%
2.内部投影:黑色 | 10 % 不透明度 | 角度 90° 距离 2px |大小 2px
3.内斜面:深度 1% | 方向 向下 | 大小 0px | 角度 90° | 高度 10°
高光 白色 70% 不透明度
阴影 黑色 25% 不透明度
  1. 用如Adobe Illustrator或类似的工具创建基本图形。
  2. 导入到Adobe Photoshop或类似的工具中,把它在32x32像素,透明背景的图片中合适放置。
  3. 如图13,用合适的滤镜增加特效
  4. 把图标导出为一个32x32像素的PNG透明文件。

被选择的标签图标

已选择的标签图标和菜单图标具有相同的填充渐变和特效,但没有外部发光。

A view oflight, effects, and shadows for selected=

图 14. 被选择的标签图标的灯光,特效和阴影.

1.前部: 全渐变.
2.内部投影:黑色 | 20% 不透明度 |
角度 90° | 距离 2px |
大小 2px
3.内斜角:深度 1% | 角度  | 大小 0px | 角度 90° |
高度 10°
高光 白色 70% 不透明度
阴影 黑色 25% 不透明度
Color palette, fill gradient填充渐变
1:  r 163 | g 163 | b 163
2:  r 120 | g 120 | b 120
在未选择的表现图表上填充颜色。
  1. 用如Adobe Illustrator或类似的工具创建基本图形。
  2. 导入到Adobe Photoshop或类似的工具中,把它在32x32像素,透明背景的图片中合适放置。
  3. 如图14,用合适的滤镜增加特效
  4. 把图标导出为一个32x32像素的PNG透明文件。

对话图标

对话图标显示在弹出对话框中,并提示用户交互。为了在黑色背景中突出,他们用光线渐变和内部投影效果 .

正如提供特定密度图标集中所描述的,你应该为低,中,和高密度的屏幕制作相应的独立图标集。这可以确保你的图标在一系列安装你的应用的设备中正常显示。见表1所建议的为每种密度所创造的图标尺寸。此外,请参阅对设计师的建议 中关于如何使用多组图标。

结构
  • 对话图标有一个1 像素的安全边栏。基本图形必须在安全边栏内部合适放置, 但是抗混淆的圆形可以和安全边栏重叠。
  • 此页面上指定的所有尺寸都基于一个Adobe Photoshop中建立的,大小32x32像素的画板上的。在Phontoshop模板中,对边栏保持保持1像素的填充。
  • 最后的图片必须导出为一个透明的PNG文件。
  • 在Adobe Photoshop制作的对话图标模板可以在标签模板包中得到。
A view of dialogicon structure.

图 15. 对话图标安全边栏和填充渐变.图标大小 is 32x32像素.

灯光,特效和阴影

对话图标 是平的且面向前的图片.为了在黑色背景中突出, 他们用了光线渐变和黑色投影。

A view of light,effects, and shadows for dialog icons.

图 16. 对话图标的灯光,特效和阴影.

1.前部:渐变叠加 | 角度  90°
底部色彩: r 223 | g 223 | b 223
顶部色彩: r 249 | g 249 | b 249
底部色彩位置: 0%
顶部色彩位置: 75%
2.内部投影:黑色 | 25% 不透明度 |
角度 -90° | 距离 1px | 大小 0px
  1. 用如Adobe Illustrator或类似的工具创建基本图形。
  2. 导入到Adobe Photoshop或类似的工具中,把它在32x32像素,透明背景的图片中合适放置。
  3. 如图16,用合适的滤镜增加特效
  4. 把图标导出为一个32x32像素的PNG透明文件。

列表视图图标

列表视图图标看起来像 对话图标, 但是他们用了一个光线来源于物体上方的内部投影特效。他们也只用在列表视图中。在包括Android市场应用主屏和在地图应用中的导向屏中使用。

正如提供特定密度图标集中所描述的,你应该为低,中,和高密度的屏幕制作相应的独立图标集。这可以确保你的图标在一系列安装你的应用的设备中正常显示。见表1所建议的为每种密度所创造的图标尺寸。此外,请参阅对设计师的建议 中关于如何使用多组图标。

结构
  • 列表视图图标通常有一个1 像素的安全边栏。抗混淆的圆形可以和安全边栏重叠。
  • 此页面上指定的所有尺寸都基于一个Adobe Photoshop中建立的,大小32x32像素的画板上的。在Phontoshop模板中,对边栏保持保持1像素的填充。
  • 最后的图片必须导出为一个透明的PNG文件。
  • 在Adobe Photoshop制作的列表视图图标模板可以在标签模板包中得到。
A view of listview icon structure.

图 17. 列表视图图标的安全边栏和填充渐变. 图标大小 is 32x32。

灯光,特效和阴影

列表视图图标是平的且面向前的图片.为了在黑色背景中突出, 他们用了光线渐变和黑色投影。

A viewof light, effects, and shadows for list view icons.

图 18. 列表视图图标的灯光,特效和阴影.

1.内部投影:黑色 | 57 % 不透明度 | 角度 120° | 混合模式 正常 | 距离 1px | 大小 1px  
2.背景:黑色 | 标准系统颜色
这些图标只在列表视图中使用。
注意: 列表视图图标在 Photoshop中32x32像素的画板中放置,没有安全边栏。
  1. 如图18,用合适的滤镜增加特效
  2. 把图标导出为一个32x32像素的PNG透明文件。
  3. 用如Adobe Illustrator或类似的工具创建基本图形。
  4. 导入到Adobe Photoshop或类似的工具中,把它在32x32像素,透明背景的图片中合适放置。

对设计师的建议

这里有一些提示,在你为你的应用创建图标或其他可绘制版本的时候有用。这些提示假设您使用的是Photoshop或类似的光栅图像编辑程序。

用常用的命名习惯为图标版本命名

尝试命名文件,当他们按照字母排序的时候,有关的版本将会在一个目录内聚集在一起。特别是它有助于为每个图标类型的使用共同的前缀。 例如:

版本类型前缀例子
图标
ic_ic_star.png
发射器图标
ic_launcheric_launcher_calendar.png
菜单图标ic_menuic_menu_archive.png
状态栏ic_stat_sys or ic_stat_notifyic_stat_notify_msg.png
标签图标ic_tabic_tab_recent.png
对话图标ic_dialogic_dialog_info.png

请注意,你不需要使用任何类型的共享前缀— 这样做只是为了您的方便。

为制造多密度版本图标,建立一个空间储存文件

为不同屏幕密度发展多个版本集意味着制作文件的多个尺寸副本。为了保持文件多个副本的安全和更容易被发现,我们建议您在您的工作空间创建一个目录结构,来组织文件版本。例如:

assets/...
     ldpi/...
         _pre_production/... 
            working_file.psd 
        finished_asset.png
     mdpi/...
         _pre_production/...
             working_file.psd 
        finished_asset.png 
    hdpi/...
         _pre_production/...
             working_file.psd 
        finished_asset.png

这种结构与特定密度结构相同,你可以在你的应用源文件中存储最终的版本。因为你的工作空间的结构与应用的结构类似,您可以迅速确定哪些版本应该复制到每个应用源文件目录下。为不同密度制作的独立版本可以使你根据密度检测不同的文件名,这非常重要,因为为不同密度制作的对应的版本必须有同样的文件名。

为了做比较,下面是一个典型的应用资源的目录结构:

res/... 
    drawable-ldpi/...
         finished_asset.png
     drawable-mdpi/...
         finished_asset.png
     drawable-hdpi/...
         finished_asset.png
首先制作中密度版本

r.由于中密度是Android的基线,因此你的设计工作应该从制作中密度版本开始。见上面的表 1,为不同图标类型的实际像素尺寸。如果可能,使用矢量图形或在Photoshop建立路径,使其更容易修改版本尺寸。

精美电量图标设计与实现指南 用户可以通过设置界面选择图标颜色或上传自定义图案,系统需具备灵活的加载与渲染机制。在 Android 平台上,我们可以通过 SharedPreferences 保存用户选择的颜色值,并在绘制图标时动态应用。代码解析::从本地配置中读取用户设置的颜色值,默认为绿色。:为图标设置颜色滤镜,实现颜色替换。图案自定义通常需要加载用户上传的图片资源,并进行缩放、裁剪处理。// 用户选择的图片URI代码解析::从 URI 中加载图片。 阅读详情

相关推荐

基于安卓的校园助手APP开发实战项目

htmltable {th, td {th {pre {简介:“基于安卓的校园助手APP”是一款面向高校学生的多功能移动应用,旨在通过技术手段提升校园生活的便捷性与智能化水平。该APP以百度地图API为核心,集成定位导航、周边搜索、实时路况、地图定制和事件标注等地理信息服务,并融合课程管理、成绩查询、图书借阅、校内论坛、公告通知和校园一卡通等实用功能模块。

weixin_42581003的博客 1047

android系统中自带的各种图标

android系统中自带了很多有用的图标,为了方便自己和他人用的时候进行查找,特整理如下:   android不同系统版本中图标查找网页如下:   Android™ 1.5   Android™ 1.6   Android™ 2.1

Ada168855的专栏 1771

Eclipse环境下Android应用接入微信登录完整实现

为了提升代码的可读性和可维护性,不应直接操作中的原始字段,而应通过一个高层抽象类来统一管理用户状态。该类不仅可以封装基础属性,还可集成业务逻辑,如头像缓存路径、昵称脱敏处理等。// 1:男, 2:女, 0:未知// 构造函数、getter/setter省略// 实际token应来自服务端if (json!= null) {// 清除sp中的所有登录信息。

weixin_35916518的博客 1138

AppIconTemplate基本使用教程,快速生成iOS app icon图标

下面的文章写的挺详细的,我就不过多阐述了。 转载 http://www.zcool.com.cn/article/ZNjE1MTI=.html

屌丝女quanlanlan的博客 6395

全面的Android UI素材资源包

在Android UI设计中,素材的好坏直接关系到最终用户体验的优劣。素材包括图标、背景、按钮等,它们是构成应用界面的基础元素。一个优秀的设计素材可以提升应用的视觉效果,简化用户的操作流程,增强应用的易用性和吸引力。

weixin_42627459的博客 477

icon_templates-v2.0.zip

andrid 图标 工具 icon_templates-v2.0.zip android 图标

App Icon Template

http://appicontemplate.com/?utm_source=iOS+Dev+Weekly&utm_campaign=iOS_Dev_Weekly_Issue_101&utm_medium=email I have linked to this before but Michael Flarup has updated the site for the new iOS 7

呆萌院长 4570

android-svg-icon-template:使用 SVG 创建 Android 图标的模板

Android SVG 图标模板 这是一组用于创建 Android Material Design 启动器图标的 SVG 模板。 它们足够干净,可以直接与文本编辑器一起使用,但包含在编辑所需的所有元数据。 要为 APK 和商品详情呈现位图,您应该查看 。 此页面和 SVG 图像可在 GitHub 上的。 平方参考 使用“产品图标指标”部分中指定的值的的方形示例产品图标。 48x48dp 尺寸 152x152px 方形关键线形状背景元素 示例前景元素 色调和阴影效果 投影效果 径向渐变饰面 水墨图层 Inkscape 的方形和对角线网格 长影 长阴影不是官方指南的一部分,但广泛用于 Google 和第三方图标。 48x48dp 尺寸 152x152px 方形关键线形状背景元素 彩色圆形前景元素 对角线色调和阴影效果 长阴影效果 径向渐变饰面 水墨图层 Inkscape 的方形和对

android 应用两个icon,Android 2.0环境下的图标设计原则

创造一个统一外观,感觉完整的用户界面会增加你的产品附加价值。精炼的图形风格也使用户觉得用户界面更加专业。本文档提供了一些信息,帮助你如何在应用界面的不同部分创造图标来匹配Android2.x框架下的普遍风格。遵守这些原则会辅助你为用户创造一个流畅而统一的体验。为了使你创建图标的工作进行的更加快速,你可以下载Android图标模板包。更多信息请浏览Android图标模板包的使用。Android系统被...

weixin_33765593的博客 409

从DIY到实战:手把手教你搭建一个媲美吉时利2450的nA级电流源表(附原理图与避坑指南)

本文详细解析如何从零打造nA级精密电流源,涵盖核心设计原理、PCB布局技巧、热电偶效应应对及校准验证体系。通过低成本替代方案和优化设计,实现媲美商用源表的性能,特别适合硬件爱好者和独立开发者。文章还提供原理图与避坑指南,助你轻松搭建高精度电流源系统。

weixin_42656416的博客 293

Alphafold2/multimer本地安装避坑指南:从Conda环境配置到GPU加速实战

本文详细介绍了Alphafold2/multimer本地安装的全流程,从Conda环境配置到GPU加速实战,特别针对常见的报错处理提供了解决方案。通过硬件环境检查、依赖安装技巧、OpenMM补丁应用等步骤,帮助研究人员高效部署蛋白质结构预测工具,提升计算效率。

weixin_29309213的博客 118

Android图标设计标准和原则

概述 本文将介绍如何在应用界面的不同部分使用符合Android 2.x系统风格的图标。遵守这些原则可以使应用程序为用户创造一个流畅统一的操作环境,而一个统一的外观,完整的用户界面会增加产品的附加价值,精炼的图形风格也使用户觉得应用更加专业。 这里有一个Android图标模板包(下载),使用模板可以使创建图标的工作更加快速。 提供特定密度的图标集 Android系统可以...

adxj46627377的博客 1344

ctfshow 萌新22 (类似级客巅峰web4)

在之前ctfshow平台的萌新22,大家都认为是无解的,题目也介绍了"还能搞,阿呆表示将直播倒立放水"。但是在级客巅峰结束的那天晚上,群里的师傅介绍说,如果修改了php.ini里面的配置(register_argc_argv)可以做出来。最后是真的做出来了。 使用阿呆~~~? 下面是自己的思考,感谢Guoke师傅和ha1c9on师傅的帮助 一. 源代码 <?php if(isset($_GET['c'])){ $c=$_GET['c']; if(!preg_mat.

Firebasky的博客 4215

android系统9.0的设计风格,携安卓P版本首发 华为EMUI9.0系统解析

【TechWeb】8月28日,华为官方开启了华为+荣耀9款机型EMUI9.0 Beta版升级内测招募。9月5日,华为消费者BG在国内首次发布了基于Android P版本的EMUI9.0版本。10月份,搭载更多更强EMUI 9.0特性的Mate 20也将在伦敦发布,华为对新老用户可谓关怀备至。经过6年的发展沉淀,EMUI全球用户数量已达3.5亿,活跃用户覆盖超216个国家地区,EMUI相关开发者数量...

weixin_33665771的博客 1127

新手必看!BUUCTF-PWN题实战:从零搭建Kali环境到成功RIP栈溢出

本文为CTF二进制安全新手提供了一份详实的BUUCTF-PWN入门指南。内容涵盖从零搭建Kali Linux环境、安装配置pwntools等核心工具,到深入浅出地讲解栈溢出原理与汇编基础,并手把手带领读者完成一道名为“rip”的经典栈溢出题目实战,成功利用漏洞获取系统权限。

t8u9v0w1x的博客 504

ABB机器人C#二次开发实战:从通信打通到数据读写的落地指南(附完整工程)

最近在做自动化产线升级项目时,遇到一个核心需求:用C#上位机实时读取ABB机器人的关节角度、IO信号,同时下发运动指令和参数配置。翻遍全网,要么是Robot Studio的基础操作教程,要么是C++/VC++的老旧案例,C#相关的实操内容要么只给片段代码,要么跳过通信配置、权限设置等关键步骤,导致刚上手时踩了无数坑——连接超时、数据读不到、写入无响应,甚至误触发机器人安全保护。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1394

android7.0 360os,360 OS 2.0评测 安全与体会的全部升级

现在最新的Android版本现已来到了7.0也即是AndroidN(牛轧糖),据称Android 7.0的运转速度较之提升了6倍!不过正式版的Android N还未发布,一时半会儿我们还用不上,就当下而言用户能用到的最新正式版仍是Android 6.0版本。目前国内主流OS的最新版基本上都是基于Android 6.0开发而来,虽然都是基于一个底层系统,但是它们在体验上却有着很大的差别有广告多的、...

weixin_42683394的博客 973

目标检测数据集 第069期-基于yolo标注格式的玻璃清洁状态检测数据集(含免费分享)

但这类技术的落地,离不开大量标注规范、场景丰富的数据集作为算法训练的支撑,玻璃清洁状态检测数据集的出现,正是为了满足这一市场与技术需求。在高校与科研机构的计算机视觉研究中,该数据集可作为基础研究素材,用于探索物体状态识别的算法优化方向,比如针对玻璃这类透明物体的检测算法改进,或是小样本场景下的状态识别研究。通过摄像头采集车窗、挡风玻璃的图像,算法自动检测玻璃清洁度,若识别到脏污影响视线,及时提醒运维人员清洁,避免因玻璃脏污引发的安全事故,提升交通出行的安全性。

深度学习算法工程师,专注于前沿算法研究与实战应用。在这里,我将分享深度学习领域的实战经验、优质数据集资源以及最新论文解读与精度分析,旨在与广大技术爱好者共同探索人工智能的奥秘,助力技术成长与创新。 128

华为荣耀9的android版本号,携安卓P版本首发 华为EMUI9.0系统解析

【TechWeb】8月28日,华为官方开启了华为+荣耀9款机型EMUI9.0 Beta版升级内测招募。9月5日,华为消费者BG在国内首次发布了基于Android P版本的EMUI9.0版本。10月份,搭载更多更强EMUI 9.0特性的Mate 20也将在伦敦发布,华为对新老用户可谓关怀备至。经过6年的发展沉淀,EMUI全球用户数量已达3.5亿,活跃用户覆盖超216个国家地区,EMUI相关开发者数量...

weixin_33647940的博客 1426

一、【vmware虚拟机使用】安装vmware workstations17

本文介绍了VMware Workstation 17的安装与网络配置方法。主要内容包括:通过下载安装包进行标准安装(含许可协议、路径选择等步骤);重点讲解了NAT模式下的网络配置,包括修改子网IP为192.168.2.0网段、设置网关地址和DHCP范围等操作,以避免与主机网络冲突。文章还简要说明了VMware的Hypervisor核心技术原理,包括CPU、内存和存储虚拟化。最后指出完成这些准备工作后,后续将进行CentOS7系统的安装。整个流程配有详细图文说明,适合初学者跟随操作。

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 2746

TC3XX - MCAL知识点(二十七):SENT Mcal配置及代码实战(单边半字节传输协议)

SENT协议只有一根线,异步传输!Sent协议的全称为Single Edge Nibble Trans .isson,单边半字节传输协议,是一种单线异步串行通信协议。Sent报文包含8个Nibble和一个校准位如图1所示,每一个Nibble数据被编码成PWM方式。设计这种协议的目的是用在与汽车ECU快速交互信息的传感器上,以此来取代低精确度的10bit AD和PWM。Sent是一种点对点的单方向从传感器到控制端的协议,控制器不需要同步信号。

梦想技术家 2272

Numix Core项目架构解析:理解图标主题生成器的核心设计

Numix Core是一款强大的图标主题生成器,能够为Linux、Android和OSX等多个平台构建统一风格的应用图标主题。本文将深入解析其架构设计与工作原理,帮助开发者快速掌握这个开源工具的核心实现。 ## 项目整体结构:模块化设计理念 Numix Core采用清晰的模块化架构,主要由以下几个部分组成: - **核心生成模块**:[gen.py](https://link.gitcode

gitblog_00365的博客 309

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

android design的创意视觉和设计原则

自己在谷歌官网看的,大概翻译了一下。 android5.0把触感设计隐喻为纸和笔的关系,令人惊讶。 1、创意视觉 Ice Cream Sandwich专注于android设计基于以下三个目标: 诱惑我:美不只是界面的深度美化,应用应该是多层次的平滑和美观。交互快速清晰,布局和版面干脆但意义深刻,应用图标是优美的艺术品并拥有自己独特的意义。就像一个精良的工具,你的应用应该朝着

Spider--Man 680

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

android屏幕适配建议(1),安卓开发知识点

UI这块知识是现今使用者最多的。当年火爆一时的Android入门培训,学会这小块知识就能随便找到不错的工作了。不过很显然现在远远不够了,拒绝无休止的CV,亲自去项目实战,读源码,研究原理吧!

2401_84149444的博客 741

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: 标签/TabActivity 深度研究
下一篇: JAVA读取WORD,EXCEL,PDF,TXT,RTF,HTML文件文本内容的方法示例
ghd2000
博客等级 码龄18年 78粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值