الثلاثاء، 27 فبراير 2018

كورس التحكم في النسخ عن طريق Git and GitHub

Filled under:

إدارة الإصدارات (Version Control)

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

بواسطة أحمد محمدى10:52 م

الخميس، 21 سبتمبر 2017

ورشة العمل الثالثة Workshop 3 Android constraint layout & resources الواجهات المرتبطة و ملفات المصادر

14-  تصميم الواجهات بإستخدام Constraint layout 1
في هذا الدرس سنقوم بشرح طريقة تصميم الواجهات عن طريق constrain layout

 

15-  تصميم الواجهات بإستخدام Constraint layout 2 landscape
سنحل في هذا الدرس مشكله ال Constrain layout عند وضع الجهاز في وضعيه ال Landscape

بواسطة أحمد محمدى7:08 ص

ورشة العمل الثانية من كورس برمجة الأندرويد workshop 2 Android 102 Dialogs

10- كورس إحتراف برمجه تطبيقات الأندرويد الدرس العاشر إدخال الداتا عبر Dialog box  الطريقة الاولي

لنفرض  أنك تريد سؤال مستخدم تطبيقك عن شيء و تريد منه إجابه سريعه لكي تستخدمها في داخل معدلات تطبيقك
سنتعلم  في هذا الدرس إنشاء
Dialog Box  و من ثم سنقوم بإدخال بيانات فيه و سنقوم بعد ذالك بإستخدمها داخل تطبيقنا






11- كورس إحتراف برمجه تطبيقات الأندرويد الدرس 11 إدخال الداتا عبر Dialog box  الطريقة الثانية

لنفرض  أنك تريد سؤال مستخدم تطبيقك عن شيء و تريد منه إجابه سريعه لكي تستخدمها في داخل معدلات تطبيقك
سنتعلم  في هذا الدرس إنشاء
Dialog Box  و من ثم سنقوم بإدخال بيانات فيه و سنقوم بعد ذالك بإستخدمها داخل تطبيقنا


بواسطة أحمد محمدى1:50 ص

الثلاثاء، 5 سبتمبر 2017

8- كورس إحتراف برمجه تطبيقات الأندرويد الدرس الثامن إدخال الداتا بإستخدام edit view

في هذا الدرس سنتعلم طريقة سهله لكي نقوم بإدخال الداتا بإستخدام edit view



بواسطة أحمد محمدى6:21 ص

7- كورس إحتراف برمجه تطبيقات الأندرويد الدرس السابع نقل بيانات Data Transfer

سنقوم في هذا الدرس بنقل معلومه معينه بين شاشتين من شاشات التطبيق

بواسطة أحمد محمدى6:17 ص

6- كورس إحتراف برمجه تطبيقات الأندرويد الدرس السادس الإنتقال بين الشاشات عبر Intent

في هذا الدرس سنتطرق إلي طريقة التنقل بين شاشات التطبيق بإستخدام الIntent
يمكنك الأن صنع تطبيق أندرويد متعدد الواجهات
لا تقلق كل شيء في بدايته صعب لا تستعجل النتائج أستمر في التعلم و ستصل للمستوي المطلوب بإذن الله تعالي




بواسطة أحمد محمدى6:14 ص

5- كورس إحتراف برمجه تطبيقات الأندرويد الدرس الخامس إنشاء أول تطبيق Hello world

اليوم في هذا الدرس سنبدأ أول ورشة عمل و سنقوم بإنشاء أول تطبيق لنا في عالم أندرويد و هو عباره عن تطبيق بسيط ... زرار تضغط عليه يخرج لك رسالة Hello world
ستشعر حينما تنجز تطبيقك الأول بنوع من السعاده نصيحه استثمرها في التعلم لأنه كلما تعلمت كلما زادت حصيله ما يمكن إنجازه من تطبيقات من الممكن أن تجعل منك في يوم شخص غني ... بس ابقي أفتكرنا :)






بواسطة أحمد محمدى6:11 ص

