مدیریت و غیر فعال کردن چرخش صفحه نمایش

خانه » آموزش‌های تکمیلی » مدیریت و غیر فعال کردن چرخش صفحه نمایش
مدیریت و غیر فعال کردن چرخش صفحه نمایش در این جلسه به بررسی نحوه مدیریت چرخش صفحه نمایش یا به عبارتی چرخش اکتیویتی برنامه اندرویدی هنگام تغییر جهت قرارگیری دیوایس می‌پردازیم. یا به زبان ساده تر، غیر فعال کردن چرخش صفحه نمایش در برنامه اندرویدی از حالت عمودی (Portrait) به افقی (Landscape) و بلعکس.
آنچه در این آموزش می‌خوانید: چرخش صفحه نمایش (اکتیویتی) برنامه اندرویدی غیر فعال کردن چرخش صفحه نمایش پروژه مدیریت و غیر فعال کردن چرخش صفحه نمایش (اکتیویتی) در اندروید روش اول: غیر فعال کردن چرخش اکتیویتی در مانیفست پروژه روش دوم: غیر فعال کردن چرخش اکتیویتی توسط کد جاوا چرخش صفحه نمایش (اکتیویتی) برنامه اندرویدی به نام خدا. حتما در کار با برنامه‌های موبایلی و بخصوص اندرویدی، با قابلیت چرخش صفحه نمایش هنگام چرخش و تغییر وضعیت دستگاه مواجه شده‌اید. هنگام چرخش موبایل یا تبلت توسط کاربر، وضعیت جدید دستگاه توسط سنسور تعبیه شده در آن تشخیص داده شده و سیستم عامل نیز وضعیت جهت صفحه نمایش و به عبارت دیگر، اک..

خانه » آموزش‌های تکمیلی » مدیریت و غیر فعال کردن چرخش صفحه نمایش

مدیریت و غیر فعال کردن چرخش صفحه نمایش

در این جلسه به بررسی نحوه مدیریت چرخش صفحه نمایش یا به عبارتی چرخش اکتیویتی برنامه اندرویدی هنگام تغییر جهت قرارگیری دیوایس می‌پردازیم. یا به زبان ساده تر، غیر فعال کردن چرخش صفحه نمایش در برنامه اندرویدی از حالت عمودی (Portrait) به افقی (Landscape) و بلعکس.

آنچه در این آموزش می‌خوانید:

  • چرخش صفحه نمایش (اکتیویتی) برنامه اندرویدی
  • غیر فعال کردن چرخش صفحه نمایش
  • پروژه مدیریت و غیر فعال کردن چرخش صفحه نمایش (اکتیویتی) در اندروید
    • روش اول: غیر فعال کردن چرخش اکتیویتی در مانیفست پروژه
    • روش دوم: غیر فعال کردن چرخش اکتیویتی توسط کد جاوا

چرخش صفحه نمایش (اکتیویتی) برنامه اندرویدی

به نام خدا. حتما در کار با برنامه‌های موبایلی و بخصوص اندرویدی، با قابلیت چرخش صفحه نمایش هنگام چرخش و تغییر وضعیت دستگاه مواجه شده‌اید. هنگام چرخش موبایل یا تبلت توسط کاربر، وضعیت جدید دستگاه توسط سنسور تعبیه شده در آن تشخیص داده شده و سیستم عامل نیز وضعیت جهت صفحه نمایش و به عبارت دیگر، اکتیویتی در حال اجرای برنامه را بر اساس جهت قرار گیری دستگاه تغییر می‌دهد.

چرخش صفحه نمایش یا اکتیویتی در اندروید

به طور خلاصه، هنگامی که دستگاه در حالت افقی یا Landscape قرار گرفته باشد، اکتیویتی نیز به حالت افقی نمایش داده می‌شود. و همچنین هنگامی که دستگاه در حالت عمودی یا Portrait قرار گرفته باشد، اکتیویتی نیز به حالت عمودی نمایش داده می‌شود.

غیر فعال کردن چرخش صفحه نمایش

غیر فعال کردن چرخش صفحه نمایش (اکتیویتی) در برنامه نویسی اندروید

