问题
I started looking into PhoneGap yesterday and created a simple \"marble\" rolling around while tilting the phone. I am currently developing on Android but I want the orientation to stay as landscaping instead of moving when the phone gets spun around. Is there a way of doing this?
Manifest:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"
package=\"com.phonegap.helloworld\"
android:versionCode=\"1\"
android:versionName=\"1.0\" >
<supports-screens
android:largeScreens=\"true\"
android:normalScreens=\"true\"
android:smallScreens=\"true\"
android:resizeable=\"true\"
android:anyDensity=\"true\"
/>
<uses-permission android:name=\"android.permission.CAMERA\" />
<uses-permission android:name=\"android.permission.VIBRATE\" />
<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />
<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />
<uses-permission android:name=\"android.permission.ACCESS_LOCATION_EXTRA_COMMANDS\" />
<uses-permission android:name=\"android.permission.READ_PHONE_STATE\" />
<uses-permission android:name=\"android.permission.INTERNET\" />
<uses-permission android:name=\"android.permission.RECEIVE_SMS\" />
<uses-permission android:name=\"android.permission.RECORD_AUDIO\" />
<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\" />
<uses-permission android:name=\"android.permission.READ_CONTACTS\" />
<uses-permission android:name=\"android.permission.WRITE_CONTACTS\" />
<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" />
<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" />
<uses-permission android:name=\"android.permission.GET_ACCOUNTS\" />
<uses-permission android:name=\"android.permission.BROADCAST_STICKY\" />
<uses-sdk android:minSdkVersion=\"8\" />
<application
android:icon=\"@drawable/ic_launcher\"
android:label=\"@string/app_name\" >
<activity
android:name=\".App\"
android:configChanges=\"orientation|keyboardHidden\"
android:label=\"@string/app_name\" >
<intent-filter>
<action android:name=\"android.intent.action.MAIN\" />
<category android:name=\"android.intent.category.LAUNCHER\" />
</intent-filter>
</activity>
<activity
android:name=\"com.phonegap.DroidGap\"
android:label=\"@string/app_name\"
android:screenOrientation=\"landscape\"
android:configChanges=\"orientation|keyboardHidden\">
<intent-filter></intent-filter>
</activity>
</application>
</manifest>
Code:
package com.phonegap.helloworld;
import android.os.Bundle;
import org.apache.cordova.*;
public class App extends DroidGap {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.loadUrl(\"file:///android_asset/www/index.html\");
}
}
回答1:
Have you tried this?
android:screenOrientation="portrait"
Inside the AndroidManifest.xml
file, where you have declared your activity, just add the above line.
For example:
<activity
android:name=".Activity.SplashScreenActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
回答2:
The correct way to do this for all devices is to configure config.xml
<preference name="orientation" value="portrait" />
<preference name="orientation" value="landscape" />
https://build.phonegap.com/docs/config-xml
回答3:
It is very simple, you need to add android:screenOrientation="landscape"
in your AndroidManifest
.xml file.
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".LogUploaderActivity" android:label="Log Uploader" android:screenOrientation="landscape" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
回答4:
Please try this in your activity. Inside onCreate()
and before setContentView.
// keeps the screen orientation in Landscape mode
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
回答5:
Maybe important to mention because i did not know it:
If you use the online phonegap apk converter with hydration enabled to your application, u'll have to rebuild your app completly instead of just update it. This will help you also with preferences like "orientation" or "fullscreen" !
来源:https://stackoverflow.com/questions/9801128/phonegap-forcing-landscape-orientation