কীভাবে প্রতিক্রিয়া নেটিভ ঘূর্ণন অক্ষম করবেন?


104

আমি কেবল প্রতিকৃতি দর্শন সমর্থন করতে চাই। স্বয়ংক্রিয়করণ না করে আমি কীভাবে একটি প্রতিক্রিয়া নেটিভ অ্যাপ্লিকেশন তৈরি করতে পারি? আমি ডকুমেন্টেশন এবং গিথুব সমস্যাগুলি অনুসন্ধান করার চেষ্টা করেছি, তবে আমি কোনও সহায়ক পাইনি।


আপনি কেবল অ্যাপ্লিকেশন বৈশিষ্ট্যে (অন্য কোনও আইওএস অ্যাপের মতোই) সমর্থিত অভিযোজনগুলি সেট করতে পারবেন না?
থিলো

8
অ্যান্ড্রয়েড সম্পর্কে কী?
ooolala

2
এই তাই উত্তরে @ooolala উত্তর stackoverflow.com/questions/34078354/...
MonkeyBonkey

দ্রষ্টব্য: আমার মোট 4 এ, আমি sensorPortraitসঠিকভাবে কাজ করতে পারিনি । এটি কখনও কখনও প্রতিকৃতি পোর্ট্রেট (অর্থাত্ reversePortrait) সমর্থন করবে না । যাইহোক, ব্যবহার করে fullSensorকাজ হয়েছে তবে এটিতে ল্যান্ডস্কেপকেও অনুমতি দেওয়ার ক্যাভ্যাট রয়েছে। এটা আমার জন্য জরিমানা হচ্ছে শেষ পর্যন্ত কিন্তু আপনি যদি শুধুমাত্র চান portraitএবং reversePortraitতখন আপনি আপনার কার্যকলাপে স্থিতিবিন্যাস পরিবর্তন মাঝখানে আটকে দিতে পারে onConfigurationChangedএবং newConfig.orientationএবং শুধু উপেক্ষা বা ওভাররাইড ভূদৃশ্য পরিবর্তন।
জোশুয়া পিন্টার

উত্তর:


133

প্রতিক্রিয়ার নেটিভ অ্যাপ্লিকেশনটি কেবলমাত্র একটি সাধারণ আইওএস অ্যাপ্লিকেশন, যাতে আপনি অন্যান্য সমস্ত অ্যাপ্লিকেশনের জন্য ঠিক তেমনভাবে এটি করতে পারেন। সাধারণ অ্যাপ্লিকেশন বৈশিষ্ট্যে ডিভাইস ওরিয়েন্টেশন হিসাবে অনুমোদিত "ল্যান্ডস্কেপ বাম" এবং "ল্যান্ডস্কেপ রাইট" কেবল অনিচ্ছুক করুন (এক্সকোডে)

ডিভাইস ওরিয়েন্টেশন


ধন্যবাদ! আরও একটি প্রশ্ন, আমি চেক portraitএবং upside down, কিন্তু আমার অ্যাপ্লিকেশন autorotate করা হয়নি যখন আমি কাল্পনিক স্ক্রীন (90 ডিগ্রী দুইবার), কি সমস্যা ঘোরাতে?
সিগ করুন

চেষ্টা করেছেন। কোনও আইপ্যাড (প্রো) সিমুলেটারে চলাকালীন আরএন 34 এর সাথে কাজ করছে বলে মনে হচ্ছে না। আইফোন সিমুলেটারে চলার সময় এটি কাজ করে। যদিও আইপ্যাডে কাজ করা আমার দরকার। স্ট্রেঞ্জ।
পেড্রাম

1
দেখা যাচ্ছে যে আমার কাছে "ডিভাইসগুলি" আইপ্যাড হিসাবে সেট করতে হবে এবং "ইউনিভার্সাল" আগের মতো নয়। এটি কাজ করে।
পেড্রাম

