【问题标题】:How to handle multi images and font sizes on iPad mini with retina如何在 iPad mini 上使用 Retina 处理多个图像和字体大小
【发布时间】:2017-06-24 15:12:39
【问题描述】:

我正在使用多张图片并使用Display.getInstance().convertToPixels(sizeInMM) 计算字体大小,这在大多数设备上都很好用。在旧的 android 平板电脑上,如果我将字体大小设置为 2.1 毫米,它实际上就是那个大小。问题在于带有视网膜显示屏的新型小型设备。 iPhone 6 上的 2.1mm 字体只有 1.9mm,这还不错,但在带有视网膜的 iPad mini 上,它只有 1.1,几乎无法使用……我该如何克服这个限制?

我正在考虑为转换添加某种更正,例如:

if (isIOS() && isTablet()) {
    return Display.getInstance().convertToPixels(sizeInMM * 2);
} else if (isIPhone6_OrHigher()) {
    return Display.getInstance().convertToPixels(sizeInMM * 1.1);
} else if (...) {
    ...
}

但我认为这不是 cn1 的设计方式。至少在文档中,不建议这样做...

【问题讨论】:

    标签: codenameone


    【解决方案1】:

    这是一个非常有问题的场景。 Apple 不希望我们检测 iPad mini,some hacks exist,我们考虑使用它们为 iPad mini 提供稍微不同的 DPI,但最终它们是黑客,所以我们决定避免这种情况,并将其视为 iPad,这就是 Apple “想要”。

    这听起来很糟糕,但这通常是一个很好的做法,您过于依赖convertToPixels 返回的尺寸的准确性,这是一个问题,因为这些尺寸经常被设备错误地报告,尤其是在 Android 上。如果元素太大,这通常不是问题,但正如您发现的那样,当元素太小时就会出现问题,这就是为什么我们通常针对 2.5mm 字体大小而仅将 2mm 用于非常小的文本。

    【讨论】:

    • 有没有办法获得更大的多图像?或者基本上是各种尺寸的多图像? resource.getImage 返回已经计数和预缓存的一个...
    • 多图像的想法是它是无缝的和内存高效的,所以其他分辨率已经被丢弃了。 Resources.open(String,int) 方法允许您打开具有特定 DPI 设置的资源文件,这主要是为那些您不关心密度而不关心分辨率的游戏而设计的。我建议避免此类黑客攻击,因为它会导致设备检测……嗯……您有 24,000 个疯狂的 Android 设备类型……您需要编写灵活的逻辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    • 2019-02-22
    • 2012-01-01
    • 2013-11-15
    • 2014-12-12
    • 2012-09-13
    相关资源
    最近更新 更多