4- كورس إحتراف برمجه تطبيقات الأندرويد الدرس الثالث توصيل الجهاز Connect android device


في هذا الدرس سنستعرض بالتفصيل طريقة توصيل جهاز أندرويد بالكمبيوتر حتي نقوم بتجربه التطبيقات عليه في المستقبل
إذا كان جهازك لا يتمتع بمواصفات عاليه لتشغيل الAVD فلا تقلق الأن يمكنك تجربة تطبيقاتك عن طريق توصيل جهازك الأندرويد بالكمبيوتر و أتبع الخطوات في الدرس و سوف تقوم بعمل محاكي لا يستهلك قدر كبير من إمكانيات جهازك.
أبدأ برمج أندرويد :)






بواسطة أحمد محمدى6:07 ص

3- كورس إحتراف برمجه تطبيقات الأندرويد الدرس الثالث إنشاء المحاكي AVD Android Virtual Device

السلام عليكم ورحمة الله و بركاته
اليوم هو موعد الدرس الثالث من سلسة كورس تعلم برمجة الأندرويد .. أنشأت شركة جوجل في داخل برنامج الandroid studio . برنامج محاكي لجهاز يعمل على نظام التشغيل الأندرويد و هو المحاكي "AVD"... حتي يسهل عليك إختبار أكوادك بشكل سريع و بدون أن تمتلك جهاز حقيقي يعمل على الأندرويد ….. و يتيح لك هذا ال AVD تكوين جهازك المحاكي كما تشاء و بالمواصفات التي تريدها سواء كان جهاز كفي أو حتي جهاز لوحي مع إمكانية وضع مقاس الشاشة التي تريدها بشكل مخصص ، تعالوا معنا ننشئ هذا المحاكي حتي نبدأ سويا في عالم صنع تطبيقات الأندرويد.



بواسطة أحمد محمدى5:43 ص

2- كورس إحتراف برمجه تطبيقات الأندرويد الدرس الثاني تعريف ببرنامج أندرويد أستوديو Android Studio

اليوم سنبدأ في الدرس الثاني من كورس برمجة الأندرويد و خلال هذا الدرس سنشرح لكم بالتفصيل كيفية تنصيب و تهيئة بيئة العمل الخاصة بصناعة برامج الاندرويد..
كما سنقوم بشرح لبرنامج Android Studio لكي نتمكن من التعرف عن قرب إلي بيئه العمل التي سوف نستخدمها خلال الكورس
من النصائح التي يجب أن تتبعها عند مشاهدة الكورس هي
1- التركيز الشديد في المحتوي و لو فاتك شيء عليك بإعادة اللقطة من جديد.
2- أستخدم نظام Todo List و هوه عباره عن نوته تعرف بها ما تم إنجازه و ما عليك البدء فيه
3- إن أخطلت عليك الأمر لا تتردد في التواصل معي عبر صفحة الكورس أو عبر صفحه اليوتيوب فهم أسرع طريقة.




بواسطة أحمد محمدى5:40 ص

1- كورس إحتراف برمجه تطبيقات الأندرويد الدرس الأول تعريف بالمنهج


سنبدأ إن شاء الله كورس تعلم برمجة الأندرويد ، و الأندرويد هو ببساطة نظام تشغيل Operating System ، من إنتاج شركة جوجل و يعتبر من  أهم أنظمة تشغيل الأجهزة المحمولة الذي بدأ في الشهرة بشكل مثير للإعجاب.
و تقدم جوجل لمن يرغب في تطوير الأندرويد بيئة تطوير قوية وغير محدودة  و هي أندرويد studio، وإن كنت من هواة البرمجة ، أو تريد الإحتراف في عالم تطوير تطبيقات الهواتف النقالة ،أو حتى لو كان هذا على سبيل التجربة و المرح، فهذا الكورس أو الدروة  سوف تساعدك خطوة بخطوة كي تنطلق بسهولة و بمنتهي البساطة في عالم تطوير تطبيقات الأندرويد.


بواسطة أحمد محمدى5:32 ص