মিঃ @ জারেক পোটিউক আমার একটা ছোট সন্দেহ আছে, আসলে যখন আমি আমার সিমুলেটারটি ডিফল্টভাবে ল্যান্ডস্কেপোমোড দেখাতাম তখন আমার ল্যান্ডস্কেপফুট এবং ডান ব্যবহার ছিল। তবে, এটি ডিভাইসে ল্যান্ডস্কেপ মোডটি দেখায় না now আমি নেটিভ অরিয়েন্টেশন মডিউলটি ব্যবহার করছি এবং এক্সকোডে ল্যান্ডস্কেপ বাম এবং ডান নির্বাচন করুন। তবে, আমি পেলাম না
লাভরাজু

2
এটি কোনও কারণে আর কাজ করে না। কমপক্ষে নাreact-native 0.45.1
ম্যাটিকি

79

আইওএসের জন্য, জারেকের উত্তর দুর্দান্ত।

অ্যান্ড্রয়েডের জন্য আপনার অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল ফাইল সম্পাদনা করতে হবে। আপনি প্রতিকৃতি মোডে লক করতে চান এমন প্রতিটি ক্রিয়াকলাপে নিম্নলিখিত লাইনটি যুক্ত করুন:

android:screenOrientation="portrait" 

সুতরাং, একটি সম্পূর্ণ উদাহরণ এর মত দেখতে হতে পারে:

      <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
        android:windowSoftInputMode="adjustResize"
        android:screenOrientation="portrait">

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
      </activity>

ডক্সে উপলভ্য স্ক্রীন ওরিয়েন্টেশন বৈশিষ্ট্যের সম্পূর্ণ তালিকা দেখুন: এখানে https://developer.android.com/guide/topics/manifest/activity-element.html


2
এটি পুরোপুরি কাজ করে। কেবল ভিএস কোড ব্যবহার করা অন্যের সুবিধার্থে: 'কমান্ড প্যালেট ...' থেকে 'ডিভাইস / সিমুলেটর অন Android চালান' চালনা করুন। অ্যাপ্লিকেশনটিকে 'পুনরায় লোড করুন' এ ঝাঁকুনি কার্যকর হবে না।
ষি

66

2017 আপডেট: {"orientation": "portrait"}

বর্তমানে অনেক সরকারী রিএ্যাক্ট নেটিভ গাইডরা এর মতো একটি এক্সপো ব্যবহারের পরামর্শ দেয় যেমন রিএ্যাক্ট নেটিভ অ্যাপ্লিকেশনগুলি তৈরি করার সময় বিদ্যমান উত্তরগুলি ছাড়াও আমি একটি এক্সপো-নির্দিষ্ট সমাধানও যুক্ত করব যা লক্ষণীয় যে এটি আইওএস এবং অ্যান্ড্রয়েড উভয়েরই জন্য কাজ করে এবং আপনার কেবল প্রয়োজন এক্সকোড কনফিগারেশন, অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল ইত্যাদির সাথে ঝামেলা করার প্রয়োজন ছাড়াই এটি একবার সেট করুন

নির্মাণের সময় ওরিয়েন্টেশন নির্ধারণ:

আপনি যদি এক্সপো দিয়ে আপনার প্রতিক্রিয়াীয় নেটিভ অ্যাপ্লিকেশনগুলি তৈরি করে থাকেন তবে আপনি orientationআপনার app.jsonফাইলে ক্ষেত্রটি ব্যবহার করতে পারেন - উদাহরণস্বরূপ:

{
  "expo": {
    "name": "My app",
    "slug": "my-app",
    "sdkVersion": "21.0.0",
    "privacy": "public",
    "orientation": "portrait"
  }
}

এটিতে সেট করা যেতে পারে "portrait", "landscape"বা "default"যার অর্থ বিন্যাস লক না করে স্বতঃসংশ্লিষ্ট।

রানটাইমের সময় ওরিয়েন্টেশন নির্ধারণ:

আপনি রানটাইম চালিয়ে সেই সেটিংটি ওভাররাইড করতে পারেন উদাহরণস্বরূপ:

Expo.ScreenOrientation.allow(Expo.ScreenOrientation.Orientation.LANDSCAPE);

