1

对于 Android 文件夹,有drawable-ldpidrawable-hdpi

在黑莓文件夹中,我不知道处理不同屏幕分辨率的文件夹命名约定。Screen sizes can be placed into two categories, high resolution and low resolution

4

2 回答 2

3

不,BlackBerry 中没有这种机制(我说的是 Java API,不知道在 WebWorks 或 BB10 上会如何)。

但是您绝对应该创建自己的机制。您几乎必须在每个项目中管理不同的屏幕尺寸,因此值得编写代码。我目前正在几个项目中这样做。这个想法是在 res/img 包中创建子包(例如,用于 320 像素的屏幕宽度的 res/img/320)。然后将正确的图像粘贴到每个子包中,就像在 Android 中一样。最后,编写一个ImageManager类,其主要目的是为应用程序中所有其他类的所有图像请求提供服务:

  • 在应用程序启动时(或在每个位图请求时,如果您要允许屏幕旋转),您将获得当前屏幕分辨率调用Display.getWidth();
  • 当请求图像时,ImageManager在 res/img 中搜索具有正确名称的文件夹:

    Inputstream is = ImageManager.class.getResourceAsStream("/img/<current resolution>/someimage.png");

  • 如果存在这样的目录,则获取图像:

        byte[] rawFileData = IOUtilities.streamToBytes(is);
        EncodedImage encodedImage = EncodedImage.createEncodedImage(rawFileData, 0, rawFileData.length);
    

如果您没有当前屏幕分辨率的目录,您可以:

  1. 提供一个备用目录,例如 /img/common,其中包含足够大的图像,以便它们在缩小时不会丢失质量。然后像往常一样获取图像并与当前分辨率成比例地缩放。OS 5中类中添加的新方法Bitmap可以通过不同的缩放选项和良好的性能立即完成此操作。
  2. 获取自定义目录存在的最接近分辨率的图像(即:如果当前分辨率为 360,但 /img/360 不存在,则从 /img/320 获取图像)。

最后,一个专业提示:您可以使用更短的类和方法名称来编写外观ImageManager,并使其成为单例。这样,您可以键入:

R.drawable("someimage.png");

这与 Android 语法非常相似。

于 2012-07-04T08:01:00.600 回答
0

在黑莓中,我们没有像 android 那样单独保留低分辨率和高分辨率图像的选项。取而代之的是,我们必须在资源文件夹下创建自定义文件夹,然后根据您的需要将图像保存在单个或多个文件夹中。

于 2012-07-04T07:14:37.333 回答