keyone - blackberry phone




ब्लैकबेरी टोर्च 9800 ओएस 6 के घूर्णन स्क्रीन इवेंट को कैसे पकड़े? (2)

क्या कोई मुझे इस घटना को कैसे पकड़ सकता है? क्योंकि जब मैंने फोन को लैंडस्केप मोड में घुमाया था, तो ऐप ठीक से प्रदर्शित नहीं हो सका। धन्यवाद, ड्यू


जब ऐसा होता है तो बीबी यूआई फ्रेमवर्क निश्चित रूप से आपकी स्क्रीन के लिए layout(int width, int height) को कॉल करता है। इसका कारण यह है कि MainScreen एक Manager भी है, इसलिए बीबी यूआई फ्रेमवर्क चित्रकला शुरू होने से पहले इसे अपने सभी बच्चे को लेआउट करना चाहिए।

तो layout() आप वर्तमान उन्मुखीकरण स्थिति को ट्रैक कर सकते हैं ( net.rim.device.api.system.Display.getOrientation() ) के साथ और पिछले एक के साथ तुलना करें। यदि यह बदल जाता है, तो डिवाइस को सिर्फ घुमाया गया है


मैं अरिमिड द्वारा सुझाए गए तरीकों से अलग तरीके से आया हूं और यह अच्छी तरह से काम करता है (मैं कस्टम फ़ील्ड को अलग तरीके से आकर्षित करने के लिए इसका उपयोग करता हूं - जब डिवाइस झुका हुआ है) मेरे पास एक विधि है

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

शायद यह आपको और हां में मदद करता है - आपको जांचना होगा, यदि कीबोर्ड मशाल पर निकला है

सादर एलेक्स