2011-08-10 4 views
3

안녕 얘들 아, 나는 phonegap과 jquery mobile을 사용하여 Android 휴대 전화 용 앱을 제작하고 있습니다. 한 페이지에 방향을 잠글 수 있습니까? 예 : 페이지 "지도"가로드되고 방향이 "가로 모드"로 고정됩니다.jQuery 모바일 잠금 방향

답변

5

별로 생각하지 않습니다. iOS 용 xCode 앱에서는 불가능합니다. 내가 가지고 올 수있는 유일한 수정 .. 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의 사파리에서 곱셈의 크기를 조정 콜백 버그를 수정하고 비/late-/초기 트리거 (1) 안드로이드의 버그를 위해서 orientationchange.

(1) 때로는 브라우저가 너비 + 높이가 변경되기 전에 때때로 가끔씩 실행되지 않습니다. 열광한!

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

iphone 또는 ipad가 아닌 경우 창에서 orientationchange 이벤트가 트리거됩니다.

그래서 함수를 바인딩 할 때 크기를 변경하면 방향 변경이 발생합니다.

+0

헤이 안드레아스 알 감사가 응답을, 내가 당신의 솔루션을 사용하려고하지만 난 경우 사실 난 심지어 바인더 제본 기능으로 제공되지 않습니다 화면을 회전 시키십시오. 또한 jQuery의'.live' 함수로 처리했지만 여전히 작동하지 않습니다. –

+0

어쩌면 창문이 아니라 문서에 묶여 있어야합니다. 위의 편집을 참조하십시오. – andlrc

+0

for its android! 나 안드로이드에서 orientationchange 자신과 몇 가지 문제가 있습니다. 나는 여전히 동일한 결과의 크기를 조정하고 보관할 수 있습니다. 그러나 iOS 크기 조정에주의하십시오. 모든 오리엔테이션 변경에 최대 10 배까지 조정할 수 있습니다. – andlrc

8

manifest.xml을 수정하려고 시도했으며 작동합니다. 아래와 같은 활동 태그에 screenOrientation는 = "풍경"속성 : 간단하게 안드로이드를 추가

<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>