اما گاهی اوقات لازم است این قابلیت در برنامه و یا برخی از اکتیویتی‌های آن غیر فعال شده و اکتیویتی صرفا در یک حالت ثابت نمایش داده شود. از نمونه‌های بارز آن می‌توان به بازی‌های موبایلی اشاره کرد که غالباً در یک جهت ثابت تعریف شده‌اند و با چرخش دستگاه، جهت صفحه تغییر نمی‌کند.
بجز بازی‌ها در برخی دیگر از برنامه‌ها نیز بنا به ماهیت برنامه و محتویات آن ممکن است بخواهیم وضعیت اکتیویتی را در یک حالت مشخص قفل کنیم. برای مثال به اپلیکیشن‌های بانکی اشاره می‌کنم که عمدتا در حالت عمودی طراحی شده و با چرخش موبایل یا تبلت همچنان در حالت عمودی قرار دارند.
در مبحث آموزش تشخیص جهت صفحه نمایش دستگاه اندرویدی نحوه بررسی وضعیت فعلی صفحه نمایش پرداختیم. در این جلسه به نحوه غیر فعال کردن چرخش صفحه نمایش در اندروید و همچنین انواع روش‌ها و جزئیات آنها می‌پردازم.

پروژه مدیریت و غیر فعال کردن چرخش صفحه نمایش (اکتیویتی) در اندروید

می‌خواهیم مدیریت و همچنین غیر فعال کردن چرخش صفحه نمایش در اندروید را در قالب یک پروژه ساده بررسی کنیم.
طبق مبحث آموزش ساخت پروژه در اندروید استودیو یک پروژه اندرویدی با نام Manage Orientation می‌سازم. اکتیویتی را از نوع Empty Activity و زبان را Java انتخاب کردم.
برای غیر فعال کردن چرخش صفحه نمایش دو راه وجود دارد. در روش نخست در مانیفست پروژه یک ویژگی (attribute) به تگ اکتیویتی مربوطه اضافه می‌شود اما در روش دوم اینکار مستقیما درون اکتیویتی و در متد onCreate آن انجام می‌شود.
قبل از هر چیز پروژه را اجرا می‌کنم:

صفحه دستگاه اندرویدی در حالت عمودی یا Portrait

به طور پیش فرض، دیوایس در حالت عمودی قرار گرفته که صفحه نمایش و اکتیویتی نیز در همین وضعیت قرار دارد. حالا دستگاه را در وضعیت افقی قرار می‌دهم:

قرار دادن صفحه (اکتیویتی) اندرویدی در حالت افقی یا Landscape

ملاحظه می‌کنید اکتیویتی نیز مطابق با وضعیت دستگاه در حالت افقی قرار گرفته و یک چرخش ۹۰ درجه‌ای انجام شده است.
در ادامه مبحث با استفاده از دو روش، این چرخش را مدیریت و غیر فعال می‌کنیم.

روش اول: غیر فعال کردن چرخش اکتیویتی در مانیفست پروژه

در این روش صرفا با اضافه کردن ویژگی android:screenOrientation به تگ اکتیویتی مدنظر در فایل AndroidManifest.xml تعیین می‌کنیم وضعیت نمایش اکتیویتی روی چه حالتی باید ثابت شود؛ افقی یا عمودی. به کد زیر دقت کنید:

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

برای اکتیویتی MainActivity ویژگی android:screenOrientation با مقدار portrait تعریف کردم. انتظار دارم با اجرای مجدد پروژه، اکتیویتی در حالت افقی دستگاه نیز به صورت portrait نمایش داده شود که با اجرای پروژه، نتیجه مطلوب گرفته می‌شود:

غیر فعال کردن چرخش صفحه نمایش دستگاه اندرویدی توسط ویژگی screenOrientation در مانیفست پروژه

طبیعتا انتظار داریم با تعریف مقدار landscape بجای portrait، اکتیویتی در هر دو حالت قرار گیری دستگاه به صورت افقی نمایش داده شود:

قرار دادن اکتیویتی در حالت افقی (Landscape) توسط screenOrientation

اما هنوز محدودیتی داریم به اینصورت که ثابت شدن وضعیت قرارگیری اکتیویتی فقط در جهت پیش فرض دیوایس انجام می‌شود. یعنی چنانچه مقدار landscape تعریف شود، اکتیویتی فقط در یک جهت افقی دستگاه ثابت می‌ماند و چنانچه کاربر دستگاه را ۱۸۰ درجه بچرخاند به طوری که دستگاه مجدد در حالت افقی قرار گیرد، اکتیویتی به صورت وارونه نمایش داده خواهد شد.
برای حل این مشکل لازم است بجای مقادیر portrait و landscape به ترتیب از sensorPortrait و sensorLandscape استفاده شود. به عبارتی پیشوند sensor به ابتدای مقادیر اضافه شده است. تفاوت این دو گزینه در تصویر زیر مشهود است:

