Codenameone 如何在带视网膜的iPad mini上处理多幅图像和字体大小

Codenameone 如何在带视网膜的iPad mini上处理多幅图像和字体大小,codenameone,Codenameone,我正在使用多个图像,并使用Display.getInstance().convertToPixels(sizeInMM)计算字体大小,这在大多数设备上都非常有效。在旧的android平板电脑上,如果我将字体大小设置为2.1mm,它实际上就是这个大小。问题在于带有视网膜显示器的新型小型设备。iPhone6上的2.1mm字体只有1.9mm,这并不坏,但在带有视网膜的iPadMini上,它只有1.1,几乎无法使用。。。我怎样才能克服这个限制 我在考虑给转换添加一些修正,比如: if (isIOS()

我正在使用多个图像,并使用
Display.getInstance().convertToPixels(sizeInMM)
计算字体大小,这在大多数设备上都非常有效。在旧的android平板电脑上,如果我将字体大小设置为2.1mm,它实际上就是这个大小。问题在于带有视网膜显示器的新型小型设备。iPhone6上的2.1mm字体只有1.9mm,这并不坏,但在带有视网膜的iPadMini上,它只有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不是这样设计的。至少在doc中,这是不推荐的…

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


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

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


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

有没有办法获得更大的多重图像?或者基本上适用于各种尺寸的多幅图像
resource.getImage
返回已计数和预缓存的图像…多图像的思想是它无缝且内存高效,因此其他分辨率已被丢弃。
Resources.open(String,int)
方法允许您使用特定的DPI设置打开资源文件,这主要是为那些不关心密度而不关心分辨率的游戏设计的。我建议避免这样的黑客行为,因为它会导致设备检测,这。。。好。。。你有24000种Android设备类型,这太疯狂了。。。您需要编写灵活的逻辑。有没有办法获得更大的多图像?或者基本上适用于各种尺寸的多幅图像
resource.getImage
返回已计数和预缓存的图像…多图像的思想是它无缝且内存高效,因此其他分辨率已被丢弃。
Resources.open(String,int)
方法允许您使用特定的DPI设置打开资源文件,这主要是为那些不关心密度而不关心分辨率的游戏设计的。我建议避免这样的黑客行为,因为它会导致设备检测,这。。。好。。。你有24000种Android设备类型,这太疯狂了。。。您需要编写灵活的逻辑。