السبت، 30 أبريل 2016

10 - كورس تعلم البرمجه بإستخدام C++ دالة بدون نوع Void Function

توجد functions لا تحتاج لأعاده اي قيمه , هذا مثال بسيط عنها :


بواسطة أحمد محمدى10:18 م

9 - كورس تعلم البرمجة بإستخدام C++ الدوال و أنوعها Functions

ال functions او كما تسمى بالعربي (دوال) , فائدتها الاساسيه هي توفير الجهد وتقسيم البرنامج بحيث يسهل على المبرمج تطويره.


بواسطة أحمد محمدى10:10 م

الخميس، 4 يونيو 2015

6 - كورس تعلم البرمجة بلغة C++ المتغيرات Data Types

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

 أتمني لكم مشاهدة ممتعة 




للمشاهدة من هنا 


بواسطة أحمد محمدى12:21 ص

الثلاثاء، 12 مايو 2015

سلسلة تعلم جافا . الدرس الأول

مقدمة عن لغة الجافا


كثيراً ما نسمع في هذه الأيام عن لغة الجافا حتى يبدو وكأنها قي كل مكان حتى في المكتبات لو تمعنت النظر لوجدت كتب المكتبة مليئة بكتب الجافا حتى الصحف الضخمة و المجلات تجد فيها العديد من المقالات التي تتحدث عن الجافا .
كل هذا يجعلك تتساءل عن سبب انتشار هذه اللغة والجواب ببساطة أنها تتيح للمستخدمين إمكانية تطوير تطبيقات تعمل على الويب من اجل المخدمات والأجهزة الصغيرة آالهاتف النقال و الأن التحفة أندرويد وغيرة . وألان لنبحر سوياَ في تاريخ الجافا .
ففي أوائل التسعينيات من القرن العشرين ١٩٩١ اخترعت لغة الجافا شرآة صن ميكروسيستمز ولهذا الاختراع قصة عجيبة حيث أن الشرآة كانت قبل ذلك قد آلفت المهندس جيمس جوزلينج بوضع برامج لتشغيل الأجهزة التطبيقية الذآية مثل التليفزيون التفاعلي باستخدام لغة سي++ وحينها وجد جيمس جوزلينج صعوبة في التعامل مع هذه اللغة فقام هو وفريق العمل المساعد له بتطوير هذه اللغة فولدت لغة جديدة تتوافق مع احتياجاته فكانت لغة الجافا وقد خططت شركة صن في تلك الأيام لاستغلال هذه اللغة الوليدة في التليفزيون التفاعلي لكي تربح المليارات وحدث نوع من البطء في مشروع التلفزيون التفاعلي ربما عن قصد من الشرآات الأخرى المنافسة  ونتيجة لذلك فكرت شرآة صن في توقيف مشروع تطوير هذه اللغة الوليدة وتسريح العاملين في هذا المشروع أو نقلهم إلى قسم آخر ولكن حدث ما لم يكن في الحسبان حيث أنه في هذه الفترة آانت الانترنت قد بدأت في الانتشار بسرعة مذهلة مع نزول نظام الويندوز للأسواق وحيث أن لغة الجافا الوليدة التي اخترعت أصلا لبرمجة الأجهزة التطبيقية فيها من السمات ما يجعلها أكثر توافقا مع الشبكة العنكبوتية الدولية  الإنترنت  فقد كان لها السبق وأضافت الكثير إلى الإنترنت الذي آان قبلها مقصورا على تبادل النصوص ولكن المطورين بشرآة صن ابتكروا طريقة تجعل برامج الجافا تعمل بسهولة في صفحات الإنترنت وغيروا الاسم الذي آان قد أطلقه عليه مبتكرها من آواك  شجرة السنديان  إلى الجافا ومن هنا أصبحت الجافا مرتبطة في شهرتها بالإنترنت حيث أن برنامج جافا صغير يوضع في صفحة من صفحات موقع على الشبكة الدولية يراه الملايين في جميع أنحاء العالم في نفس الوقت وقد آان هذا لا يتوفر إلا مع الجافا مما أعطاها شهرة واسعة أكبر من شهرة نجوم هوليود ولحسن حظ شرآة صن أن لغة الجافا أثبتت نفسها في المجال الذي طورت له أصلا فقد بدأ الآن التليفزيون التفاعلي في الانتشار وما يسمى سينما المنزل والمشاهدة
حسب الطلب وليس هذا فقط بل أنتشر ما هو أآثر فائدة لشرآة صن وهو الهاتف المحمول وللجافا أكبر دور في برمجة البرامج التي يعمل بها في أجياله السابقة واللاحقة ولا نستغرب أن يحدث نوع من الغيرة بين شركة ميكروسوفت وشركة صن ميكروسيستمز مما دفع ميكروسوفت إلى أن تحذف ماكينة الجافا الافتراضية من الإصدارة الأولى للويندوز اكس بي وهذه الماكينة الافتراضية مسئولة عن عرض برامج الجافا على الانترنت ولكن ميكروسوفت تراجعت أمام طلب ملايين المستخدمين حول العالم فوضعتها مرة ثانية في الإصدارات اللاحقة وقد كانت قضية مشهورة تناولتها الصحف والمجلات . وقد ساهم في شهرة الجافا أيضا برامجها العلمية التفاعلية التي تصلح لمعظم المناهج التعليمية في جميع مراحل التعليم وبالتالي فان لها دورا كبيرا في التعليم الالكتروني والتعليم عن بعد والفصول الافتراضية .