تفاوت تعیین مقدار  landscape و sensorLandscape در screenOrientation

آیتم دیگری نیز وجود دارد که حالت افقی یا عمودی صفحه را می‌توان در جهت عکس حالت پیش فرض افقی یا عمودی دستگاه قرار داد. به عبارتی، صفحه را در وضعیت ۱۸۰ درجه‌ای نسبت به حالت افقی یا عمودی پیش فرض دستگاه قرار می‌دهد. برای اینکار از پیشوند reverse (به معنی معکوس) استفاده می‌کنیم؛ reversePortrait و reverseLandscape. البته بعید می‌دانم این گزینه کاربرد زیادی داشته باشد!
گزینه‌ دیگری که سیستم عامل اندروید در اختیار توسعه دهندگان قرار داده، آیتم‌های userPortrait و userLandscape هستند که از نام آن مشخص است نحوه قرار گیری حالت افقی یا عمودی را بر اساس تنظیماتی که کاربر روی دستگاه خود انجام داده تنظیم می‌شود. یعنی اینکه حالت افقی صفحه در جهت حالت افقی دستگاه باشد یا جهت عکس آن (چرخش ۱۸۰ درجه‌ای) به سلیقه کاربر بستگی خواهد داشت.

نکته: معمولا به طور پیش فرض در اکثر دستگاه‌های اندرویدی، userLandscape و userPortrait همان نقش sensorLandscape و sensorPortrait را ایفا می‌کنند.

روش دوم: غیر فعال کردن چرخش اکتیویتی توسط کد جاوا

در روش دوم، تعیین نحوه چرخش اکتیویتی به طور مستقیم درون خود اکتیویتی و متد onCreate آن انجام می‌شود. برای اینکار از متد setRequestedOrientation استفاده می‌کنیم:

  setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);  

در کد فوق حالت SCREEN_ORIENTATION_SENSOR_LANDSCAPE تعیین شده که با حالت sensorLandscape تعریف شده در تگ اکتیویتی در مانیفست برابر است. سایر آیتم‌ها نیز مشابه آنچه قبلا توضیح دادیم در دسترس هستند:

غیر فعال کردن چرخش صفحه نمایش (اکتیویتی) در اندروید توسط متد setRequestedOrientation

MainActivity.java

  package ir.android_studio.manageorientation;    import androidx.appcompat.app.AppCompatActivity;    import android.content.pm.ActivityInfo;  import android.os.Bundle;    public class MainActivity extends AppCompatActivity {        @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_main);            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);        }  }  

موفق و پیروز باشید.

مطالعه‌ی بیشتر:

https://developer.android.com/guide/topics/manifest/activity-element

توجه : سورس پروژه درون پوشه Exercises قرار دارد

دانلود نسخه PDF این آموزش به همراه سورس پروژه
تعداد صفحات : ۹
حجم : ۱ مگابایت
قیمت : رایگان
دانلود رایگان با حجم ۱ مگابایت لینک کمکی این مطلب چقدر برایتان مفید بود؟ لطفا امتیاز دهید 4.5 / 5 ( 2 امتیاز ) آموزش‌های تکمیلی, آموزش‌های رایگان

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دشمن ساروج سوربات پتاسیم استئارات منیزیم بنزوات سدیم منتول وانیل مونوسدیم گلوتامات صمغ عربی استئاریک اسید پودر تالک پرلیت خاک رنگبر روغن آرگان روغن جوجوبا تیو سولفات سدیم کراتین کتراک اسید تانیک پکتین کاراگینان پودر کاکائو بوراکس آلانتوئین صمغ عربی برای اپیلاسیون آمونیاک خانگی پروتئین وی پگاه کربومر ساختار فروکتوز

کتراک

صمغ عربی

مونو سدیم گلوتامات

اسید استیک

کربومر

کافور

خاک دیاتومه

کربن فعال

سیلیکون دی اکساید

آویسل

آنتی اکسیدان TBHQ

گلوتن ذرت

لانولین

روغن کندش

کافور

گلوتن

روغن فندوق

لاکتات کلسیم

منیزیم استئارات

روغن آووکادو

روغن درخت چای

روغن براهمی

روغن نارگیل

کتراک

سوربات پتاسیم

روغن بادام

شی باتر

ایزوتیازولین

روغن خراطین

روغن جوجوبا

مالتودکسترین

روغن آرگان

فوماریک اسید

خاک دیاتومه