Lesson 12

بسم الله الرحمن الرحيم
والصلاة والسلام على سيدنا محمد صل الله عليه وسلم

إن شاء الله النهاردة هنتكلم فى اكتر من موضوع فى الاندرويد نبدأ بسم الله


-         إزاى نعمل Run ل android application ؟؟ 



-         شايفين ال icon اللى عليها مربع احمر ديه  اسمها AVD يعنى android Virtual device manager ، هنضغط عليها هيظهر لينا الشاشة ديه


- هنضغط على New هيظهر لينا الشاشة ديه


- هنملى الخانات اللى فى المتسطيلات الحمراء بالقيم اللى محتاجينها ثم نضغط oK



-         ثم نضغط على ال AVD اللى عملناها وندوس على Start هيظهر لينا الشاشة ديه


-         ونضغط على Launch هيظهر لينا الشاشة ديه ويفتح برنامج كأنه الموبايل اللى هيشتغل ال Application  عليه


وهيظهر شاشة كأنها موبايل .

-         ازاى بقة نشّغل ال Application على ال AVD ؟؟
نقف على ال folder الخاص بال application بتاعنا اللى على الشمال ونضغط Right Click
هيظهر لينا الشكل ده



نضغط على Run As à Android Application هنلاقى البرنامج بتاعنا اشتغل على ال emulator..
-         وإن شاء الله فى الدرس القادم  هشرح ازاى نعمل Run  لل application على الموبايل نفسه .


وبكده نكون عرفنا ازاى نشوف ال Run بتاع ال application اللى بنشتغل فيه ، تعالوا دلوقتى ننتقل لشرح جزء آخر .

-         إزاى ممكن نقسم عرض الشاشة ؟  إلى نصفين زى بعض فى المساحه بالظبط زى كده ال task الخاصه بالدرس السابق كنا مفروض نقسم الشاشة إلى نصفين او مثلا إزاى نقسم الشاشة إلى ثلاثة اقسام او اكتر على حسب احتياجنا بس كل قسم يساوى القسم الآخر ؟؟؟

-         اولاً : يوجد attribute فى اى View اسمة weight ، ولما نستخدم ال attribute اللى اسمه weight في تقسيم عرض الشاشة يبقى لازم ال width="0dp" ، يعنى لازم نخلى العرض بصفر لان العرض هو كده كده هياخده من ال  weight .

-         ثانياً : لو عندنا اثنين View وكل واحد عملناله ال weight="1" يبقى مجموعهم 2 يبقى ده معناه ان عرض الشاشة هيتقسم لقسمين زى بعض ، ولو عندنا 3 View وكل واحد عملناله ال weight="1" يبقى مجموعهم 3 يبقى عرض الشاشة هيتقسم على 3 اجزاء .

-         ثالثاً : لازم ناخد بالنا من حاجه مهمه ان الشاشة بتتقسم على حسب مجموع ال weight ، يعنى لو عندنا 2 View وواحد فيهم واخد ال weight="1" والتانى ال weight="2" يبقى كده واحد فيهم هياخد ثلث الشاشة والتانى ثلثين الشاشة .

-         رابعاً : مش معنى ان الشاشة تتقسم يبقى كده الشاشة كلها هى اللى هتتقسّم لا ، المقصود هنا ان عرض الParent  بتاع الViews  اللى واخده weight هو ده اللى هيتقسّم ، يعنى لو ال parent هو ال Layout الكبير linearlayout مثلا اللى واخد الشاشة كلها يبقى فى الحالة ديه الشاشة كلها هتتقسّم ، لكن لو ال parent  هو layout واخد جزء من الشاشة يبقى الجزء ده هو اللى هيتقسّم ، وده كلة احنا المتحكمين فيه بنشوف احنا عايزين نقسّم ايه بالظبط ؟؟ وعلى اساس احتياجنا بنظبط الكود . 

-         مثال :
   إزاى نقسّم عرض الشاشة إلى ثلاثة اقسام كما فى الشكل التالى :


-         الحل :



-         ملحوظة : ممكن نقسّم طول الشاشة ايضاً ؟؟ انا مش هقول بتتعمل إزاى هسيبها تفكروا فيها بس هي برده هتتعمل بال Weight مع شوية تعديلات اخرى عشان يطلعلنا الشكل ده فى النهاية :



-         هناخد دلوقتى جزء مهم جداً ، هو ازاى نقدر نستخدم ال View من داخل ال java classes ؟؟   زي ما قولنا قبل كده احنا بنكتب id لل View اللى هنستخدمها فى ال java classes عشان نعرف ننادى عليها بأسمها وال id هو اللى بيعبر عن اسم ال view ، ازاى بنعمل الموضوع ده ؟؟