بواسطة أحمد محمدى3:24 ص

السبت، 15 نوفمبر 2014

كورس البرمجة بلغة C++


السلام عليكم و رحمة الله و بركاتة 

سنقدم إنشاء الله عبر مدونة مدرسة المبرمجين كورس تعليمي كامل لتعليم البرمجة و ستكون اللغة التي سوف نستخدمها هي لغة C++ ، و تعتبر لغة السي بلس بلس من أهم لغات البرمجة هي لغة برمجة كائنية، متعددة أنماط البرمجة . وتضم العديد من ميزات لغات البرمجة عالية المستوى ومنخفضة المستوى. بدأ تطوير هذه اللغة كامتداد للغة C تحت اسم (C مع الصفوف) من قبل بيارن ستروستروب في مختبرات بل عام 1979 وتم إضافة العديد من الميزات الأخرى لاحقاً وتغير الاسم عام 1983 ليصبح ++C [2] من باب الدعابة عبر استخدام معامل الزيادة لجانب اسم لغة C تأكيداً على أنها "التالي للغة C".




بواسطة أحمد محمدى2:38 ص

الأحد، 28 سبتمبر 2014

الدرس التاسع : إضافة أحداث للأزرار

السلام عليكم ورحمة الله وبركاته
اليوم موعدنا مع درس إضافة أحداث للأزرار
بناء على ما تعلمناه في الدروس السابقة لننشيء مشروع جديد بالمواصفات القادمة

Project name: P0091_OnClickButtons
Build Target: Android 4.0.2
Application name: OnClickButtons
Package name: com.MASAFA.onclickbuttons
Create Activity: MainActivity


بواسطة أحمد محمدى12:36 ص

السبت، 8 مارس 2014

التعامل مع عناصر الواجهة بواسطة الكود

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

إنشىء مشروع جديد



Project name: P0081_ViewById
Build Target: Android 4.0.3
Application name: ViewById
Package name: com.masafa.develop.viewbyid
Create Activity: MainActivity

لكي يتم الإشارة ألي أحد عناصر الواجهة من داخل الأكواد ، لابد أن تراعي إستخدام خاصية الID و التي طبعا بإمكانك تحديدها من مربع الخواص properties ، بإمكانك أن تضع قيمة الخاصية ID كما تشاء ولكن عليك مراعاة الشكل الصحيح لإدخال تلك الخاصية و هوه  "@+ID/Name" و حتي يتثني للبرنامج إضافة العنصر إلي الملف R.java .