যুক্তিটি যেখানে হতে পারে:

  • ALL - সমস্ত 4 সম্ভাব্য ওরিয়েন্টেশন
  • ALL_BUT_UPSIDE_DOWN - সমস্ত বিপরীত প্রতিকৃতি, নির্দিষ্ট অ্যান্ড্রয়েড ডিভাইসে সমস্ত 4 টি অভিমুখ হতে পারে।
  • PORTRAIT - প্রতিকৃতি অরিয়েন্টেশন কিছু নির্দিষ্ট অ্যান্ড্রয়েড ডিভাইসে বিপরীত প্রতিকৃতিও হতে পারে।
  • PORTRAIT_UP - কেবল ওপারসাইড প্রতিকৃতি।
  • PORTRAIT_DOWN - কেবল পোর্ট্রেটের উপরের দিকে।
  • LANDSCAPE - কোনও ল্যান্ডস্কেপ অভিযোজন।
  • LANDSCAPE_LEFT - শুধুমাত্র বাম প্রাকৃতিক দৃশ্য।
  • LANDSCAPE_RIGHT - ডান ল্যান্ডস্কেপ শুধুমাত্র।

ঘূর্ণন সনাক্তকরণ:

আপনি যখন একাধিক অভিমুখীকরণের অনুমতি দেন তখন আপনি বস্তুর changeইভেন্টগুলি শুনে পরিবর্তনগুলি সনাক্ত করতে পারেন Dimensions:

Dimensions.addEventListener('change', (dimensions) => {
  // you get:
  //  dimensions.window.width
  //  dimensions.window.height
  //  dimensions.screen.width
  //  dimensions.screen.height
});

অথবা আপনি মাত্রাটি যে কোনও সময় এর সাথে Dimensions.get('window')এবং এর Dimensions.get('screen')মতো পেতে পারেন:

const dim = Dimensions.get('window');
// you get:
//  dim.width
//  dim.height

বা:

const dim = Dimensions.get('screen');
// you get:
//  dim.width
//  dim.height

আপনি যখন ইভেন্টে শুনতে আপনি উভয় পেতে windowএবং screenএকই সময়ে যাতে কেন আপনি তা ভিন্নভাবে অ্যাক্সেস আছে।

ডকুমেন্টেশন:

আরও তথ্যের জন্য দেখুন:


2
ডিভাইসে এক্সপো বন্ধ করে পুনরায় চালু করার পরে কাজ করে
ব্র্যান্ডন সেরেন কুলি

এটিকে আলাদা করার কোনও উপায় কি, আইপ্যাডের মতো ল্যান্ডস্কেপ এবং আইফোনকে কেবল প্রতিকৃতির অনুমতি দেয়?
7urkm3n

এটি আমার ক্ষেত্রে কার্যকর সমাধান। আমার মূল দৃষ্টিভঙ্গি আন্তঃস্থায়ী বিজ্ঞাপন বন্ধ করার পরে 180 ডিগ্রি ঘূর্ণন করে। সুতরাং আমার কাছে একটি হার্ড কোডিং এক্সপো.স্ক্রিন ওরিয়েন্টেশন.ইলএল সিঙ্ক করা উচিত (এক্সপো.স্ক্রিন ওরিয়েন্টেশন.অরিয়েন্টেশন .landSCAPE_LEFT);
হারমান শোয়ার্জ

15

Answer for disable rotation in React Native.

For Android :

Androidmenifest.xML ফাইলে যান এবং একটি লাইন যুক্ত করুন: অ্যান্ড্রয়েড: স্ক্রিন ওরিয়েন্টেশন = "প্রতিকৃতি"

         <activity
            android:name=".MainActivity"

            android:screenOrientation="portrait"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize">

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
          </activity>

For IOS :

সহজ আপনাকে আপনার XCODE থেকে রোটেশন মোডটি চেক বা চেক করতে হবে

এখানে চিত্র বর্ণনা লিখুন


2
২০২০ সালের সেরা উত্তর, এটি আইওএস এবং অ্যান্ড্রয়েড উভয়ই কভার করে
আনন্দিত

3

আপনি যদি এক্সপো ব্যবহার করেন তবে আপনি এই কোডটি দিয়ে কেবল এটি করতে পারেন:

