jQuery Mobile锁定方向

时间:2011-08-10 11:01:35

标签: jquery jquery-mobile cordova orientation landscape

嘿伙计们我正在使用phonegap和jquery mobile为Android手机构建应用程序。是否有可能将方向锁定在一个页面上?例如。页面“地图”已加载,方向被锁定为“横向”模式。

2 个答案:

答案 0 :(得分:8)

我尝试修改manifest.xml,但它确实有效。只需将android:screenOrientation =“landscape”属性添加到您的活动代码中,如下所示:

<application android:icon="@drawable/ic_launcher" android:label="@string/app_name">
    <activity android:label="@string/app_name" android:name=".Phonegap_AppName"
        android:configChanges="orientation|keyboardHidden" android:screenOrientation="landscape">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

答案 1 :(得分:5)

不是我想的。在xCode for iOS应用程序中是不可能的。我能想到的唯一解决办法就是根据window.orientation

旋转你的身体或包装物。
$(window).bind("orientationchange", function(){
    var orientation = window.orientation;
    var new_orientation = (orientation) ? 0 : 180 + orientation;
    $('body').css({
        "-webkit-transform": "rotate(" + new_orientation + "deg)"
    });
});

这是一种冒险的方式,但认为这是唯一的方法..

希望这有帮助,请告诉我!

请参阅:http://jsfiddle.net/aalouv/sABRQ/1/


备选您可以绑定到窗口调整大小事件。

$(window).bind("resize", function(){
    var orientation = window.orientation;
    var new_orientation = (orientation) ? 0 : 180 + orientation;
    $('body').css({
        "-webkit-transform": "rotate(" + new_orientation + "deg)"
    });
});

我刚才写了这个小脚本:它修复了iOS safari中的multiply resize回调错误以及android中的非/ late- / early-trigger(1)orientationchange错误。

(1)有时它在浏览器更改宽度+高度之前和之后有时不会触发?有线!

if (!(/iphone|ipad/gi).test(navigator.appVersion)) {
    $(window).unbind("resize").bind("resize", function() {
        $(window).trigger("orientationchange");
    });
}

如果不是iphone或ipad,则触发窗口上的orientationchange事件。

所以当你绑定任何函数时,调整大小就会抛出orientationchange。