مثال :
-         عندنا Textview واحنا عايزين نضع قيمة لل Textview من ال java class عشان تظهر هذه القيمة لما نعمل Run لل application هنعمل ازاى الموضوع ده ؟؟

الحل :
-         ده شكل ال layout اللى هنشتغل عليه وهنضعة داخل ال res à layout folders .


-         هنفتح الsrc folder  ثم ال MainActivity.java او على حسب ال java class اللى احنا هنستخدمها وهنكتب الكلام ده :



1 -   رقم 1 هنا عرّفنا object from TextView Class ويُفضل ان احنا نعرّفها على مستوى ال Class مش داخل اى method عشان تبقى كل ال Class شايفاها لو عايزين نستخدمها فى اى مكان تانى فى ال Class نلاقى الموضوع سهل .

2 -   onCreate method : لوخدنا بالنا مكتوب قبلها override فاكرين ال inheritance اللى خدناه فى ال java ، هنا طبقنا ال inheritance ، طب ازاى ؟؟ هنلاقى فوق جنب اسم ال class مكتوبextends Activity  يبقى ال class ديه هتورث من class تانية اسمها Activiy و ال onCreate ديه method داخل ال Activity واحنا هنا بنستخدمها وبنضع فيها الكود اللى احنا عايزينه ، onCreate بنكتب فيها اى حاجه عايزينها تتنفذ بمجرد ما تتفتح الصفحة ديه .

3 -   ملحوظه :ال Activity تُمثل اى صفحة بنشوفها فى ال application بتاعنا ، يعنى اى صفحة عايزينها فى ال application هنعمل ليها java class ولازم تكون extends Activity وهنعمل ليها كما layout واخر حاجه نضعها فى ال manifest file نقول للبرنامج ان ديه احنا عايزينها Activity واخر خطوة ديه هناخدها لاحقاً .

4 -   رقم 2 setContentView() وديه عبارة عن method لازم نكتبها فى ال onCreate ووظيفتها اننا بنربط ال Activity ديه ب layout معين يعنى بنكتب داخل القوسين دول اسم ال layout اللى احنا عاملينه فى ال layout folder ، معنى الكلام ده ان R.layout.activity_main بيجيب ال layout
    نشرحها بالتفصيل ؟؟ R ده ال java file اللى موجود فى ال gen folder وبيحتوى على كل ال id الخاصة بأى حاجه موجوده فى ال application ،ثانى حاجه ال layout بنكتبها فى حالة ان احنا عايزين layout وال activity_main ده اسم ال layout اللى موجود فى ال layout folder اللى فى ال res folder ، ده شرح السطر بالتفصيل .

5-   رقم 3 وهنا ال object اللى خدناه من ال TextView بنقولّه هو بيمثل ايه فى الlayout  ، وهنشرح السطر الثالث بالتفصيل لأنه مهم جدا ؟؟

test=(TextView) findViewById(R.id.tv_test)

-         (TextView) وهنا احنا كتبنا بين القوسين TextView لأننا هنا بنعمل Down cast اللى خدناه فى ال java  ، لأن ال findViewById() method بترجع View وعشان نحول من View الى TextView ده يُعتبر down cast
-         findViewById ديه method بترجعلنا اى View احنا عايزينه ، بس بتاخد مننا اسم ال View .
-         R.id.tv_test ال R زى ما قولنا فيها كل ال id بتاعت اى حاجه فى ال application  وال id بنستخدمها فى حالة اننا عايزين نجيب ال id الخاص ب View ، وال tv_test ده اسم ال View نفسه .
-         يبقى السطر اللى فات بنستخدمه فى حالة اننا بنعرّف اى View لكن بنغير نوع ال View على حسب هو Button or EditText او اى حاجه تانيه وبنغير ال down cast على حسب نوع ال View يعنى لو EditText او اى نوع تانى بنكتب نفس النوع داخل القوسين .

6 -   رقم 4 فى السطر ده بنضع قيمه داخل ال TextView عن طريق setText method وبنكتب جواها ال Text اللى احنا عايزينه .
    وديه بتكون نتيجة ال Run  :



وبكدة نكون خلصنا درس النهارده يارب تكونوا استفدتوا منه

-         وده لينك حل task الدرس السابق :
http://www.mediafire.com/download/xi74qd0bh5jxd0d/Task+Lesson+11.docx


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


No comments:

Post a Comment