在我的应用程序中,我想根据方向显示屏幕。我知道,每当设备处于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吗?如果它是帮助我。
答案 0 :(得分:2)
要解决第一个问题,您有两种选择。
或
textboxfield
的值
在方向更改后,将textboxfield
的值设置为
节省了价值。您甚至需要获取光标位置并进行设置
那也是。解决第二个问题
更改方向后,将新变量“currentWidth
”设置为Display.getWidth()
。然后,当您拨打sublayout()
时,请检查Display.getWidth()
并查看其是否等于currentWidth
。如果它相等则意味着方向没有改变。如果没有,那么方向已经改变。
希望这会有所帮助