改变黑莓的屏幕方向?

时间:2011-12-15 10:14:41

标签: blackberry

在我的应用程序中,我想根据方向显示屏幕。我知道,每当设备处于Oriented时,就会调用当前屏幕的 sublayout()方法。根据这个观点,我这样写:

此处 StartUp 是另一个className;

这是我的 LoadingScreen.java 类;

public class LoadingScreen extends MainScreen
{
public LoadingScreen()
{       
    createGUI();
}

protected void sublayout(int width, int height) 
{
    StartUp.screenOrientation();        
    if(StartUp.isLandscape)
    {
        deleteAll();
        createGUI();            
        invalidate();           
    }
    else
    {   
        deleteAll();
        orientGUI();            
        invalidate();
    }
    super.sublayout(width,height);  
}

public void createGUI()
{
    //For LANDSCAPE Display;
}

public void orientGUI()
{
    //For PORTRAIT Display;
}   
}

screenOrientation()方法是:

public static void screenOrientation()
{
    if(Display.getOrientation()==Display.ORIENTATION_LANDSCAPE)     
    {
        isLandscape=true;
        width=480;
        height=360;
    }
    else
    {
        isLandscape=false;
        width=360;
        height=480;
    }
}

我在两种方向模式下都获得了屏幕。我的问题是,如果我拿一个textboxField并在LANDSCAPE模式和Oriented to PORTRAIT Mode中输入一些内容,那么数据就会消失。因为我正在调用createGUI();或orientGUI(); sublayout()中的方法。

我在触摸屏中遇到的另一个问题是:

  

如果我想在任何textboxField中输入文本它会打开“小键盘”。这不是一个问题。最重要的是每当键盘再次打开/隐藏时,调用该类的 sublayout()。所以我得到了刷新的屏幕。

那么,还有其他方法可以获得Orientation吗?如果它是帮助我。

1 个答案:

答案 0 :(得分:2)

要解决第一个问题,您有两种选择。

  • 不要删除字段,只是重绘不同的屏幕 取向。

  • 在删除字段之前保存textboxfield的值 在方向更改后,将textboxfield的值设置为 节省了价值。您甚至需要获取光标位置并进行设置 那也是。

解决第二个问题

更改方向后,将新变量“currentWidth”设置为Display.getWidth()。然后,当您拨打sublayout()时,请检查Display.getWidth()并查看其是否等于currentWidth。如果它相等则意味着方向没有改变。如果没有,那么方向已经改变。

希望这会有所帮助