Expo.ScreenOrientation.allow(Expo.ScreenOrientation.Orientation.PORTRAIT);

রেন্ডার করার আগে এটি App.js এ রাখুন

সমস্ত বিকল্প:

ALL ALL_BUT_UPSIDE_DOWN PORTRAIT PORTRAIT_UP PORTRAIT_DOWN LANDSCAPE LANDSCAPE_LEFT LANDSCAPE_RIGHT


2

অ্যান্ড্রয়েডের জন্য আপনার অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল ফাইল সম্পাদনা করতে হবে। আপনি প্রতিকৃতি মোডে লক করতে চান এমন প্রতিটি ক্রিয়াকলাপে নিম্নলিখিত লাইনটি যুক্ত করুন:

অ্যান্ড্রয়েড screenOrientation = "প্রতিকৃতি"

সুতরাং, একটি সম্পূর্ণ উদাহরণ এর মত দেখতে হতে পারে:

 <application
  android:name=".MainApplication"
  android:label="@string/app_name"
  android:icon="@mipmap/ic_launcher"
  android:roundIcon="@mipmap/ic_launcher_round"
  android:allowBackup="false"
  android:theme="@style/AppTheme">

  <activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
    android:windowSoftInputMode="adjustResize"
    android:screenOrientation="portrait">

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

2

অ্যান্ড্রয়েডের জন্য: আপনার ম্যানিফেস্ট ফাইলটিতে:

xmlns:tools="http://schemas.android.com/tools"

তারপরে অ্যাপ্লিকেশন ট্যাগের ভিতরে রাখুন:

tools:ignore="LockedOrientationActivity"

এবং তারপরে সমস্ত ক্রিয়াকলাপে সেট করুন:

android:screenOrientation="portrait"

1

আইওএস আইপ্যাড ওরিয়েন্টিয়েন ইস্যুটির জন্য এটি ব্যবহার করুন প্লিস্ট ফাইল https://www.reddit.com/r/reactnative/comments/7vkrfp/disabling_screen_rotate_in_react_native_both/ এ পরিবর্তন করতে চান

iOS:

<key>UISupportedInterfaceOrientations</key> <array> <string>UIInterfaceOrientationPortrait</string> <string>UIInterfaceOrientationPortraitUpsideDown</string> </array>

1
একটি সমাধানের একটি লিঙ্ক স্বাগত, তবে দয়া করে আপনার উত্তরটি কার্যকর না হওয়া নিশ্চিত করুন: লিঙ্কটির চারপাশে প্রসঙ্গটি যুক্ত করুন যাতে আপনার সহ ব্যবহারকারীদের কিছু ধারণা থাকতে পারে এটি কী এবং কেন এটি রয়েছে, তবে আপনি পৃষ্ঠার সর্বাধিক প্রাসঙ্গিক অংশটি উদ্ধৃত করুন লক্ষ্য পৃষ্ঠাটি অনুপলব্ধ ক্ষেত্রে লিঙ্কটি পুনরায় সংযুক্ত করুন। লিঙ্কের চেয়ে সামান্য বেশি উত্তর মুছতে পারে।
ডাবল-বীপ

0

আপনি রিএ্যাক্ট-নেটিভ-ওরিয়েন্টেশন-লকার মডিউল এবং lockToPortrait()ফাংশন ব্যবহার করতে পারেন ।
আপনি যদি আনলকড ওরিয়েন্টেশন সহ কিছু পর্দা রাখতে চান তবে এটি সহায়ক হতে পারে - এই ক্ষেত্রে আপনি unlockAllOrientations()ফাংশনটিও ব্যবহার করতে পারেন ।


-3

আপনি যদি আরএন এক্সপো প্রকল্পটি ব্যবহার করছেন এবং অ্যাপটিতে প্রতিক্রিয়া-নেভিগেশন রয়েছে, তবে নীচের কোডটিতে নেভিগেশন সেটআপ করা আমাকে সহায়তা করেছিল।

const AppNavigator = createStackNavigator(
{
    Page1: { screen: Page1}
},
{
    portraitOnlyMode: true
});
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.