আমার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে কিছু দৃশ্যের জন্য আমি কীভাবে ল্যান্ডস্কেপ মোড অক্ষম করতে পারি?
আমার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে কিছু দৃশ্যের জন্য আমি কীভাবে ল্যান্ডস্কেপ মোড অক্ষম করতে পারি?
উত্তর:
android:screenOrientation="portrait"
অ্যান্ড্রয়েডম্যানিফেস্ট.এক্সএমএলে ক্রিয়াকলাপে যুক্ত করুন । উদাহরণ স্বরূপ:
<activity android:name=".SomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" />
সম্পাদনা: যেহেতু এটি একটি জনপ্রিয়-জনপ্রিয় উত্তর হয়ে গেছে, তাই আমি খুব দোষী বোধ করি কারণ পোর্ট্রেট বাধ্যতামূলকভাবে যে সমস্যাগুলি প্রায়শই প্রয়োগ করা হয় তার যথাযথ সমাধান খুব কমই হয়।
জোরপূর্বক প্রতিকৃতি সহ প্রধান সাবধানতা:
retainInstance
টুকরা ব্যবহার শিখুন ।সুতরাং বেশিরভাগ অ্যাপ্লিকেশনগুলিকে কেবল ফোন সেন্সর, সফ্টওয়্যার এবং শারীরিক কনফিগারেশন ব্যবহারকারীদের কীভাবে আপনার অ্যাপ্লিকেশনের সাথে ইন্টারেক্ট করতে চায় সে সম্পর্কে তাদের নিজস্ব সিদ্ধান্ত নিতে দেওয়া উচিত। কয়েকটি ক্ষেত্রে আপনি এখনও ভাবতে চাইতে পারেন, যদিও আপনি যদি sensor
আপনার ব্যবহারের ক্ষেত্রে অভিমুখের ডিফল্ট আচরণে সন্তুষ্ট নন :
nosensor
তবে ওরিয়েন্টেশনের জন্য ব্যবহার করে । এটি বেশিরভাগ ফোনে ল্যান্ডস্কেপ এবং পোর্ট্রেটের উপর জোর দেয়, তবে আমি এখনও বেশিরভাগ "সাধারণ" অ্যাপ্লিকেশনগুলির জন্য এটি সুপারিশ করব না (কিছু ব্যবহারকারী কেবল তাদের ফোনে ল্যান্ডস্কেপ সফটকিবোর্ডে টাইপ করতে পছন্দ করেন এবং অনেক ট্যাবলেট ব্যবহারকারী প্রতিকৃতিতে পড়েন - এবং আপনার তাদের দেওয়া উচিত)।sensorPortrait
চেয়ে ভাল হতে পারে portrait
; এটি আপসাইড ডাউন প্রতিকৃতির জন্য মঞ্জুরি দেয় যা ট্যাবলেট ব্যবহারে বেশ সাধারণ।AndroidManifest.xml
এই পোস্টটি পড়া না হওয়া পর্যন্ত আমি ফাইল স্যুইচ সম্পর্কে সচেতন ছিলাম না , সুতরাং আমার অ্যাপগুলিতে আমি এর পরিবর্তে এটি ব্যবহার করেছি:
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // Fixed Portrait orientation
এই যোগ android:screenOrientation="portrait"
আপনার ম্যানিফেস্ট ফাইলে যেখানে আপনি এই মতো আপনার কার্যকলাপ ঘোষণা
<activity android:name=".yourActivity"
....
android:screenOrientation="portrait" />
আপনি যদি জাভা কোড ব্যবহার করে করতে চান তবে চেষ্টা করুন
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
আগে আপনি কল setContentView
এ আপনার কার্যকলাপের জন্য পদ্ধতি onCreate()
।
আশা করি এই সাহায্য এবং সবার জন্য সহজেই বোধগম্য ...
এখানে প্রচুর উত্তরগুলি "portrait"
আপনার AndroidManLive.xML ফাইলটিতে ব্যবহার করার পরামর্শ দিচ্ছে । এটি একটি ভাল সমাধানের মতো মনে হতে পারে - তবে ডকুমেন্টেশনে উল্লিখিত হিসাবে আপনি কেবল এমন ল্যান্ডস্কেপ থাকতে পারে এমন ডিভাইসগুলি একত্র করছেন। আপনি সঠিক ডিভাইসটি না পেয়ে, নির্দিষ্ট ডিভাইসগুলিকে (যে ল্যান্ডস্কেপে সেরা কাজ করে) প্রতিকৃতিতে যেতে বাধ্য করছেন।
আমার পরামর্শ "nosensor"
পরিবর্তে ব্যবহার করা হয়। এটি ডিভাইসটিকে তার ডিফল্ট পছন্দসই ওরিয়েন্টেশন ব্যবহার করতে ছাড়বে, গুগল প্লেতে কোনও ক্রয় / ডাউনলোডগুলি ব্লক করবে না এবং এটি সেন্সরটি আপনার (এনডিকে, আমার ক্ষেত্রে) গেমটি গোলমাল করবে না তা নিশ্চিত করবে।
আপনার ম্যানিফেস্টে কেবল এই লাইনের মতো যুক্ত করুন
অ্যান্ড্রয়েড 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>
আপনি যদি ব্যবহারকারী-সেটিংস চান,
তাহলে আমি সুপারিশ করব setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
আপনি সেটিংস মেনু থেকে সেটিংস পরিবর্তন করতে পারেন।
আমার এটি প্রয়োজন কারণ আমার টাইমারগুলি অবশ্যই স্ক্রিনে যা আছে তার সাথে মিল রাখতে হবে এবং স্ক্রিনটি ঘোরানো বর্তমান ক্রিয়াকলাপটি ধ্বংস করবে।
আপনার সমস্ত ক্রিয়াকলাপগুলিকে একটি সাধারণ বেস শ্রেণি প্রসারিত না করে আপনি আপনার পুরো অ্যাপ্লিকেশনটির জন্য এটি করতে পারেন।
কৌশলটি হ'ল প্রথমে আপনার প্রকল্পের কোনও অ্যাপ্লিকেশন সাবক্লাস অন্তর্ভুক্ত করা হয়েছে তা নিশ্চিত করা। এটির অনক্রিয়েট () এ, যখন আপনার অ্যাপ্লিকেশনটি প্রথম শুরু হয়, আপনি ক্রিয়াকলাপের জীবনচক্রের ইভেন্টগুলির বিজ্ঞপ্তিগুলি পেতে একটি অ্যাক্টিভিটি লাইফাইসাইকেলব্যাক্স অবজেক্ট (API স্তর 14+) নিবন্ধভুক্ত করেন।
এটি যখনই আপনার অ্যাপ্লিকেশনটিতে কোনও ক্রিয়াকলাপ শুরু হয় (বা বন্ধ হয়ে যায়, বা পুনরায় চালু করা হয় বা যাই হোক না কেন) আপনার নিজের কোডটি কার্যকর করার সুযোগ দেয়। এই মুহুর্তে আপনি নতুন তৈরি করা ক্রিয়াকলাপে সেটরেক্টেড ওরিয়েন্টেশন () কল করতে পারেন।
এবং অ্যাপ্লিকেশন যুক্ত করতে ভুলবেন না: নাম = "App মাই অ্যাপ" আপনার ম্যানিফেস্ট ফাইলে।
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);
}
....
});
}
}
ক্রিয়াকলাপের অনক্রিট () এ এটি ব্যবহার করুন
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
আপনার android:screenOrientation="sensorPortrait"
অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল পরিবর্তন করা উচিত
আপনার ক্রিয়াকলাপ ট্যাগে এই গুণটি কেবল যুক্ত করুন।
android:screenOrientation="portrait"
আপনি যদি ক্রিয়াকলাপের প্রতিটি ম্যানিফেস্ট এন্ট্রিগুলিতে আরও বেশি ঝুঁকির মুখোমুখি হতে না চান তবে একটি বেসঅ্যাক্টিভিটি ক্লাস তৈরি করুন (উত্তরাধিকার সূত্রে 'ক্রিয়াকলাপ' বা 'অ্যাপকম্প্যাটঅ্যাক্টিভিটি') যা আপনার অ্যাপ্লিকেশনটির প্রতিটি ক্রিয়াকলাপের পরিবর্তে উত্তরাধিকার সূত্রে প্রাপ্ত হবে 'বা' অ্যাপকম্প্যাটঅ্যাক্টিভিটি 'এবং কেবলমাত্র আপনার বেসএটিভিটিতে নিম্নলিখিত কোডের টুকরো যুক্ত করুন:
@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);
আমি আশা করি এটা আরো বিস্তারিত জানার .For আপনি সাহায্য করে আপনি এখানে পরিদর্শন করতে পারেন এখানে লিংক বর্ণনা লিখুন
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>
আপনি যদি জামারিন সি # ব্যবহার করেন তবে এর মধ্যে কয়েকটি সমাধান কার্যকর হবে না। সমাধানটি আমি এখানে কাজ করতে পেলাম।
[Activity(MainLauncher = true, Icon = "@drawable/icon", ScreenOrientation = ScreenOrientation.Portrait)]
উপরের শ্রেণিটি ভালভাবে কাজ করে, অন্যান্য সমাধানগুলির মতো, এটি বিশ্বব্যাপী প্রযোজ্য নয় এবং প্রতিটি ক্রিয়াকলাপ শিরোনামে স্থাপন করা প্রয়োজন।
আপনি আপনার ম্যাসিফেস্ট.এক্সএমএল এ লিখে আপনার নির্দিষ্ট কার্যকলাপকে সর্বদা প্রতিকৃতি মোডে রাখতে বাধ্য করতে পারেন
<activity android:name=".MainActivity"
android:screenOrientation="portrait"></activity>
আপনি আপনার ক্রিয়াকলাপের অনক্রিট () পদ্ধতিতে নিম্নলিখিত লাইনটি লিখে নিজের কার্যকলাপকে পোস্টরেট মোডে রাখতে বাধ্য করতে পারেন
@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>
আপনার প্রকল্পের নীচে প্রশংসা যুক্ত করুন,
এনপিএম ইনস্টল
এনপিএম আমি নেটিভ-ওরিয়েন্টেশন-লকারকে প্রতিক্রিয়া জানাই
তারপরে আপনি মেনিফেস্ট ক্লাস যেমন, প্রতিক্রিয়া_নিটিভ (আপনার প্রজেক্ট ফোল্ডার) / অ্যান্ড্রয়েড / অ্যাপ / এসসিআর / প্রধান / অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল ব্যবহার করেন
<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>
আমরা প্রতিকৃতি বা অ্যান্ড্রয়েড: স্ক্রিন ওরিয়েন্টেশন ব্যবহার করে প্রতিকৃতি বা ল্যান্ডস্কেপ মোডে কার্যকলাপকে সীমাবদ্ধ করতে পারি।
আমাদের প্রোগ্রামে যদি আমাদের একাধিক ক্রিয়াকলাপ থাকে তবে আপনার স্বাধীনতা আছে যে কোনও একটিতে যে কোনও একটি কার্যকলাপে সীমাবদ্ধ রাখার স্বাধীনতা আছে এবং এটি আপনি চান না এমন অন্যদেরকে কখনই প্রভাবিত করে না।
হয় প্রকাশ্য শ্রেণিতে।
<activity android:name=".yourActivity"
....
android:screenOrientation="portrait" />
বা প্রোগ্রামগতভাবে
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
দ্রষ্টব্য:setContentView
আপনার ক্রিয়াকলাপের জন্য পদ্ধতির আগে আপনাকে এটি কল করা উচিত onCreate()
।
যোগ android:screenOrientation="portrait"
মধ্যে Andro আইডি ফাইল।
উদাহরণ স্বরূপ :
<activity android:name=".MapScreen"
android:screenOrientation="portrait"></activity>
অন্য কাউকে সহায়তা করার আশায়, অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল এ ACTIVITY এ নিম্নলিখিত বৈশিষ্ট্যটি আপনার যা দরকার তা হল:
অ্যান্ড্রয়েড configChanges = "অভিযোজন"
সুতরাং, সম্পূর্ণ ক্রিয়াকলাপ নোড:
<activity android:name="Activity1"
android:icon="@drawable/icon"
android:label="App Name"
android:configChanges="orientation">
এটি আমার পক্ষে কাজ করেছিল, অ্যান্ড্রয়েডমেনিস্ট ফাইলটিতে এই কোডটি যুক্ত করার চেষ্টা করুন
<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);
}