开发者

How to catch Rotating Screen event of BlackBerry Torch 9800 OS 6?

Could someone tell me how to catch this event? Because when I rotated the phone to landscape mod开发者_JAVA百科e, the app could not display correctly. Thanks, Duy


When this happens then BB UI framework definitelly calls layout(int width, int height) for your screen. This is because MainScreen is also a Manager, so it should layout all its child fields before BB UI framework starts painting.

So in layout() you could track current orientation state (with net.rim.device.api.system.Display.getOrientation()) and compare with the previous one. If it is changed, then the device has just been rotated.


I've come up with a method different to the suggested by Arhimed and it seems to work well (I use it to draw a custom Field differently - when the device is tilted). I have a method

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();
}

and call it once in the constructor and after that it is called on every Accelerometer event:

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();
    }
}

Maybe this helps you and yes - you have to check, if the keyboard is slided out on Torch

Regards Alex

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