بواسطة أحمد محمدى3:05 ص

السبت، 1 فبراير 2014

عرض و تخطيط عناصر الواجهات

بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله وبركاته 

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

الشاشات

و هنا أقصد بالشاشات هي الشاشات التي تكون في أجهزة الاندرويد مثل شاشات الأجهزة اللوحية و أجهزة الهواتف الذكية ، نجد أن كل الشاشات تحمل خواص فيزيائية  مثل الحجم و الدقة resolution و الدقة هنا تقاس بعدد النقاط المضيئة علي شاشة الجهاز مثلا كام نقطة مضيئة في الطول و كم نقطه في العرض. و وحدة القياس هي البيكسيل pixel .

معظم شاشات الأندرويد تحمل هذه المواصفات  resolution دقة = 800*480 و حجم الشاشة يكون في الغالب 3.7 إنشات مثل المخطط في الشكل القادم.




بواسطة أحمد محمدى10:45 م

الأحد، 5 يناير 2014

الدرس السادس : أنواع تخطيط الواجهات

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

أنواع الواجهات

سوف أستعرض لك الأن انواع الواجهات التي سوف نقوم بشرحها في هذا الدرس و لكن الأن سأعطيك فقط نبذه عن كل واجهه علي أن أقوم بشرحها بطريقة مفصلة في باقي الدرس إن شاء الله.
1- LinearLayout الواجهة الخطيةو هي عبارة عن تخطيط شكل عناصر الواجهة في شكل عمود واحد (إذا كان الوضع عموديا Vertical) أو في شكل صف واحد (إذا كان الوضع أفقيا  Horizontal ) و هي الطريقة التي قمنا بإستخدامها من قبل من خلال الدرس السابق.

2- TableLayout واجهة الجدولوهي الواجهة التي تعرض العناصر في شكل جدول مكون من صفوف و أعمدة

3-  RelativeLayout الواجهة النسبية و هي التي بإمكانها وضع بعض عناصر الواجهة في حجم يتوقف بشكل نسبي مع أحجام العناصر الأخري

4- AbsoluteLayout الواجهة المتاحة و التي تمكنك من وضع عناصر الواجهة بدون قيود و بشكل مطلق على الواجهة فقط بنظام الإحداثيات (x,y) أعتقد أن مبرمجين ال.Net سيعجبهم هذا الأسلوب .

و الأن لنستعرض لكم كل أسلوب منهم على حده

1- LinearLayout الواجهة الخطية

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



و الأن لنقوم بعمل مثال لتطبيق الطريقة.
إما أن تنشئ مشروع جديد أو تقوم فتح الملف القديم المهم أن تذهب إلي الملف activity_main.xml  و تقوم بعمل إستعراض لمكونات الXML كما في الصورة

و الأن إستبدل الكود الموجود بداخل الملف بهذا الكود
<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"></LinearLayout>

الأن أنت لديك واجهة خطية و إتجاه العناصر الاخري عليها إتجاه عمودي
الأن أسحب ثلاثة أزرار Buttons من اللوحة التي على اليسار Palette كما هو مبين في الصورة


في خانة الخواص إذهب إلي الخاصية Orientation وقم بتغيرها من راسي Vertical إلي أفقي Horizontal ستجد التغير يحدث على الواجهة كما هو مبين في الصورة.




من المربع Palette إذهب إلي التبويب Layouts و إختارLinearLayout ثم قوم بسحبه و وضعة على الLayout الاساسي و قم بسحب كل الButtons و ضعها بداخل الlayout الجديد الأن ستري الموضوع في شكل شجري كما هو مبين في الصورة قم بنسخ الlayout الجديد و قم بلصق المنسوخ على نفسي الlayout الأساسي. الخلاصة يستطيع الlayout ان يتضمن واجهات أخري بشكل متعدد و ستظهر لك في مربع الOutline بهذا الشكل الشجري كما هو مبين في الصورة و تسمي هذه الخاصية Nested أي التداخل.



2- TableLayout واجهة الجدول

