当前位置: 首页 > 知识库问答 >
问题:

什么时候在运行时生成图标?

单于善
2023-03-14

我有一个Android应用程序,每个屏幕分辨率包含大约150个图标。

如果我把所有图标放在所有5个主要分辨率(ldpi、mdpi、hdpi、xhdpi、xxhdpi)中,那么图标总数将达到750个。这有几个缺点:

  • 大APK大小
  • 将dexGuard与ant构建脚本一起使用时构建过程缓慢。它对图像进行一些处理需要一些时间。

或者,我可以只在一些分辨率中放置图标。例如,ldpi设备现在仅占市场的10%,在Android官方文档的某个地方,他们说Android可以有效地从hdpi图标缩小50%到ldpi。

现在,如果我选择这样做,不提供ldpi图标,那么在Android设备上运行时将图标从hdpi调整为ldpi会有什么影响?如果需要调整150个图标的大小,可能需要一些时间,特别是因为ldpi设备的CPU可能较慢。Android设备上的大小调整发生在哪个阶段:安装时?第一次应用程序启动时?每次启动时?

感谢您的建议!

共有3个答案

谯翔
2023-03-14

Android将很好地*缩小您的绘图范围,最多相差2个密度桶。如果你试着做两个以上的桶(即超过2的一个因子),这看起来像垃圾。所以你应该每三个bucket提供一个,目前只提供xxxhdpi和hdpi。

*除非你的绘图中有像素艺术(但不要这样做),否则双线性插值是不可接受的。然后,您应该选择一个受支持的最小存储桶,并提供高于该存储桶的所有内容。

邢曦
2023-03-14

如果在布局中使用图像,则可以使用xxhdpi图像,然后可以在运行时生成xhdpi、hdpi、mdpi和ldpi。

  1. 从xxhdpi中获取图像。
  2. 将其缩放到所需的分辨率。
  3. 在您的布局中使用它。
  4. 把它写在磁盘上。

尝试此操作以在运行时生成拇指。

黎玺
2023-03-14

当你反编译谷歌自己的APK时,他们暂时不使用ldpi。他们只对应用程序的启动器图标使用xxhdpi。xxhdpi图标尤其使APK尺寸更大。

图标的大小调整可能在每次启动的运行时完成。

 类似资料:
  • hibernate文档中说:“如果您希望利用运行时代理生成,那么至少应该使用包可见性来定义构造函数。”。我在hibernate文档中读到,hibernate可以增强字节码而不是代理创建(hibernate 5.x)。在任何情况下,它都可以用这种新方法代替代理创建?在哪些情况下需要生成运行时代理?

  • 问题内容: 最近,我接受了公司的采访,他们给了我一个编码问题。我得到了与纸牌有关的程序,其中一种方法是将纸牌洗牌。因此,我将该程序编写为: 在上面的代码中,我引发了我最怀疑的 IllegalArgumentException 。在什么情况下实际上应该抛出运行时异常?我们是否应该实际抛出运行时异常? 谢谢 问题答案: 我们是否应该实际抛出运行时异常? 是的,我们应该。运行时异常有特定的用途-它们发出

  • 我在理解promise方面有一个(看似基本的)问题。首先是代码: 每个promise函数在添加到promise数组时被调用,而不是像我所想的那样调用Q.all。 我有什么不明白的? 如何在不立即调用所述promise的情况下将一系列promise排队?

  • 本文向大家介绍什么时候用delegate,什么时候用Notification?相关面试题,主要包含被问及什么时候用delegate,什么时候用Notification?时的应答技巧和注意事项,需要的朋友参考一下 答:delegate针对one-to-one关系,并且reciever可以返回值 给sender,notification 可以针对one-to-one/many/none,recieve

  • 问题内容: 奇怪的是: 似乎或多或少被定义为。通过这种方式很容易产生错误: 一些fname意外地以else块结尾。修复很简单,我们应该改用它,但是从表面上看,这似乎是一种不错的pythonic方式,并且比“正确”的方式更具可读性。 由于字符串是不可变的,所以为什么字符串错误是什么技术细节?什么时候进行身份检查更好,什么时候进行平等检查更好? 问题答案: 据我所知,检查对象身份是否相等。由于没有强制

  • 问题内容: 何时使用和何时使用运算符? Java提供了两个选项来检查分配兼容性。什么时候使用? 问题答案: 我认为官方文档为您提供了答案(尽管以一种非常具体的方式): 此方法与Java语言instanceof运算符动态等效。 我认为这主要是指在运行时处理类型反射的代码中使用。特别是,我想说它的存在是为了处理您可能不事先知道要检查其成员资格的类的类型的情况(尽管这些情况可能很少)。 例如,您可以使用