黑莓支持多种分辨率

时间:2013-09-10 12:08:20

标签: user-interface blackberry screen

我需要为黑莓应用设计UI。这个应用程序应该支持多个黑莓分辨率。

一种方法是每次检查screen_width和screen_height,并相应地从res文件夹中获取图像。有没有其他更有效或更好的方法来做到这一点?我还需要根据屏幕尺寸对字体大小和文本进行相同的操作。

请帮助我了解支持多种BB分辨率的标准方法

1 个答案:

答案 0 :(得分:3)

你可以尝试一下,到目前为止,我在我的应用程序中尝试过没有任何问题。

  

第1步:

     

创建一个单独的包,例如com.your_app_name.uiconfig   包含一个抽象类,说ModelConfig和不同的类   不同的分辨率,如BB83xxConfig类,分辨率为320x240   (宽x高),类BB95xxConfig,分辨率360 x 480(宽x   高度)。

     

第2步:

     

ModelConfig类将提供具体的实现   无论屏幕如何,所有人都会共同使用这些方法   决议和具体的抽象方法的声明   将根据以下各类提供实施   屏幕分辨率。

     

第3步:为特定分辨率实现的每个类都扩展了ModelConfig并提供了具体的功能   根据要求实施方法。

     

第4步:使用单例模式获取ModelConfig的实例,以便它只被实例化一次并使用该实例   整个

ModelConfig.java(只是一个示例)

public abstract class ModelConfig {

private static ModelConfig modelConfig = null;

public static ModelConfig getConfig() {

    if (modelConfig == null) {

        if (DeviceInfo.getDeviceName().startsWith("83")) {
            modelConfig = new BB83xxConfig();
        } else if (DeviceInfo.getDeviceName().startsWith("85")) {
            // 85xx also has 360 x 240 same as 83xx device
            modelConfig = new BB83xxConfig();
        } else if (DeviceInfo.getDeviceName().startsWith("89")) {
            modelConfig = new BB89xxConfig();
        } else if (DeviceInfo.getDeviceName().startsWith("90")) {
            modelConfig = new BB90xxConfig();
        } else if (DeviceInfo.getDeviceName().startsWith("95")) {
            modelConfig = new BB95xxConfig();
        } else if (DeviceInfo.getDeviceName().startsWith("96")) {
            modelConfig = new BB96xxConfig();
        } else if (DeviceInfo.getDeviceName().startsWith("97")) {
            modelConfig = new BB97xxConfig();
        } else if (DeviceInfo.getDeviceName().startsWith("99")) {
            modelConfig = new BB99xxConfig();
        } else if (DeviceInfo.getDeviceName().startsWith("98")) {
            // 9800 also has 360 x 480 same as 95xx device
            modelConfig = new BB95xxConfig();
        }else {
            modelConfig = new DefaultConfig();
        }
    }

    return modelConfig;
}

// Font height for the default font used for the application.
public abstract int getApplicationFontHeight();

// Font height for the header label font.
public abstract int getHeaderLabelFontHeight();

// Height for the coloured background of Header.
public abstract int getHeaderBarHeight();

// Height for the individual row in the list.
public abstract int getCustomListRowHeight();   

public abstract int getStandardButtonWidth();

public abstract int getStandardLabelWidth();    

public abstract int getTitleFontHeight();   

// get Background colour for Header.
public int getHeaderBackgroundColor() {
    return 0x26406D;
}   

// get Bitmap showing Right Arrow.
public Bitmap getBitmapRightArrow() {
    return Bitmap.getBitmapResource("right_arrow.png");
}

// get Bitmap rounded black border for editfield.
public Bitmap getBitmapRoundedBorderEdit(){
    return Bitmap.getBitmapResource("rounded_border_black.png");
}

// get Bitmap rounded gray border and white background.
public Bitmap getBtmpRoundedBorderBgrnd(){
    return Bitmap.getBitmapResource("rounded_border_grey.png");
}

// get Bitmap rounded gray border and white background.
public Bitmap getBtmpTransparentBgrnd(){
    return Bitmap.getBitmapResource("img_transparent_background.png");
}

// get Bitmap showing down Arrow.
public Bitmap getBitmapDownArrow(){

    return Bitmap.getBitmapResource("down_arrow.png");
}   

}

BB95xxConfig.java(只是一个示例)

/*
 * Common resolution 360*480 pixels (width x height)
 */
public class BB95xxConfig extends ModelConfig {
    // Font height for the default font used for the application.
    // returns Desired height in pixels.
    public int getApplicationFontHeight() {
        return 18;
    }

    // Font height for the header label font.
    // returns Desired height in pixels.
    public int getHeaderLabelFontHeight() {
        return 20;
    }

    // returns Desired height in pixels for the header background.
    public int getHeaderBarHeight() {
        return Display.getHeight() / 10;
    }

    public int getCustomListRowHeight() {
        return 50;
    }   

    public int getStandardButtonWidth() {
        return 108;
    }

    public int getStandardLabelWidth() {
        return 150;
    }

    public int getTitleFontHeight() {
            return 11;
    }
}