يساعد هذا الViewGroup أو layout على وضع العناصر الخاصة بك في وضع الجدول حيث التنظيم عبارة عن أعمدة و صفوف رأسيه و لتجربة هذا النوع من الواجهات أذهب إلي إنشاء XML جديد و ليكن إسمة tlayout.xml كما هو مبين في الصورة 



الأن اضف ثلاثة صفوف tableRow في داخل الtable layout عن طريق أن تقف على الواجهة الأساسية و تضغط بالماوس بالزر الأيمن فستظهر لك قائمة إختار منها add Row كما هو مبين في الشكل القادم .





الأن أذهب إلي المربع Palette و إختار Button و أسحب إثنين منها و في كل صف من الصفوف كما هو مبين في الشكل القادم




ضع إثنين Buttons إضافيين في الصف الأول ، الأن أنت لديك جدول مكون من 3 صفوف و 4 أعمدة كما هو مبين بالشكل على الرغم من كون الصف الثاني و الصف الثالث بهم خانات فارغة ولكن تحديد عدد الأعمدة دائما يعود إلي الصف ذو العناصر الأكثر.
أذهب إلي الصف الثاني و ضع textView عن طريق سحبها من الPalette و ضع ايضا Button الأن كرر العملية مع الصف الثالث ،نري الأن ان تلك العناصر قد شغلت بشكل تلقائي الأماكن الفارغة الموجودة في العمود الثالث و الرابع و الأن قم بتفريخ الخاصية Text في كل العناصر  ال TextView  في الواجهة الخاصة بك ستجد أنه و بسبب التفريغ أنه توجد خانه فارغة في كل من الصف الثالث و الثاني.



المتحكم الأساسي في عرض كل عمود هو عرض العنصر المحتوي علية فمثلا لو ذهبنا إلي أحد عناصر ال textView في الصف الثاني أو الثالث و أدخلنا في الخاصية text نصا كبيرا مثلا this is the biggest text in the world ستجد أن حجم عرض العمود قد ذات تلقائيا لكي يحاكي حجم النص كما أن حجم العناصر الأخري المشتركة في نفس العمود أيضا قد ذاد حجمها كما هو مبين في الصورة القادمة.


3-  RelativeLayout الواجهة النسبية

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

1) إلى اليسار واليمين، أعلى أو أسفل العنصر المحدد
(layout_toLeftOf، layout_toRightOf، layout_above، layout_below)
2) الانحياز من قبل اليسار واليمين، أعلى أو الحافة السفلية للعنصر المحدد (layout_alignLeft، layout_alignRight، layout_alignTop، layout_alignBottom)
3) محاذاة من اليسار واليمين، أعلى أو أسفل حافة أحد الوالدين (layout_alignParentLeft، layout_alignParentRight، layout_alignParentTop، layout_alignParentBottom)
4) تركز عموديا، أفقيا محورها، وتركزت رأسيا وأفقيا نسبة إلى الأم (layout_centerVertical، layout_centerHorizontal، layout_centerInParent)

و لفهم الموضوع بشكل أكبر تابعوا معي المثال التالي :
قم بإنشاء ملف android XML جديد و ليكن اسمة rllayout.xml و إختار في خانة Root Element الإختيار Relative layout ثم إضغط على إنهاء Finish .

أذهب إلي علامة التبويب XML و قوم بإستبدال الكود الموجود في الملف بهذا الكود 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Type here:">
</TextView>
<EditText
android:id="@+id/entry"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/label"
android:background="@android:drawable/editbox_background">
</EditText>
<Button
android:id="@+id/ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/entry"
android:layout_marginLeft="10dip"
android:text="OK">
</Button>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/ok"
android:layout_toLeftOf="@+id/ok"
android:text="Cancel">
</Button>
</RelativeLayout>


الأن عندما تعود إلي خانة التبويب Graphical layout  ستجد أن شكل الواجهة الخاصة بك أصبح كالتالي


