/5/ii سلسلة تعلم الأندرويد – تغيير اتجاه الشاشة

5/ii سلسلة تعلم الأندرويد – تغيير اتجاه الشاشة

في الموضوع السابق تحدثنا عن كيفية تغيير اتجاه الشاشة ، نكمل الحديث عنه .

ثانيا : حفظ حالة الشاشة عند حدوث تغيير في اتجاهها :

بعد أن تعرفنا على التقنيات التي يمكن استخدامها للتكيف مع تغيير اتجاه الشاشة ، دعونا نكتشف ماذا يحدث لحالة الأكتفيتي عند تغير اتجاه الشاشة.

كما قلنا عند تغيير اتجاه الشاشة يتم تدمير الأكتفيتي وإعادة بناءه من جديد وهذا يسبب فقض للبيانات التي قام المستخدم بتعديلها وهناك عدة طرق لتجنب ذلك ابسطها هو إعطاء كل الـ Views اسم من خلال سمة android:id ، مثال علي ذلك لو كان المستخدم يقوم بإدخال بعض الكلمات إلي EditText وقام بتغيير إتجاه الشاشة حتي تصبح لوحة المفاتيح بشكل عرضي مثلا … فماذا سيحدث ؟! تابع هذا الكود الذي يوضح سلوك الأكتفيتي عند حدوث تغير في اتجاه الشاشة…

قم بعمل مشروع جديد وليكن اسمه Orientation ثم قم بتعديل ملف الـ main.xml ليصبح بهذا الشكل

والآن قم بتجربة تشغيل التطبيق واكتب أي شيء في الـ EditText الأول والثاني ليظهر لك كما في هذه الصوره مثلا

والآن قم بتغيير اتجاه عرض الشاشة عن طريق الضغط علي Ctrl+F11 ليظهر لك كما في هذه الصوره

ماذا تلاحظ؟!

الفيو  View الأول الذي أعطينا له id احتفظ بالبيانات حتي بعد تغيير اتجاه الشاشة ، أما الـ EditText الثاني الذي ليس له أي اسم لم يحتفظ بالبيانات التي قمنا بإدخالها.

ثالثا : التحقق من اتجاه الشاشة :

بعض الأوقات قد ترغب في معرفة اتجاه شاشة العرض أثناء عمل التطبيق علي الهاتف في هذه اللحظة ، فمثلا تريد أن تقوم بعرض شيء معين في حالة كانت الشاشة بوضع عرضي مثلا … ولتحديد اتجاه الشاشة أثناء تشغيل التطبيق سنقوم باستخدام كلاس اسمه WindowManager ، وإليك هذا الكود لتوضيح كيفية القيام بذلك

فهم الكود:

السطر 15 ، 16

قمنا بإستخدام ميثود getDefaultDisplay() التي تعيد كائن من نوع Display يمثل شاشة الجهاز ، ويمكننا من خلاله الحصول علي عرض وطول الشاشة كما سنفعل بعد ذلك.

السطر 18 وما يليه:

قمنا بإستخدام جملة if وبداخلها مقارنة بين طول وعرض الشاشة ، فإذا كان الطول أكبر من العرض تكون الشاشة بوضع طولي – Portrait فنقوم بعمل او عرض ما نريد ، وفي حالة عكس ذلك أي أن العرض أكبر من الطول تكون الشاشة بوضع عرضي – Landscape فنقوم بكتابة الاسطر التي نريد تنفيذها في هذه الحالة في جملة else.

رابعا : التحكم في اتجاه الشاشة :

أحيانا قد ترغب أن يعمل تطبيقك علي اتجاه شاشة معين ، مثلا قد يكون تطبيقك عباره عن لعبة صممتها ليتم عرضها بشكل عرضي فقط .. لذلك يجب عند بدأ اللعبة تقوم بتغيير اتجاه عرض الشاشة ليتناسب مع تصميم اللعبة ، ويمكنك القيام بذلك عن طريق الكود باستخدام ميثودsetRequestOrientation()

عند استخدام السطر 15 في هذا الكود يقوم التطبيق عند بدأ تشغيله بتغير اتجاه الشاشة لتصبح في وضع landscape ولتغير الشاشة لتصبح في وضع portrait نقوم باستخدام هذا السطر

كل ما عليك الآن أن تجرب لتري بعينك ، وبهكذا نكون انتهينا من درس اليوم أرجو من الله أن أكون وفقت لتوصيل المعلومة ، ولو كان هناك أي نقطه مبهمة أتمني وضعها في التعليقات لأقوم بتوضيحها إن شاء الله.

المسؤول الأول عن قسم استكشف اندرويد في موقع أندرويدهـاز و صاحب سلسلة تعلم أندرويد وطالب في كلية الهندسة جامعة الأزهر بالقاهره، مهتم بالتكنولوجيا وأعشق تجربة كل جديد من منتجاتها.. http://androidhas.com/