Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何捕捉BlackBerry Torch 9800 OS 6的旋转屏幕事件?_Blackberry - Fatal编程技术网

如何捕捉BlackBerry Torch 9800 OS 6的旋转屏幕事件?

如何捕捉BlackBerry Torch 9800 OS 6的旋转屏幕事件?,blackberry,Blackberry,有人能告诉我怎么才能赶上这场比赛吗? 因为当我将手机旋转到横向模式时,应用程序无法正确显示。 谢谢 Duy当这种情况发生时,BBUI框架会为您的屏幕调用布局(int-width,int-height)。这是因为MainScreen也是一个Manager,所以它应该在BBUI框架开始绘制之前布局所有子字段 因此,在layout()中,您可以跟踪当前的方向状态(使用net.rim.device.api.system.Display.getOrientation())并与上一个进行比较。如果它被改变了

有人能告诉我怎么才能赶上这场比赛吗? 因为当我将手机旋转到横向模式时,应用程序无法正确显示。 谢谢
Duy

当这种情况发生时,BBUI框架会为您的屏幕调用
布局(int-width,int-height)
。这是因为
MainScreen
也是一个
Manager
,所以它应该在BBUI框架开始绘制之前布局所有子字段


因此,在
layout()
中,您可以跟踪当前的方向状态(使用
net.rim.device.api.system.Display.getOrientation()
)并与上一个进行比较。如果它被改变了,那么设备刚刚被旋转。

我想出了一种与Arhimed建议的方法不同的方法,它似乎工作得很好(当设备倾斜时,我使用它以不同的方式绘制自定义字段)。我有办法

protected void myOrientation() {
    // portrait is true when dh > dw
    boolean portrait = (Display.getOrientation() == Display.ORIENTATION_PORTRAIT);
    // dw and dh = real horizontal and vertical dimensions of display - regardless of device orientation
    int dw = portrait ? Math.min(Display.getWidth(), Display.getHeight()) : Math.max(Display.getWidth(), Display.getHeight());
    int dh = portrait ? Math.max(Display.getWidth(), Display.getHeight()) : Math.min(Display.getWidth(), Display.getHeight());

    // here I draw my custom Field

    invalidate();
}
并在构造函数中调用它一次,然后在每个加速计事件中调用它:

public class MyScreen extends MainScreen implements AccelerometerListener {

private MyScreen() {
    if (AccelerometerSensor.isSupported()) {
        orientationChannel = AccelerometerSensor.openOrientationDataChannel( Application.getApplication() );
        orientationChannel.addAccelerometerListener(this);
    }
    ....
} 


public void onData(AccelerometerData accData) {
    if (old != accData.getOrientation()) {
        myField.myOrientation();
    }
}
也许这对你有帮助,是的,你必须检查一下键盘是否在手电筒上滑出

问候
Alex

但我们无法覆盖主屏幕中的layout()函数。在BB dev网站上,他们说:当触摸屏的方向发生变化时接收通知导入net.rim.device.api.ui.Manager类。覆盖net.rim.device.api.ui.Manager.sublayout(int,int)。受保护的void子布局(int-width,int-height){..我做了,但当我旋转屏幕时模拟器没有运行到代码中。我不知道这是模拟器问题还是什么。无论如何,谢谢,Torch 9800可能会根据其滑块是打开还是关闭而表现不同。可能只是尝试一下打开/关闭滑块。