و الأن عد من جديد إلي XML وأقرأ الوسوم بنفسك ستجد أسماء الخواص و بعدها علامة = ثم قيمت كل خاصية من تلك الخواص مثلا ستجد.

android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:id="@+id/entry"

كما هو واضح في كل خاصية تجد كلمة android سابقه ليها ثم العلامة : ثم أسم الخاصية فمثلا الخاصية layout_width هي خاصية عرض الواجهة و القيمة match_parent أي أن حجم عرض الواجهة يساوي حجم عرض الأداة التي تحوي الواجهة و في هذه الحالة الأداة الحاوية هي الصفحة الرئيسية لملف الXML  ، أما القيمة الأخري مثل warp_content فهي تعني أن خاصية الإرتفاع تتوقف على إرتفاع العناصر التي سوف تحتوي عليها الواجهة،  أما الخاصية id  فهي بمثابة التعريف الذي من خلاله يتم التعرف علي أي عنصر و يفترض أن يكون فريدا فلا يجب تكراره داخل صفحة الXML .

و الأن لنلقي نظرة قريبة اكثر عل مكونات الخصائص لبقية العناصر المستخدمة في المشروع.


TextView
android:id="@+id/label" - ID
android:layout_width="match_parent" - معنها أن خاصية العرض لابد أن تحتل كل مساحة العنصر المضيف لها
android:layout_height="wrap_content" - الإرتفاع متوقف على إرتفاع العناصر المحتوية عليها
EditText
android:id="@+id/entry" - ID
android:layout_width="match_parent" - معنها أن خاصية العرض لابد أن تحتل كل مساحة العنصر المضيف لها
android:layout_height="wrap_content" - الإرتفاع متوقف على إرتفاع العناصر المحتوية عليها
android:layout_below="@id/label" -
Button_OK
android:id="@+id/ok" – ID
android:layout_width="wrap_content" - العرض يحدد بواسطة المحتوي
android:layout_height="wrap_content" – الإرتفاع يحدد بواسطة المحتوي  
android:layout_below="@id/entry" -
android:layout_alignParentRight="true" - يتم محاذاة الحافة اليمني من قبل العنصر المحتوي على هذا العنصر
android:layout_marginLeft="10dip" – علي العنصر أن يترك هامش على اليسار بمقدار القيمة المدخلة
Button_Cancel
android:layout_width="wrap_content" -  العرض يحدد بواسطة المحتوي
android:layout_height="wrap_content" –الإرتفاع يحدد بواسطة المحتوي  
android:layout_toLeftOf="@id/ok" - دئما تقع على يسار العنصر المشار إليه
android:layout_alignTop="@id/ok" - دئما يكون على محذاه من الحافة العلوية للعنصر المشار إليه


الأن يمكنك تجربة بعض العناصر الأخري و تجربة الخصائص الخاصة بها  ولو صادفك أي مشكله لا تتردد في طرحها حتي يستفاد منها الجميع.

4- AbsoluteLayout الواجهة المتاحة

بعض المبرمجين يفضلون هذا الوضع حيث يتيح لك أن تضع العناصر المناسبة لك بشكل مطلق على الواجهة فقط عليك تحديد الإحداثيات المناسبة لكل عنصر. و لكي نتعرف على كيفية فعل ذالك فقط تابعوا معي المثال التالي.
أنشئ ملف android XML جديد و ليكن إسمه alayout.xml و إختار من قائمة الroot element  إختيار AbsoluteLayout كما هو مبين في الشكل القادم .




و الأن قم بسحب بعض العناصر من الpalette وضعها على سطح الواجهة ستجدها تضاف في المكان الذي تضعها فية بالظبت و هذا لأن الAbsoluteLayout  يحدد الإحداثيات الخاصة بكل عنصر بعد تركه بشكل مباشر على الواجهة . كما هو مبين.



و الأن عد إلي التبويب XML  ستجد أن هناك خاصيتين تم إضافتهما إلي كل عنصر و هما layout_x و layout_y و هما المختصتين بتحديد الإحداثيات على الواجهة.




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

بواسطة أحمد محمدى12:41 ص