Blackberry RIM黑莓能自动选择正确的图像吗?

Blackberry RIM黑莓能自动选择正确的图像吗?,blackberry,resources,naming-conventions,resolution,Blackberry,Resources,Naming Conventions,Resolution,对于Android文件夹,有可绘制的ldpi,可绘制的hdpi等等 在Blackberry文件夹中,我不知道处理不同屏幕分辨率的文件夹命名约定屏幕大小可以分为两类,高分辨率和低分辨率在blackberry中,我们没有像android一样保留低分辨率和高分辨率图像的选项。相反,我们必须在资源文件夹下创建自定义文件夹,然后根据您的需要将图像保存在单个或多个文件夹中。不,BlackBerry中没有这种机制(我说的是Java API,不知道在WebWorks或BB10上会如何) 但你绝对应该建立一个自己

对于Android文件夹,有
可绘制的ldpi
可绘制的hdpi
等等


在Blackberry文件夹中,我不知道处理不同屏幕分辨率的文件夹命名约定
屏幕大小可以分为两类,高分辨率和低分辨率

在blackberry中,我们没有像android一样保留低分辨率和高分辨率图像的选项。相反,我们必须在资源文件夹下创建自定义文件夹,然后根据您的需要将图像保存在单个或多个文件夹中。

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

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

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

    Inputstream is=ImageManager.class.getResourceAsStream(“/img//someimage.png”)

  • 如果存在此类目录,请获取映像:

        byte[] rawFileData = IOUtilities.streamToBytes(is);
        EncodedImage encodedImage = EncodedImage.createEncodedImage(rawFileData, 0, rawFileData.length);
    
如果您没有当前屏幕分辨率的目录,您可以:

  • 提供一个备用目录,如/img/common,其中的图像足够大,以便在缩小时不会丢失质量。然后像往常一样获得图像,并按当前分辨率成比例缩放。OS 5中的
    Bitmap
    类中添加的新方法可以通过不同的缩放选项和良好的性能在短时间内实现这一点
  • 获取具有自定义目录的最近分辨率的图像(即:如果当前分辨率为360,但/img/360不存在,则从/img/320获取图像)
  • 最后,一个专业提示:您可以使用较短的类和方法名称将一个façade编码为
    ImageManager
    ,并使其成为单例。这样,您可以键入:

    R.drawable("someimage.png");
    

    这与Android语法非常相似。

    如果您有高效的构建过程和高效的OTA分发。我建议为不同的分辨率拆分构建。它将简化代码,缩小cod大小(更快的下载和安装),但将提供更多的支持。我可以拥有支持差异屏幕分辨率的整个项目文件夹的示例吗。@Eugen Martynov我很想这样做,但不幸的是,我必须向客户提供一个cod。@Alan Lai Good Try XD。对不起,我不能。代码是正确的。@Eugen Martynov我想到的另一件事是黑莓应用程序世界怎么样?它是否有一个类似于安卓系统的系统,这样设备只能下载正确版本的分辨率?