मैं अपने एंड्रॉइड ऐप में कुछ दृश्यों के लिए लैंडस्केप मोड को कैसे अक्षम कर सकता हूं?
मैं अपने एंड्रॉइड ऐप में कुछ दृश्यों के लिए लैंडस्केप मोड को कैसे अक्षम कर सकता हूं?
जवाबों:
android:screenOrientation="portrait"
AndroidManifest.xml में गतिविधि में जोड़ें । उदाहरण के लिए:
<activity android:name=".SomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" />
संपादित करें: चूंकि यह एक सुपर-लोकप्रिय उत्तर बन गया है, इसलिए मैं बहुत ही दोषी महसूस करता हूं क्योंकि पोर्ट्रेट को मजबूर करना शायद ही कभी उन समस्याओं का सही समाधान है जो इसे अक्सर लागू होते हैं।
मजबूर चित्र के साथ प्रमुख चेतावनी:
retainInstance
टुकड़ों का उपयोग करना सीखें ।इसलिए अधिकांश ऐप्स को केवल फ़ोन सेंसर, सॉफ़्टवेयर और भौतिक कॉन्फ़िगरेशन को अपना निर्णय लेने देना चाहिए कि उपयोगकर्ता आपके ऐप के साथ सहभागिता कैसे करना चाहता है। कुछ मामलों के बारे में आप अभी भी सोच सकते हैं, हालाँकि, यदि आप sensor
अपने उपयोग के मामले में अभिविन्यास के डिफ़ॉल्ट व्यवहार से खुश नहीं हैं :
nosensor
अभिविन्यास के लिए करें। यह अधिकांश टैबलेट और अधिकांश फोन पर पोर्ट्रेट पर परिदृश्य को मजबूर करता है, लेकिन मैं अभी भी अधिकांश "सामान्य" ऐप्स के लिए इसकी सिफारिश नहीं करूंगा (कुछ उपयोगकर्ता अपने फोन पर लैंडस्केप सॉफ्टबोर्ड में टाइप करना पसंद करते हैं, और कई टैबलेट उपयोगकर्ता पोर्ट्रेट में पढ़ते हैं - और आपको उन्हें देना चाहिए)।sensorPortrait
तो portrait
एंड्रॉइड 2.3+ की तुलना में बेहतर हो सकता है ; यह उल्टा चित्र के लिए अनुमति देता है, जो टेबलेट उपयोग में काफी आम है।मुझे AndroidManifest.xml
इस पोस्ट को पढ़ने तक फ़ाइल स्विच के बारे में पता नहीं था , इसलिए मेरे ऐप्स में मैंने इसके बजाय इसका उपयोग किया है:
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // Fixed Portrait orientation
इसे android:screenOrientation="portrait"
अपनी मैनिफ़ेस्ट फ़ाइल में जोड़ें जहाँ आप अपनी गतिविधि को इस तरह घोषित करते हैं
<activity android:name=".yourActivity"
....
android:screenOrientation="portrait" />
यदि आप java code try का उपयोग करना चाहते है
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
इससे पहले कि आप setContentView
अपनी गतिविधि के लिए विधि कॉल करेंonCreate()
।
आशा है कि इस मदद और आसानी से सभी के लिए समझ में आता है ...
यहां बहुत सारे उत्तर "portrait"
आपके AndroidManifest.xml फ़ाइल में उपयोग करने का सुझाव दे रहे हैं । यह एक अच्छा समाधान की तरह लग सकता है - लेकिन जैसा कि प्रलेखन में उल्लेख किया गया है, आप ऐसे उपकरणों को गा रहे हैं जिनमें केवल परिदृश्य हो सकता है। आप चित्र में जाने के लिए कुछ उपकरणों को भी मजबूर कर रहे हैं (जो परिदृश्य में सबसे अच्छा काम करते हैं), उचित अभिविन्यास प्राप्त नहीं कर रहे हैं।
मेरा सुझाव "nosensor"
इसके बजाय उपयोग करना है। यह डिवाइस को अपने डिफ़ॉल्ट पसंदीदा अभिविन्यास का उपयोग करने के लिए छोड़ देगा, Google Play पर किसी भी खरीदारी / डाउनलोड को ब्लॉक नहीं करेगा, और यह सुनिश्चित करेगा कि सेंसर आपके (NDK, मेरे मामले में) गेम में गड़बड़ न करे।
बस इस पंक्ति को अपने घोषणापत्र में जोड़ें
एंड्रॉयड: screenOrientation = "चित्र"
<manifest
package="com.example.speedtest"
android:versionCode="1"
android:versionName="1.0" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="ComparisionActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" >
</activity>
</application>
</manifest>
आप अपनी सारी गतिविधियों के लिए एक सामान्य आधार वर्ग का विस्तार किए बिना अपने पूरे आवेदन के लिए ऐसा कर सकते हैं।
चाल यह सुनिश्चित करने के लिए है कि आप अपने प्रोजेक्ट में एप्लिकेशन उपवर्ग शामिल करें। अपने ऑनक्रिएट () में, जब आपका ऐप पहली बार शुरू होता है, तो आप गतिविधि जीवनचक्र की घटनाओं की सूचनाएँ प्राप्त करने के लिए एक एक्टिविटी लाइफ़साइकल कॉलबैक ऑब्जेक्ट (एपीआई स्तर 14+) को पंजीकृत करते हैं।
यह आपको अपने कोड को निष्पादित करने का अवसर देता है जब भी आपके ऐप में कोई भी गतिविधि शुरू होती है (या बंद हो जाती है, या फिर से शुरू हो जाती है, या जो भी हो)। इस बिंदु पर आप नई बनाई गई गतिविधि पर setRequestedOrientation () कॉल कर सकते हैं।
और अपनी मैनिफ़ेस्ट फ़ाइल में ऐप: name = "। MyApp" जोड़ना न भूलें।
class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
// register to be informed of activities starting up
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity,
Bundle savedInstanceState) {
// new activity created; force its orientation to portrait
activity.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
....
});
}
}
गतिविधि के onCreate () में इसका उपयोग करें
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
आपको android:screenOrientation="sensorPortrait"
AndroidManifest.xml में बदलना चाहिए
बस अपनी गतिविधि टैग में इस विशेषता को जोड़ें।
android:screenOrientation="portrait"
यदि आप गतिविधि के प्रत्येक प्रकट प्रविष्टि में अभिविन्यास को जोड़ने की परेशानी से बेहतर तरीके से नहीं गुजरना चाहते हैं, तो एक बेसएक्टिविटी क्लास ('गतिविधि' या 'AppCompatActivity' विरासत करें) बनाएं, जो 'एक्टिविटी' के बजाय आपके एप्लिकेशन की प्रत्येक गतिविधि को विरासत में मिलेगा। 'या' AppCompatActivity 'और बस अपने BaseActivity में निम्नलिखित कोड जोड़ें:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
// rest of your code......
}
android:screenOrientation="portrait"
उस गतिविधि में जोड़ें जिसे आप लैंडस्केप मोड को अक्षम करना चाहते हैं।
यदि आप निष्क्रिय करना चाहते हैं Landscape mode for your android app
(या एक गतिविधि) आपको बस इतना करना है,
android:screenOrientation="portrait"
AndroidManifest.xml
फ़ाइल में गतिविधि टैग के लिए।
पसंद:
<activity android:name="YourActivityName"
android:icon="@drawable/ic_launcher"
android:label="Your App Name"
android:screenOrientation="portrait">
एक और तरीका है, प्रोग्रामेटिक दृष्टिकोण।
यदि आप इस प्रोग्राम को करना चाहते हैं। जावा कोड का उपयोग करना। आप गतिविधि के जावा वर्ग में नीचे दिए गए कोड को जोड़कर ऐसा कर सकते हैं जिसे आप परिदृश्य मोड में प्रदर्शित नहीं करना चाहते हैं।
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
मुझे आशा है कि यह आपकी मदद करता है। अधिक जानकारी के लिए आप यहां लिंक विवरण दर्ज कर सकते हैं
android:screenOrientation="nosensor">
कुछ दृश्य में अभिविन्यास कैसे बदलें
संपूर्ण गतिविधि के लॉकिंग ओरिएंटेशन के बजाय आप इस क्लास का उपयोग अपने किसी भी दृष्टिकोण से गतिशील रूप से लॉक ओरिएंटेशन के लिए कर सकते हैं: -
अपना दृश्य लैंडस्केप करें
OrientationUtils.lockOrientationLandscape(mActivity);
अपने विचार पोर्ट्रेट बनाएं
OrientationUtils.lockOrientationPortrait(mActivity);
ओरिएंटेशन अनलॉक करें
OrientationUtils.unlockOrientation(mActivity);
ओरिएंटेशन यूटील क्लास
import android.app.Activity;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.os.Build;
import android.view.Surface;
import android.view.WindowManager;
/* * This class is used to lock orientation of android app in nay android devices
*/
public class OrientationUtils {
private OrientationUtils() {
}
/** Locks the device window in landscape mode. */
public static void lockOrientationLandscape(Activity activity) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
}
/** Locks the device window in portrait mode. */
public static void lockOrientationPortrait(Activity activity) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
/** Locks the device window in actual screen mode. */
public static void lockOrientation(Activity activity) {
final int orientation = activity.getResources().getConfiguration().orientation;
final int rotation = ((WindowManager) activity.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay()
.getRotation();
// Copied from Android docs, since we don't have these values in Froyo
// 2.2
int SCREEN_ORIENTATION_REVERSE_LANDSCAPE = 8;
int SCREEN_ORIENTATION_REVERSE_PORTRAIT = 9;
// Build.VERSION.SDK_INT <= Build.VERSION_CODES.FROYO
if (!(Build.VERSION.SDK_INT <= Build.VERSION_CODES.FROYO)) {
SCREEN_ORIENTATION_REVERSE_LANDSCAPE = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
SCREEN_ORIENTATION_REVERSE_PORTRAIT = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
}
if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90) {
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
} else if (rotation == Surface.ROTATION_180 || rotation == Surface.ROTATION_270) {
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_PORTRAIT);
} else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
}
}
}
/** Unlocks the device window in user defined screen mode. */
public static void unlockOrientation(Activity activity) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER);
}
}
आपको प्रत्येक गतिविधि का ओरिएंटेशन सेट करना होगा।
<activity
android:name="com.example.SplashScreen2"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar" >
</activity>
<activity
android:name="com.example.Registration"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar" >
</activity>
<activity
android:name="com.example.Verification"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar" >
</activity>
<activity
android:name="com.example.WelcomeAlmostDone"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar" >
</activity>
<activity
android:name="com.example.PasswordRegistration"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar" >
</activity>
यदि आप Xamarin C # का उपयोग कर रहे हैं तो इनमें से कुछ समाधान काम नहीं करेंगे। यहाँ समाधान मैं काम करने के लिए मिला है।
[Activity(MainLauncher = true, Icon = "@drawable/icon", ScreenOrientation = ScreenOrientation.Portrait)]
कक्षा के ऊपर अन्य समाधानों की तरह ही अच्छी तरह से काम करता है, यह भी विश्व स्तर पर लागू नहीं है और प्रत्येक गतिविधि हेडर में रखा जाना चाहिए।
आप अपनी विशेष गतिविधि को अपने घोषणापत्र में इसे लिखकर हमेशा पोर्ट्रेट मोड में बने रहने के लिए बाध्य कर सकते हैं
<activity android:name=".MainActivity"
android:screenOrientation="portrait"></activity>
आप अपनी गतिविधि के onCreate () विधि में निम्नलिखित पंक्ति लिखकर अपनी गतिविधि को पोस्ट्रेट मोड में बने रहने के लिए बाध्य कर सकते हैं
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
<android . . . >
. . .
<manifest . . . >
. . .
<application>
<activity android:name=".MyActivity"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation">
</activity>
</application>
</manifest>
</android>
अपने प्रोजेक्ट पर नीचे की तारीफ जोड़ें,
npm स्थापित करें
npm i- देशी-अभिविन्यास-लॉकर प्रतिक्रिया
तब आप मेनिफ़ेस्ट क्लास का उपयोग करते हैं जैसे, React_Native (आपका प्रोजेक्ट फ़ोल्डर) / android / app / src / main / AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<application
android:name=".MainApplication"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:allowBackup="false"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="landscape"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
</application>
धन्यवाद!
में <apphome>/platform/android
निर्देशिका बनाई AndroidManifest.xml
(उत्पन्न एक से कॉपी)। फिर सभी गतिविधि तत्वों में android:screenOrientation=
" portrait
" जोड़ें ।
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="in.co.nurture.bajajfinserv">
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity" android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
हम विशेषता या android: screenOrientation का उपयोग करके गतिविधि या पोर्ट्रेट मोड में गतिविधि को प्रतिबंधित कर सकते हैं।
अगर हमारे कार्यक्रम में एक से अधिक गतिविधियाँ हैं, तो आपको किसी भी एक मोड में किसी भी गतिविधि को प्रतिबंधित करने की स्वतंत्रता है और यह कभी भी दूसरों को प्रभावित नहीं करता है जो आप नहीं चाहते हैं।
या तो मैनिफ़ेस्ट क्लास में।
<activity android:name=".yourActivity"
....
android:screenOrientation="portrait" />
या प्रोग्रामिक रूप से
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
नोट: आपको setContentView
अपनी गतिविधि के लिए विधि से पहले इसे कॉल करना चाहिए onCreate()
।
AndroidManifest.xml फ़ाइल android:screenOrientation="portrait"
में जोड़ें ।
उदाहरण के लिए :
<activity android:name=".MapScreen"
android:screenOrientation="portrait"></activity>
किसी और की मदद करने की उम्मीद में, AndroidManifest.xml में गतिविधि पर निम्नलिखित विशेषता आपको सभी की आवश्यकता है:
एंड्रॉयड: configChanges = "अभिविन्यास"
तो, पूर्ण गतिविधि नोड:
<activity android:name="Activity1"
android:icon="@drawable/icon"
android:label="App Name"
android:configChanges="orientation">
इसने मेरे लिए काम किया, इस कोड को AndroidManifest फ़ाइल में जोड़ने का प्रयास करें
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:screenOrientation="portrait"
android:theme="@style/AppTheme">
....
....
</application>
इसे अपने प्रकट में रखो।
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="sensorPortrait" />
ओरिएंटेशन पोर्ट्रेट होगा, लेकिन यदि उपयोगकर्ता का फोन उल्टा है, तो यह सही तरीका दिखाता है। (तो आपकी स्क्रीन 180 डिग्री घूम जाएगी)।
यदि मल्टी-विंडो मोड में गतिविधि चल रही है तो सिस्टम इस विशेषता को अनदेखा करता है ।
यदि आपकी गतिविधि पहले डिवाइस ओरिएंटेशन स्थिति से संबंधित है, तो वर्तमान डिवाइस ओरिएंटेशन को onCreate
विधि में प्राप्त करें और फिर इसे हमेशा के लिए ठीक करें:
int deviceRotation = ((WindowManager) getBaseContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getOrientation();
if(deviceRotation == Surface.ROTATION_0) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
else if(deviceRotation == Surface.ROTATION_180)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
}
else if(deviceRotation == Surface.ROTATION_90)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
else if(deviceRotation == Surface.ROTATION_270)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
}