تعلم معنا برمجة الأندرويد: 7- تغيير إتجاه الشاشة

غير مصنف أضف تعليق

screen_orientation

الدرس السابع : تغيير إتجاه الشاشة

أهلا وسهلا بكم في الدرس الرابع من سلسلة تعلم معنا برمجة الأندرويد .. أسأل الله أن ينفعنا وإياكم بما علمنا.

من أحد خصائص الأندرويد كما في كل الأجهزة الذكية هو إمكانية تبديل اتجاه شاشة العرض ، وللشاشة اتجاهين احداهما يطلق عليه portrait أي شاشة طولية وهو وضع الجهاز العادي ، والآخر يطلق عليه landscape أي شاشة عرضية وهي تظهر عند إمالة الجهاز علي جانبه.

النقاط الرئيسية التي سنتحدث عنها في هذا الدرس :

1-    التعامل مع التغير في اتجاه الشاشة.

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

3-    التحقق من إتجاه الشاشة.

4-    التحكم في إتجاه الشاشة.

أولا : التعامل مع التغير في إتجاه الشاشة :

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

لذلك عند إعادة رسم الـ views في الإتجاه الجديد فسترسم في نفس أماكنها السابقة مما قد يؤثر علي شكل واجهة المستخدم كما يتضح في التطبيق الذي قمنا بعمله بالدرس السابق في الجزء الثاني الخاص بالترتيب الجدولي ، فكان هذا هو شكل واجهة المستخدم عند تشغيل التطبيق

وعند الضغط علي Ctrl+F11 لتغيير اتجاه شاشة الجهاز الوهمي تظهر واجهة المستخدم بهذا الشكل

وكما يتضح عند تغيير إتجاه الشاشة ظهر في الجزء الأيمن مساحة فارغة يمكن إستخدامها ، وأيضا إذا كان هناك فيو في أسفل الشاشة لن يظهر عند تغيير إتجاه العرض.

ويوجد طريقتين للتكيف والتعامل مع هذا التغيير :

  • الطريقة الأولي

وهي ما تسمي بـ Anchoring أي الرسو بمعني إرساء كل عنصر أو فيو مع الحواف الأربعة للشاشة وعند حدوث تغيير في إتجاه عرض الشاشة تظل الـ views ثابتة بالنسبة لحواف الجهاز.

مثال : يمكن تحقيق ذلك بإستخدام RelativeLayout كما في هذا المثال

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Top Left Button"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
/>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Top Right Button"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
/>
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bottom L Button"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
/>
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bottom R Button"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
/>
<Button
android:id="@+id/button5"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Middle Button"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
/>
</RelativeLayout>

وهذا سيكون شكل واجهة المستخدم في الاتجاه الطولي

وعند تغيير اتجاه العرض سيكون هذا شكل واجهة المستخدم في الاتجاه العرضي

  • الطريقة الثانية

وتسمي بـ Resizing and Repositioning أي إعادة تشكيل الحجم والمكان بمعني إعادة تحديد حجم كل فيو طبقا لإتجاه العرض الحالي ، في هذه الطريقة يتم عمل فولدر بداخل فولدر res هذا الفولدر الجديد يأخذ اسم layout-land اختصار landscape ويوضع به ملفات الـ xml الخاصه بهذا الوضع والتي تحتوي علي واجهة مستخدم قد تختلف بشكل كبير عن واجهة المستخدم في الوضع الطولي ، ويتم إستخدام هذه الطريقة بشكل أكبر لجعل التطبيق يدعم شاشات متعدده بأحجام مختلفة وقد نتكلم عنها بالتفصيل أكثر في درس قادم إن شاء الله تعالي لاحظ الشكل التخطيطي في الصوره التالية

سيتم تحديث الدرس في وقت لاحق إن شاء الله.

تم إغلاق التعليقات.

أندرويد للعرب © 2024 WP Theme & Icons by N.Design Studio | تعريب قياسي
التدويناتRSS | التعليقاتRSS | تسجيل الدخول