إصنع تطبيقك الخاص

هناك تعليقان (2) :
بسم الله ، نبدأ على بركة الله
مهم: الدورة منقولة من الاخ يزن من الاردن ، منتديات الكفي.

الدرس الاول: اعداد بيئه العمل



الاندرويد مبني على اللينوكس، وهو مكتوب بلغه الجافا، لهذا فإن برامجه مكتوبه بالجافا ايضا،
هناك طرق عديده للبرمجه للاندرويد ومنها يكون خليط من الجافا ولغات اخرى مثل ال C ، لكن هنا سأركز على الجافا فقط.

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

*** المتطلبات من ناحيه الشخص:
1- يفضل ان يكون الشخص مبرمج لاي لغه لكي يكون لديه التفكير البرمجي ويستوعب اكبر قدر ممكن من الدروس، لكن هذا لا يمكنع غير المبرمجين والراغبين بالتعلم وان شاء الله يد بيد حتى يتعلم كل من يرغب بالبرمجه.

2- المعرفه للغه الجافا مسبقا تساعد بشكل كبير على استيعاب الدروس والتقدم بالتعلم فهي تسهل المهمه بما لا يقل عن 40% - 50% .

3- المثابر، التصميم، العزم والاصرار... ومن جد وجد ومن سار على الدرب وصل.

*** المتطلبات من ناحيه البرامج:
1- ايكليبس eclipse editor وهو المحرر الذي سنستعمله، هو ليس محرر وحسب بل من خلاله تستطيع تصميم وبرمجه وتشغيل البرنامج ، بل ويمكنك من اصدرا النسخه الموقعه signed والتي تستطيع رفعها للماركيت او تضعها بأي مكان ليتم تنزيلها وتثبيتها على الموبايل، اذا هو بيئه العمل الرئيسيه لنا.

2- JDK وهي حزمه البرمجه للجافا وهي اختصار لـ: Java Development Kit

3- Android SDK: وهي حزمه التطوير للاندرويد، التي سنقوم باستعمالها لعمل برامجنا، وهي مبنيه على الجافا كذلك.

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


بدء العمل:

1- تحتاج لتنزيل الايكليبس:
http://www.eclipse.org/downloads/pac...pers/heliossr2
اختر ما يناسبك :
windows 32/64
MAC 32/64
Linux 32/64
سيكون الملف المحمل بصيغه مضغوطه rar او zip بعد التنزيل فك الضغط على ال C:\ مباشره وليس داخل مجلدات فرعيه، مثلا يكون:
C:\eclipse

2- نحتاج تنزيل ال JDK:
http://www.oracle.com/technetwork/ja...ads/index.html
[دورة تعليميه - الدرس 1] تعلم صنع تطبيقات الاندرويد بالتفصيل - اعداد بيئه العمل


تكون بصيغه exe قم بتشغيلها واتبع الخطوات.

3- نحتاج ال Android SDK:
http://developer.android.com/sdk/index.html
اختر ما يناسب نظام التشغبل لديك:
Windows , linux or mac

الملف يكون بصيغه zip ايضا، فك الضغط على ال C:\ مباشره، مثلا يكون:
c:\android-sdk-windows

*** ليس ضروريا الالتزام بالقسم C:\ الخيار عائد لك ، والاحجام لن تكون كبيره للبرامج المحمله

الان قمنا بتنزيل كل ما هو مطلوب لبدء الاعداد للعمل.

الان قم بتشغيل الايكليبس، من مجلد الايكليبس الذي نتج عن فك الضغط شغل الملف :
C:\eclipse\eclipse.exe

سنقوم الان بتثبيت اضافه Android Development Tools او اداه البرمجه للاندرويد يرمز لها ADT
وهي تأتي على شكل plug-in داخل الايكليبس وتسهل العمل بنسبه 95%، لتثبيتها اتبع الخطوات:

- اختر Help > Install New Software
- اضغط Add
- في خانه name ضع ADT Plugin
- في خانه URL ضع : https://dl-ssl.google.com/android/eclipse/
- اضغط OK
- سيظهر لك مربع فيه check box او مربع اختيار مكتوب بجانبه Developer Tools ضع علامه صح واضغط next

*** ملاحظه: اذا واجهت مشكله ولم يظهر المربع الذي تحدثت عنه بالنقطه السابقه،
قم بإزاله حرف ال s من الرابط ليصبح http بدل من https وحاول مره ثانيه.

اتبع التعليمات لتنزيل الاداه واجب بالايجاب دوما next next ok, …

عند اكمال التثبيت اضغط finish واعد تشغيل الايكليبس.

الان نأتي لضبط اعدادت الاضافه ADT:
- اذهب الى Window > Preferences اوEclipse > Preferences اذا كنت تستخدم الماك.
- اختر Android من اللوحه على اليسار
- قد يسألك اذا ما كنت تريد ارسال احصائيات لجوجل حول العمل الذي تقوم به، حدد خيارك اما نعم او لا واضغط proceed.
- اول مربع مكتوب بجانبه SDK Location، اضغط browse وختر المجلد الذي فككت به ضغطandroid sdk التي قمت بتنزيلها وفك ضغطها مثلا C:\android-sdk-windows

اضغط OK ثم Apply

مبروك انهينا تثبيت ال ADT.

*** نحتاج لتحديث وانزال باقي اجزاء ال android sdk حيث ان النسخه التي حملناها تسمى starter kit
او حزمه البدايه ويجب اكمال الاضافات عليها ليكون العمل صحيح:

- من الايكليبس اختر Window > Android SDK and AVD Manager
ستظهر شاشه بها مربع كبير فارغ على اليمين وعلى اليسار قائمه، اختر available packages سيظهر سطرين على اليمين وبجانبهم مربع checkbox اضغط على اشاره + بجانب android repository، سيقوم بتحميل عده خيارات


[دورة تعليميه - الدرس 1] تعلم صنع تطبيقات الاندرويد بالتفصيل - اعداد بيئه العمل

الان تختار ما تريد تنزيله وحسب توصيات موقع المطورين للاندرويد
اختر الحزمه المتوسطه وتتضمن ما يلي (ضع صح بجانب كل عنوان مكتوب هنا) :
- android SDK platform Tools
- SDK platform وهو الاصدار للنظام android على الاقل تحتاج واحد، وكما ترى كل الاصدارات تقريبا موجوده، من 1.5 وطالع، انا شخصيا اخترت 2.1 و 2.2 كونهم الاكثر انتشارا الان
- Documentation التوثيق للكود المصدري لل SDK وشرحه
- Samples: عينات برامج بسيطه للنظر عليها وربما الاستفاده منها
- Usb Driver تعريف للهاتف لكي تستعمله لتثبيت البرنامج عليه اثناء البرمجه debug
اضغط install selected وتابع التعليمات واجب بالايجاب دائما (خليك مطيع).

اخيرا .... تم الانتهاء من الاعدادت لبيئه العمل ...
كل واحد يمد رجليه ويحرك جسمه ويتمطط براحته
عشان الدوره الدمويه تتنشط ...

----------------------------------------------------------------------------------------------------------------------

الدرس الثاني : بنيه التطبيق ومكوناته


اهلا بكم في درسنا الثاني، في دوره تعلم برمجه تطبيقات الاندرويد.

سيكون هذا الدرس عباره عن شرح وتوضيح لبنيه البرنامج ومما يتكون وكيف يتم ربط اجزائه معا

** يمكن ان نقسم مكونات البرامج الهواتف الذكيه الى ثلاث اقسام:
1- الواجهات المرئيه وتسمى Graphical User Interface ويرمز لها GUI وهي الازرار ومربعات ادخال النص والقوائم المنسدله وما الي ذلك...

2- الكود البرمجي، وهي طريقه التحكم بهذه الواجهات والعناصر وتطبيق المنطق الذي نرغب به ليؤدي البرنامج غرضه، ممكن ان نقول ان الواجهات هي سياره وان الكود البرمجي هو الشخص الذي يقود السياره ويتحكم بها.

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

3- المصادر الخارجيه او ما يسمى resources وهي اي شيء خارجي تستعمله في برنامجك... مثل الصور، ملفات صوتيه، ملف خط مثلا او ملف مكتبه jar وهذه معروفه بالجافا وهي ما يقابل ملف dll ببرمجيات الويندوز مثلا ال VB فيمكن ان تستعمل ملف jar به وظيفه معينه بدون ان تضطر لاعاده العمل.

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

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

من خلال بيئه العمل ايكليبس وبفضل ال ADT الذي تحدثت عنه، عمليه تصميم ال GUI سهله ان شاء الله، وكذلك كتابه الكود الخاص بها، كما قلت كل هذا يتم من خلال برنامج واحد الايكليبس.

نأتي للقسم الاول: GUI
الواجهات ببرامج الاندرويد يتم تصميمها بملف XML
ولمن لا يعرف الـ XML هو ليس لغه برمجه بل يسمى data structure اي بنيه بيانات وطريقه لتمثيل بيانات معينه بطريقه محكومه وهذا مثال بسيط عليه:


** مثلا نريد تمثيل قائمه من الاشخاص لكل واحد اسم، بريد الكتروني وعمر سيكون ملف ال XML كما يلي


كود PHP:
<?xml version="1.0" encoding="UTF-8"?> <myList>
    <person>
        <name>ahmad</name>
        <email>ahmad@someemail.com</email>
        <age>25</age>
    </person>
<person>
        <name>khaled</name>
        <email>khaled@someemail.com</email>
        <age>18</age>
    </person>
</myList>
وتستمر القائمه ويستمر بناء الملف ويمكن اضافه اي قدر تريده من الاسماء شرط ان تلتزم بالبنيه
والفكره لل XML هي انه لا يوجد له قواعد او ما يعرف بلغات البرمجه بال syntax اي انه لا يجبرج على اختيار كلمه معينه لكن له قواعد تلتزم بها اثناء بناء الملف.

شرح بسيط:
كود PHP:
<?xml version="1.0" encoding="UTF-8"?>
هي الترويسه او header وهذه لكي تخبر اللغه او النظام الذي سيقوم بقراءه الملف عن معلومات مثل اي اصدار xml نستعمل وما هوالترميز encoding الذي نستعمله لانه قد يحوي كلمات عربيه او صينيه وهكذا

كل اشاره <> تسمى تاغ tag وتسمى باسم اول كلمه بها
مثلا تاغ العمر age tag <age>

<myList> هي العنصر الرئيسي بالملف root node
<person> هي ابن او child لـ mylist
<name> ، <email> ، <age> هي عناصر elements او ابناء لل person
الان لا يوجد قانون او قاعده تجبرني على انتقاء هذه الكلمات مثلا،
ممكن استعمل بدل من <myList> ان استعمل <myFriendsList>

نلاحظ وجود تاغ tag مشابه بالاسم ولكنه يحوي / هذا يسمى close tag او تاغ الاغلاق
وهذا من شروط ال xml يجب عليك ان تغلق كل التاغات التي تفتحها، وان تحافظ على ترتيب الفتح والاغلاق

مثلا
كود PHP:
<person>
    <
name>ahmad</name>
    <
email>ahmad@someemail.com</email>
    <
age>25</age>
</
person
لاحظو معي ترتيب الفتح والاغلاق، فتح person وبداخله:
فتح name وقيمه له ثم اغلاق name
فتح email وقيمه له ثم اغلاق email
فتح age وقيمه له ثم اغلاق age
اغلاق person


لا يجوز مثلا عمل هذا

كود PHP:
<person>
    <
name>ahmad</person>
</
name
ترتيب الفتح يجب ان يكون مطابق للاغلاق وهذا يسمى nest او nesting
يعني يجب ان يكون ال nesting صحيح.

الان يمكن ان تكون القيم بداخل ما يسمى attribute وليس داخل عناصر elements كما في المثال السابق
فتصبح مثلا:

كود PHP:
<myList>
<
person name="ahmad" age="18" email="ahmad@someemail.com"></person>
<
person name="khaled" age="22" email="khaled@someemail.com"></person>
</
myList
 
هذه افضل من ناحيه الحجم وكميه الكتابه، اذا كنت تبني ملف ال xml الخاص بك لك الحريه بالانتقاء اما اذا كنت تبني ملف xml سيتم استعماله من قبل نظام اخر يجب ان تلتزم بقوانين هذا النظام.

شيء اخر ممكن ان يكون تاغ الاغلاق عباره عن / بنهايه التاغ الاول بدون اعاده كتابته، مثال:


كود PHP:
<person name="ahmad" age="18" email="ahmad@someemail.com"></person> يصبح <person name="ahmad" age="18" email="ahmad@someemail.com" /> 
لاحظو معي اضافه / فقط والاستغناء عن </person> كامله. هذا جائز ايضا.

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

ويأتي الجزء الثاني وهو البرمجه، ويكون بملف مختلف عن هذا الملف، ويكون بلغه ال Java لهذا نحتاج لربط العناصر الموجوده في ملف التصميم GUI مع الملف الذي يحوي الكود لكي تستطيع التحكم بهذه العناصر، والكتابه بها او اخذ قيمه منها او عرض صوره معينه عليها وهكذا...
هذا الربط يكون بنفس ملف البرمجه من خلال كود معين سنتطرق اليه في وقتها.

في الاندرويد كل شاشه بها عناصر مثل الزر والقوائم الخ، تسمى Activity او نشاط، لكن لا احبذ هذه الترجمه ممكن نستخدم كلمه فعاليه مثل التي بالمهرجانات مثلا، فالمهرجان به عده فعاليات او فقرات، وكذلك برنامج الاندرويد كل برنامج به عده شاشات او فعاليات نبني كل واحده منهم على حدى من ناحيه GUI وكذلك من ناحيه الكود الخاص بها ونربطهم معا حسب المنطق الذي نريده

كل فعاليه تحتاج ملف برمجه وملف GUI، ملف البرمجه يكون بلغه Java وملف ال GUI يكون مكتوب على شكل ملف XML الذي شرحناه الان.



فيما يلي ملف xml بسيط لشاشه (او فعاليه) او activity لبرنامج اندرويد بسيط:

كود PHP:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout 
android:id="@+id/TableLayout01" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:stretchColumns="1"
xmlns:android="http://schemas.android.com/apk/res/android">

<TableRow>
        <TextView
            android:text="User Name"
            android:padding="3dip" />
          
<EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/txtLoginUsername">
</EditText>

</TableRow>

</TableLayout>
لا تخافو ... هذا كله يكون جاهز من الايكليبس، المهم نحاول نفهمه ونفرق بين التاغات الموجوده.

<?xml version="1.0" encoding="utf-8"?> هو الترويسه التي تكلمنا عنها
<TableLayout هو تاغ لشيء يسمى layout وهو معروف بالجافا حيث انه يحدد الطريقه التي سيتم عرض العناصر بها على الشاشه من ناحيه ترتيبها واحتلالها للمساحات... هنا نستعمل واحد نوعه table
وهذا تاغ البدايه له.

android:id="@+id/TableLayout01"
android:layout_width="fill_parent"
هذه عباره عن خصائص او attributes للتاغ السابق... لا تقلقو كلها تأتي جاهزه لن نكتب بها شيء ربما نغير كلمه او اثنتين لكن الملف الرئيسي يتم بنائه بشكل سهل جدا.

سوف اقوم بتجاهل بعض التاغات الان وسأشرحها بوقت لاحق ... لنأخذ هذا الان <TextView
هو تاغ يعني ان هناك شيء اسمه textView سيكون ظاهر على الشاشه وهو عباره عن مربع يمكن الكتابه به وقت البرمجه او من خلال الكود فقط ولا يمكن للمستخدم ان ينقر عليه ويكتب من لوحه المفاتيح، فهو يكون لوضع عنوان لشيء ما ... "مثلا اسم المستخدم" ويكون بجانبه عنصر اخر هو مربع نص لكي ينقره المستخدم ويكت به الاسم، اي انه شيء للتوضيح والدلاله.

التاغ <EditText هو مربع نص يمكن للمستخدم الكتابه بداخله من خلال لوحه المفاتيح، ويكون لاخذ مدخلات من المستخدم لكي نعالجها ببرنامجنا.

لاحظو معي كافه الاغلاقات للتاغات موجوده وبالترتيب واخر شيء اغلاق التاغ
الرئيسي وهو تاغ الـ </TableLayout>
*** هناك قاعده بسيطه لترتيب الفتح والاغلاق وهي: اول تاغ تفتحه هو اخر تاغ تغلقه وهكذا... لاحظو ان اول تاغ تم فتحه هو <TableLayout واخر تاغ تم اغلاقه هو </TableLayout> وبداخلهما كل التاغات الاخرى.

سأقف هنا في هذا الدرس، سيكون الدرس التالي نظره تفصيليه اكثر على ملف GUI ال XML حتى نفهم كل شيء يهمنا به وبعدها ننتقل الى ملف الكود الذي سيشغل البرنامج.

قد اكون تكلمت كثيرا عن ال XML هنا ولكنه شيء مهم برأيي لانك بالمستقبل ستبني واجهات قد تكون معقده قليلا فإذا لم تفهم بشكل جيد البنيه للملف وقواعد الكتابه به، لن تستطيع انجاز عملك بسهوله


----------------------------------------------------------------------------------------------------------------------

الدرس الثالث : التطبيق الاول 

السلام عليكم،

نكمل من حيث بدأنا … اليوم سيكون اول برنامج لنا على الاندرويد مع شرح تفاصيله
وسنبدأ من انشاء مشروع جديد، وتعريف بالملفات الناتجه، ومن ثم تصميم الواجهه مع شرح ملف ال GUI بشكل اوسع ومن ثم الانتقال لمرحله الكود.

1- انشاء مشروع جديد:
افتح الايكليبس واختر كما في الصوره



الدرس الثالث: [دورة تعليميه - الدرس 3] تعلم صنع تطبيقات الاندرويد بالتفصيل - التطبيق الاول

ثم اختر android project كما في الصوره



الدرس الثالث: [دورة تعليميه - الدرس 3] تعلم صنع تطبيقات الاندرويد بالتفصيل - التطبيق الاول
اضغط next فيظهر المربع التالي:


الدرس الثالث: [دورة تعليميه - الدرس 3] تعلم صنع تطبيقات الاندرويد بالتفصيل - التطبيق الاول
حيث تمثل الارقام:
1 – اسم المشروع بالنسبه لبرنامج الايكليبس
2- اختر اصدار نظام التشغيل الذي ترغب ببناء البرنامج له والذي سيتم تشغيل البرنامج عليه اثناء العمل
3- اسم البرنامج الذي سيظهر عند تنصيبه على الهاتف
4- اسم الحزمه التي سيكون الكود بداخلها وله تسميه متداوله حيث يبدأ ب com ثم اسم مميز لك مثلا اسم شركتك او اسمك ثم اسم التطبيق، تفصل كل واحده نقطه . عن الثانيه، هذه تهدف لترتيب الكود ولكي تحصل لنفسك على حزمه مميزه لانه قد تنشء ملف له نفس الاسم لملف موجود مسبقا فعندما تريد الوصول له يكون باستعمال اسم الحزمه وبهذا تضمن انك تستعمل الملف الذي تريده، الحزم بالنهايه ستكون على شكل مجلدات وعند توليد ملف البرنامج APK ستكون كلها وحده واحده.
5- اذا وضعت اشاره صح فإن الايكليبس ينشئ لك اول شاشه او فعاليه كما ذكرنا بالدرس السابق وهذا نوع من اختصار الوقت والجهد، فمؤكد ان برنامجك سيحوي فعاليه، اصطلاحا تنتهي اسماء الفعاليات بكلمه Activity
ويفضل ان يكون اسمها يدل على عملها لكي تسهل عملك اذا زاد عدد الفعاليات... مثلا فعاليه تسجيل الدخول يكون اسم ملفها LoginActivity وهكذا...
6 – الحد الادنى المستعمل لاصدار ال SDK في العمل، يتم تعبئته تلقائيا عندما تحدد اصدار نظام التشغيل من نقطه رقم 2
7- اضغط انهاء

يقوم الايكليبس بتوليد وانشاء كافه الملفات الضروريه للمشروع ويضعها بترتيب معين
وكذلك ينشئ لك اول ملف للفعاليه التي طلبت انشاءها وكذلك ملف ال GUI الخاص بها
ويكون شكل الملفات وترتيبها كما في الصوره:


الدرس الثالث: [دورة تعليميه - الدرس 3] تعلم صنع تطبيقات الاندرويد بالتفصيل - التطبيق الاول
والارقام شرحها كما يلي:
1- مجلد src مجلد الكود المصدري الذي ستقوم بكتابته، تجد فيه عنوان رئيسي هو اسم الحزمه package الذي ادخلته عند انشاء المشروع com.ce4arab.helloworld وكذلك به اول ملف Java انشأه ADT بشكل تلقائي وهو للفعاليه الاولى التي طلبت انشاءها.
2- الملجد gen هو مجلد يقوم ال ADT بانشاء ملفات به بشكل تلقائي لا تعبث به ولا تغير شيء به نهائيا.
3- مجلد res وهو المجلد الذي يحوي اي مصادر غير الكود، مثل ما ذكرت سابقا: صور، اصوات، وغيرها، كذلك فهو يحوي مجلد layout وبداخله يكون كل ملفات XML التي تستخدم لانشاء شاشات ال الفعاليات من ناحيه التصميم GUI،
نشاهد به ملف main.xml وهو ملف ال GUI
للفعاليه الموجوده حاليا HelloWorldCe4arabActivity.java
4- الملف AndroidManifest.xml هو ملف xml كذلك ومهم للغايه يكون به كل فعاليه يتم اضافتها وكذلك به معلومات عن الصلاحيات التي سيحتاجها النظام وسيحوي ايضا اشياء اخرى مهمه نذكر بعضها لاحقا.

بالجافا كل ملف يتم انشاؤه يحوي شيء يسما Class او فئه، هذا الكلاس هو وحده البناء الاساسيه للجافا من ناحيه كتابه الكود، يشترط ان يكون اسم الكلاس واسم الملف الموجود به متطابقين 100% اذا كان الكلاس من نوع الدخول public.

لنلقي نظره على ملف الفعاليه الموجود لدينا HelloWorldCe4arabActivity.java انقر عليه نقر مزدوج وسيظهر محتواه الذي تم توليده تلقائيا من قبل اداه ال ADT

كود PHP:
package com.ce4arab.helloworld;
 
  
import android.app.Activity;
  
import android.os.Bundle;
   
  public class 
HelloWorldCe4arabActivity extends Activity {
      
/** Called when the activity is first created. */
      
@Override
      
public void onCreate(Bundle savedInstanceState) {
          
super.onCreate(savedInstanceState);
          
setContentView(R.layout.main);
      }
  } 
**اول سطر هو اعلان ان هذا الملف موجود في الحزمه المذكوره.
package com.ce4arab.helloworld;

** السطور التي تبدأ بكلمه import تعني انه يتم استيراد كلاسات مكتوبه سابقا ليتم استعمالها هنا في هذه الفعاليه
وهذه الكلاسات سيم استيرادها من ال android SDK التي قمنا بتنزيلها ... من هنا نعرف اهميتها لانه هي مثل المواد الخام الموجوده في المصنع وسنبدأ باستغلالها لتصنيع برامجنا.

** السطر
public class HelloWorldCe4arabActivity extends Activity {
هو سطر يحدد بدء انشاء الكلاس الخاص بهذه الفعاليه، محدد الدخول له public اي عام يعني يستطيع اي كلاس من اي حزمه الوصول له، وكلمه class هي كلمه مفتاحيه keyword تخبر المترجم الـ compiler اننا ننشئ كلاس جديد... واسمه HelloWorldCe4arabActivity وهو مطابق لاسم الملف.. لاحظو معي ..

** اما extends فهي كلمه مفتاحيه كذلك تخبر المترجم ان هذا الكلاس HelloWorldCe4arabActivity سيقوم بوراثه كلاس اخر موجود واسم الكلاس هو Activity

** الوراثه: في اللغات التي تدعم ما سيمى البرمجه الكينونيه او Object Oriented ويرمز لها احيانا O.O.
مبدأها يقوم على كتابه كلاسات ثم تداخلها معا، ولا داعي لاعاده الكتابه من الصفر دوما، بل تستعمل كلاس موجود سابقا وترثه، والوراثه تكون لكل الخصائص والوظائف التي يملكها الكلاس الاب، الا التي تم تعليمها انها غير قابله للوراثه اثناء فتره برمجه الكلاس الاب، ويكون هناك اسباب منطقيه لا داعي ان نخوض بها لمنع وراثه وظيفه معينه او خاصيه معينه.

** السطر
public void onCreate(Bundle savedInstanceState) {
هو سطر يخبر المترجم اننا نريد انشاء وظيفه (function, method) وهي مجموعه من الاكواد تكتب داخل مكان واحد محصوره ب {} ويتم اعطاؤها اسم، ويتم استدعاؤها وقت الحاجه دون اعاده كتابه الكود مره ثانيه، او تكون وظيفه اساسيه، مثل هذه الحاله حيث ان كل فعاليه يشترط ان يكون بها هذه الوظيفه onCreate لكي يتم مناداتها عند انشاء الفعاليه وقت التشغيل.
اذا لدينا وظيفه اسمها onCreate محدد دخولها public وتأخذ مدخلات من نوع Bundle واسم المدخل savedInstanceState
كلمه void هنا تعني ان هذه الوظيفه لن تقوم بارجاع شيء او قيمه بل ستكون نتيجه استدعاؤها عمليه تنفذها فقط ولن ترجع قيم.

** السطر
super.onCreate(savedInstanceState);
يتم مناداه وظيفه اخرى اسمها onCreate كذلك لكنها موجوده في الكلاس الاب لهذا سبقها كلمه super اي الكلاس الاعلى الذي تم وراثته وبهذه الحاله هو Activity ... تتذكرون الجمله extends Activity

** السطر
setContentView(R.layout.main);
يتم مناداه وظيفه اسمها setContentView وهي موجوده بالكلاس الاب كذلك،
ويتم تمرير مدخلات لها وهي R.layout.mainهذه مأخوذه من الملف المولد تلقائيا في المجلد gen اذا كنتم مركزين معي هناك ستجد ملف اسمه R.java وهو ملف يتم بناؤه تلقائيا كلما اضفت شيء للمشروع ومن خلاله تستطيع الوصول للعناصر وبعض الملفات ... فهنا R.layout,main ترمز لملف ال main.xml الموجود في مجلد ال layout الذي تكلمنا عنه سابقا.

اذا هذه الفعاليه سيتم انشاؤها، ووضع التصميم لها باستعمال الملف main.xml الذي تم بناؤه كذلك وبهذه الطريقه تكون اول شاشه ظاهره على الموبايل عند تشغيل البرنامج.

الان دعونا نلقي نظره على ملف main.xml عند النقر المزدوج على الملف سيظهر كما الصوره


الدرس الثالث: [دورة تعليميه - الدرس 3] تعلم صنع تطبيقات الاندرويد بالتفصيل - التطبيق الاول
كما تشاهدون تظهر شاشه الفعاليه وهكذا ستظهر على الهاتف، اذا لاحظتم بالاسفل هناك مربعين
Main.xml و Graphical Layout
ما تشاهدوه الان اذا كان شاشه سوداء وبها جمله بالاعلو هو Graphical Layout
واذا ضغطتم على main.xml سيظهر الكود المصدري للملف وهو xml الذي شرحناه بالدرس السابق
كود PHP:
<?xml version="1.0" encoding="utf-8"?>   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      >
  <TextView  
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="@string/hello"
      />
  </LinearLayout>
اعتقد ان الملف اصبح مألوف لكم...
يتم استعمال layout من نوع linear له خصائص اذكر منها
android:layout_width="fill_parent" اي انه يملأ المكان الموجود به من ناحيه العرض وكذلك من ناحيه الارتفاع android:layout_height="fill_parent"

TextView هي كما قلت مثل ليبل label يتم عرض معلومه او عنوان به وهذه هي ما يظهر على الشاشه السوداء عند التحول لنظام العرض ال graphical
لها خصائص كذلك، والجديد هنا هو الخاصيه android:text وهي القيمه التي تكتب بها
للوقت الحالي تجاهلو ما كتب بها ... يمكنكم الان تعديل ما داخل ال "" ليعرض اي نص تريدونه مثلا:
android:text="my name is Yazan"
الان لو عدنا لنظام العرض ال graphical وقمنا بالضغط بالماوس على المربع بأعلى الشاشه السوداء والذي تغيرت قيمته (اذا كنتم قد غيرتم ما كتب به) الان بعد ان نقرت عليه مره واحده انظر لليمين ستشاهد اطار تأكد ان تختار من اعلى الاطار الخيار properties والذي سيحوي خصائص هذا العنصر...

شخصيا لا اعرف كل شيء فيها لكن يهمنا منها مثلا id حيث هذا هو الاسم المميز لهذا العنصر والذي من خلاله نستطيع استعماله عن طريق ملف الكود java
وهنا كذلك تجد الخاصيه text والتي قمنا بتعديلها من داخل الملف .. يمكن تعديلها من هنا ايضا
وانصح باستعمال هذه الطريقه بدل من عرض ملف ال xml والتعديل به بشكل يدوي تجنب لحدوث خطأ الا اذا الحاجه لتعديل يدوي..... مع الحذر الشديد.

الان حدد العنصر واعمل عليه كليك يمين right click واختر Edit Id واكتب بها lblTitle

على يسار الشاشه السوداء تشاهدون العناصر التي يمكن اضافتها للشاشه وهذا سهل جدا حيث تقوم بعمل نقر وسحب للعنصر ثم تفلته فوق الشاشه السوداء drag drop وبذلك تكون اضفته.

سنضيف زر button وهو موجود على اليسار قم بسحبه وافلاته فوق الشاشه السوداء
اضغط عليه وكليك يمين و Edit Id واكتب btnChange و OK

لتغير النص المكتوب داخل الزر اختر الزر ثم ابحث بالقائمه على اليمين عن الخاصيه text واكتب بها Change واضغط Enter
شكر لكل من sma666 و fartoot321 على التنبيه.

الان بعد ان اعطيت قيمه لل ID فان ال ADT يعيد بناء الملف R.java ويضيفها له
وهنا يأتي دور الربط بين الكود والتصميم...

*** نعود لملف HelloWorldCe4arabActivity.java :

*** يلزمنا للعمل:

- تعريف متغيرات تؤشر على الbutton وال textView الذين انشأناهما سابقا
- نحتاج لانشاء كلاس لكي يتعامل مع ضغطت الزر اي انه عندما يضغط احد على الزر ... ماذا يحدث؟
هذا الكلاس سيكون actionListener الخاص بالزر، ومن صفاته انه يستعمل كلاس اسمه OnCLickListener وهذا الكلاس بدوره يعالج عمليه الكليك على الزر او اللمس بحالتنا.

طريقه اضافه معالج الحدث او action listener لها عده طرق، والطرقه التي سأستعملها اعتبرها جيده وعامه ومرنه يمكنك استعمالها لعده حالات ... قد تكون طويله قليلا وهناك طرق اقصر منها لكنها المفضله لدي.

ومن ثم سنضيف الكود الخاص بعمل الزر .. وفي حالتنا هذه سنعمل كود يؤدي لتغير قيمه lblTitle لتصبح قيمتها الجمله Hello Android!
*** الشرح:

Button btnChange;
TextView lblTitle;
متغيرات ستقوم بالتأشير على كل من ال button وال textview

btnChange = (Button) findViewById(R.id.btnChange);
lblTitle = (TextView) findViewById(R.id.lblTitle);
اسناد قيمه للمتغيرين لكي يؤشرو على العناصر من شاشه التصميم
باستعمال الوظيفه findViewById() والتي تحضر ال object من خلال اسمه، ونحصل الاسم من خلال الكلاس المولد تلقائيا R.java

الايكليبس يوفر الاكمال التلقائي للجمل، يمكنك اعاده كتابه الكود وليس نسخه ولصقه وشاهد كيف يساعدك الايكليبس، كذلك بأي وقت اثناء الكتابه الضغت ctrl+space تظهر قائمه بالاحتمالات الممكنه وكلما كنبت اكثر تقل الاحتمالات حتى تحصل ما تريد.

btnChecng_onclickListener btnChngeLsnr = new btnChecng_onclickListener(this);
btnChange.setOnClickListener(btnChngeLsnr);

هذه الجمله تحدد ان المعالج للحدث الخاص بهذا الزر سيكون object وسيكون من كلاس اسمه btnChecng_onclickListener وقد انشأنا المتغير btnChngeLsnr واسندناه لهذه المهمه.

واخر فقره ..
من عند class btnChecng_onclickListener implements OnClickListener{ والى نهايه الملف، هي المكلاس المعالج للحدث، والذي ينفذ الوظيفه
onClick(View v) كلما تم لمس الزر وبداخلها كتبنا الكود الخاص بوضع نص داخل المتغير lblTitle والذي بدوره يؤشر على العنصر على شاشه التصميم.

الملفات النهائيه حملها من هنـــــــــــــــا

بهذا نكون قد اتممنا الشرح لدرس اليوم
ويبقى ان نشغل برنامجنا الدرس القادم ان شاء الله
تشغيل البرنامج يحتاج بعض الاعدادات سنتكلم عنها لاحقا ان شاء الله.

--------------------------------------------------------------------------------------------------------------------
الدرس الرابع : تشغيل البرنامج على المحاكي
نتابع الدروس معكم وسيكون الدرس الرابع عن كيفيه تشغيل البرامج التي نقوم ببرمجتها

يمكن لنا ان نشغل البرنامج بطريقتين:
- باستعمال المحاكي (هاتف اندوريد داخل الكومبيوتر)
- باستعمال هاتف حقيقي

لكل طريقه سلبيات وايجابيات ومن رأيي ان نستعمل المحاكي في المراحل الاولى من تصميم وتنفيذ البرنامج حتى نصل للنسخه الكامله او التي تستوفي كل الطلبتا، وبعدها نبدأ مراحل التطبيق والفحص على هواتف حقيقيه

لا يخفى علينا العدد الكبير من اصدارات الاندرويد وكذلك العدد الكبير من الهواتف التي تعمل بالاندرويد وهذه النقطه بقدر ايجابيتها وجمالها الا انها تشكل عبئ على المبرمج الذي يجب ان يحرص على ان يعمل برنامجه بشكل يتوافق مع اكبر شريحه من هذه الهواتف والاصدارات.

باستعامل المحاكي:

اولا يتوجب عليك انشاء هاتف افتراضي لكي تشغله باستعمال المحاكي ومن ثم تشغل برنامجك عليه
يطلق على الهاتف الافتراضي AVD او Android Virtual Device اي جهاز الاندرويد الافتراضي
ويمكن انشاؤه كالتالي:

- من Window اختر Android SDK and AVD Manager
- اول خيار في القائمه على اليسار Virtual Devices
- اضغط New


الدرس الرابع: [دورة تعليميه - الدرس 4] تعلم صنع تطبيقات الاندرويد بالتفصيل - تشغيل البرنامج على المحاكي

والارقام كما يلي:
1- اسم الجهاز الافتراضي سميه اي اسم تحب
2- من هنا تختار اي نظام تشغيل او اي اصدار ترغب بأن يعمل على هذا الهاتف، تذكرون الانظمه التي اخترناها عند عمل تحديث لل ADT...
3- اذا اردت ان يحو الهاتف بطاقه ذاكره، تحدد هنا ان كان ملف او خيار الحجم Size، وتحدد الحجم الذي تريده... نحتاج هذه اذا كان البرنامج الذي تعمل عليه سيتدخل في بطاقه الذاكره سواء للكتابه عليها او القراءه منها ... يمكن ان تترك الخيار على Size وتحدد مثلا 50 ميجا ... (يمكن التعديل لاحقا)
4- هذه من التحديثات الجديده لا اعرف صراحه ما عملها
5- اعتقد هي لشكل الهاتف وشكل شاشته اذا كان يهمك الدقه في الصوره وقياسات الشاشه ..
عاده انا اختار HVGA.
6- هذه من الاضافات الجديده كذلك وهي لاضافه اشياء معينه للهاتف الافتراضي .. ربما ليكون العمل كأنه ببيئه هاتف حقيقي اكثر... صراحه لم اجربها بعد واذا ضغط new التي بجانبها ترى الخيارات الممكن اضافتها


الدرس الرابع: [دورة تعليميه - الدرس 4] تعلم صنع تطبيقات الاندرويد بالتفصيل - تشغيل البرنامج على المحاكي

- اضغط Create AVD
وهكذا اصبح الهاتف الافتراضي جاهز...
اغلق ال AVD Manager

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


- من قائمه Run اختر Run Configurations


الدرس الرابع: [دورة تعليميه - الدرس 4] تعلم صنع تطبيقات الاندرويد بالتفصيل - تشغيل البرنامج على المحاكي

اختر android application رقم 1 بالصوره
ثم اضغط ايقونه جديد رقم 2 في الصوره اعلاه
وبقيه الارقام كما يلي:
3- اسم هذا الاعداد اعطه اي اسم تريد.
4- من هنا تضغط browse وتحدد هذا الاعداد مرتبط لاي مشروع
5- من هنا Target تحدد اي هاتف افتراضي ستستعمل (من التي انشأتها مسبقا)
وهناك خيارين .. Automatic و Manual حيث لا يسألك كل مره عن اي هاتف تريد العمل عندما تضغط تشغيل. يعني تختار autiomatic وتضع اشاره صح بجانب الهاتف الافتراضي الذي تريد استعماله

اضغط apply
الان من قائمه Run اختر Run او اختصارها Ctrl+F11 او من شريط الادوات الزر الدائري الاخضر بداخله مثلث البيض (الزر الكبير وليس الصغير)

هنا يبدأ عمل المحاكي ويقوم بتبويت النظام كاملا للهاتف الافتراضي الذي حددته من الاعداد


الدرس الرابع: [دورة تعليميه - الدرس 4] تعلم صنع تطبيقات الاندرويد بالتفصيل - تشغيل البرنامج على المحاكي

انتظر حتى يكتمل التشغيل وتظهر شاشه فك القفل.


الدرس الرابع: [دورة تعليميه - الدرس 4] تعلم صنع تطبيقات الاندرويد بالتفصيل - تشغيل البرنامج على المحاكي

وبمجرد فتح القفل انتظر قليلا وسترى برنامجك على الهاتف .. واذا لم يعمل بشكل تلقائي يمكنك فتح قائمه البرامج والبحث عنه وتشغيله بنفسك... كأنك على هاتف حقيقي .. يكون اسمه HelloWorldCe4arab
كما اسميناه في الدرس السابق.
اضغط هنا لمشاهدة الصورة في وضع التصغير
الدرس الرابع: [دورة تعليميه - الدرس 4] تعلم صنع تطبيقات الاندرويد بالتفصيل - تشغيل البرنامج على المحاكي

الان حاول الضغط على زر Change تلاحظ ان النص تغير، وبهذا يكون برنامجنا يؤدي عمله المطلوب

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

عند الانتهاء اغلق المحاكي على زر X كأنك تغلق اي برنامج اخر.


نهايه الدرس واتمنى لكم الفائده
---------------------------------------------------------------------------------------------------------------------

الدرس الخامس : شرح العناصر الرئيسيه وبرنامج جمع رقمين

 السلام عليكم،

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

بالاضافه لبرنامج بسيط في النهايه وظيفته جمع رقمين وعرض الناتج على الشاشه



الدرس الخامس: [دورة تعليميه - الدرس 5] تعلم صنع تطبيقات الاندرويد بالتفصيل - شرح العناصر الرئيسيه وبرنامج جمع رقمين

TextView
هذا العنصر يمكنك من عرض نص معين للمستخدم دون ان يتمكن المستخدم من تعديله ويمكنك تعديله انت من خلال الكود اثناء تشغيل البرنامج وكذلك يمكن تعديله في وقت البرمجه

Button
كبسه زر، غنيه عن التعريف، يمكن ان تضع اي نص بها مثلا .. موافق .. الغاء .. خروج ... يمكن تعديل محتوى النص من البرنامج او وقت البرمجه

CheckBox
يستعمل هذا العنصر في حالات عرض خيارات للمستخدم .. وترغب بأن يحدد ما يريد .. نستعملها دائما.. يكون تفعيل الخيار من قبل المستخدم من خلال وضع اشاره صح على الخيار من خلال لمس العنصر، وتدعم الاختيار المتعدد ، مثلا في برنامج اوقات الصلا تخير المستخدم ... تنبيه على الصلوات : فجر ، ظهر ، عصر ، مغرب ، عشاء (هنا يمكنه اختيار كل الخيارات ولا شيء منطقي يمنع ذلك)

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

---------
في المجموعه الثانيه :
TextFields
هي مربعات نصيه نوعها الرئيسي يسمى EditText تمكن المستخدم من كتابه ما يريد ويكون عباره عن مدخلات لبرنامجنا
ويتفرع عنها انواع متعدده تكون للتسهيل بالعمل ... مثلا حقل النص من نوع password يظهر الكلام المكتوب به على شكل نجوم او نقاط سوداء لكي لا يشاهدها احد...
اما نوع Number مثلا فهو يحدد نوع المدخلات بالارقام فقط وذلك من خلال عرض لوحه مفاتيح الارقام فقط وبهذا يمنع المستخدم من ادخال حرف بدلا من الرقم.
والبقيه اتوقع واضحه من خلال الاسم ومن يواجه صعوبه بنوع يتفضل بالسؤال.

---------
المجموعه الثالثه:
Layouts
وهي عباره عن مستوعبات Containers ان صح التعبير تحدد سلوك العناصر السابقه على الشاشه من ناحيه مكان وجودها وترتيبها واحتلالها للمساحات...صراحه لست متمكننا منها كلها لكن سأشرح ما اعرف منهم:

LinearLayout
هذا النوع يقوم بصف العناصر التي تضيفها على التصميم بشكل خطي ولحده بعد الاخرى .. وعند الوصول لاخر الشاشه ينزل سطر للاسف ويكمل باقي العناصر.

RelativeLayout
يقوم هذا النوع بوضع كل عنصر بشكل نسبي لعنصر اخر .. مثلا تضع TextView وتضع حقل password وتخبره ان حقل كلمه السر تحت مربع TextView
وهكذا تبني التصميم بشكل معتمد على بعضه.

TableLayout
اي الجدول وهو عباره عن تقسيم الشاشه لجدول، صفوف واعمده ومن ثم تعبئه هذه الخلايا (الناتجه عن الصفوف والاعمده) بالعناصر المطلوبه
يلزم للعمل به اضافه TableRow به بعدد الصفوف المطلوبه ومن ثم البدء بالتعبئه

اضافه العناصر تكون من خلال السحب اي انك تضغط العنصر المطلوب اضافته .. مثلا زر وتبقى ضاغط بالماور وتسحبه فوق المربع الاسود الذي هو التصميم ثم تفلته
سيأخذ مكانه حسب نوع ال Layout الذي تستعمله ويمكنك التعديل عليه من خلال مربع الخصائص Properties الموجود على اليمين.
كذلك عندما تسحبه فوق التصميم وقبل ان تفلته ستلاحظ ان المحرر يعطيك ظلال في الخلفيه عن مكان وقوع العنصر لكي يساعدك بتحديد مكانه.

بقيه المجموعات وعناصرها قد نتطرق لها لاحقا .. حسب الحاجه او اذا سأل احد عن نوع محدد.


نأتي للبرنامج الان...
سيكون كما قلت جمع رقمين وعرض الناتج.. اذا المطلوب من البرنامج ما يلي:
1- اخذ مدخلات من المستخدم (رقمين)
2- اجراء عمليه الجمع عليهم
3- اعطاء مخرجات للمستخدم من خلال عرض الناتج على الشاشه
5- قد نضيف زر اضافي لمسح الخانات.

نبدأ:
انشئ مشروع جديد كما تعلمنا وسميه مثلا SumTwoNumbers، لتجنب المشاكل لمن يرغب باستعمال الملفات التي سأضعها هنا
ضع في خانه Package Name عند انشاء المشروع القيمه : com.ce4arab.sumNum
والباقي عبئه كما تحب

التصميم سيكون مربعين من نوع Number لكل رقم سيدخله المستخدم
ثم زر للجمع مكتوب عليه Sum وبعدها TextView لعرض الناتج بها وسيكون واجبكم المنزلي عمل زر المسح الذي سيفرغ مربعين ال Number من القيم التي بهما.

هذا سيكون ملف ال main.xml وهو الملف الذي سيحوي التصميم، سنستعمل layout من نوع linear وهو النوع الذي يكون مستعمل عند انشاء المشروع.
سنضيف له العناصر السابقه مرتبه تحت بعضها ، بالنسبه لل TextView الذي سيعرض النتيجه وللزر بعد اضافتهم للتصميم،
نعمل كليك يمين على كل واحد ونختار layout_width - fill parent هذا يعني ان العرض لهم هو ملئ الاب والاب هو الشاشه الخلفيه ستلاحظون الفرق عند تنفيذ هذه الحركه.
وهذا ملف التصميم النهائي:
كود PHP:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
<EditText android:layout_height="wrap_content" android:layout_width="fill_parent" android:inputType="number" android:id="@+id/txtN1">
    <requestFocus></requestFocus>
</EditText>
<EditText android:layout_height="wrap_content" android:layout_width="fill_parent" android:inputType="number" android:id="@+id/txtN2"></EditText>
<Button android:layout_height="wrap_content" android:id="@+id/btnSum" android:text="Sum" android:layout_width="fill_parent"></Button>
<TextView android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:id="@+id/lblResult" android:text="0" android:layout_width="fill_parent"></TextView>
</LinearLayout>
الان نأتي للكود:
هذا هو الكلاس النهائي للفعاليه التي انشأها لنا ال ADT واسمها SumTwoNumbersActivit

كود PHP:
package com.ce4arab.sumNum;
import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView;

public class 
SumTwoNumbersActivity extends Activity { //متغيرات لكي يتم ربطها بالعناصر على التصميم
    
Button btnSum;
    
EditText txtN1txtN2;
    
TextView lblResult;
    
    @
Override
    
public void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState);
        
setContentView(R.layout.main);
        
//عمليه الربط بين المتغيرات والتصميم ... لنتمكن من كتابه الكود والتحكم بها
        
btnSum = (ButtonfindViewById(R.id.btnSum);
        
txtN1 = (EditTextfindViewById(R.id.txtN1);
        
txtN2 = (EditTextfindViewById(R.id.txtN2);
        
//تحديد معالج الحدث عند الضغط على الزر ... المعالج نفسه مكتوب بالاسفل 
        
btnSum_actionListener btnSumLsnr = new btnSum_actionListener(this);
        
btnSum.setOnClickListener(btnSumLsnr);
    }
//onCreate()
    
}//CLASS

//معالج الحدث actionListeer 
class btnSum_actionListener implements OnClickListener{
    
SumTwoNumbersActivity adaptee;
    
    public 
btnSum_actionListener(SumTwoNumbersActivity a){
        
adaptee a;
    }
    
    @
Override
    
public void onClick(View v) { //متغيراتلاخذ الارقام من المستخدم
        
int num1=0;
        
int num2=0;
        
//اخذ القيم من مربعين النص في التصميم txtN1 . txtN2 ووضعهم في متغيرات هنا مع تحويلهم لارقام
//لان المدخلات من المستخدم تكون نصيه دائما حتى لو كتب رقما لذا يجب تحويلها من خلال ()Integer.parseInt
        
num1 Integer.parseInt(adaptee.txtN1.getText().toString());
        
num2 Integer.parseInt(adaptee.txtN2.getText().toString());
        
//عمليه الجمع وتخزين الناتح بمتغير جديد result
        
int result num1 num2;
        
// وضع قيمه result داخل TextView في التصميم والذي اسمه lblResult
        
adaptee.lblResult.setText(""+result);
    }    
}
//btnSum_actionListener 
** استعمال الرمز // وكتابه كلام بعده يسمى تعليقات comments تكون لتوضيح الكود والمترجم compiler يتجاهلها
يفضل ازاله التعليقات العربيه من الكود اذا واجهت مشاكل الوضع الصيحي ان يتم تلوينها بالاخضر عند نقلها للمحرر eclipse

وهذا برنامجنا اصبح جاهز للعمل
يمكنكم التعديل عليه واضافه زر للطرح مثلا والقسمه والضرب ..

ومن لديه اي استفسار يتفضل ويسأل هنا.


كان هناك خطأ بالكود: بالسطر الاخير من كلاس معالج الحدث
adaptee.lblResult.setText(result);

الصحيح
adaptee.lblResult.setText(""+result);

وهذا لان الوظيفه setText مهئيه لاستقبال نص String وليس قيمه رقميه int
ووضعنا ال ""+ لكي نحول القيمه الرقميه الى نص
وممكن استعمال
Integer.toString(result) كذلك


---------------------------------------------------------------------------------------------------------------------


 الدرس السدس : تصدير البرامج بصيغه APK

 السلام عليكم ورحمه الله

درس اليوم ان شاء الله هو عن كيفيه تحويل او تصدير البرامج لصيغه apk حتى تتمكن من تثبيتها على الهاتف او رفعها على الماركيت او مواقع الرفع المتعدده...

اولا نحتاج توضيح مفهوم وهو ال sign او التوقيع وهو عباره عن توقيع الكتروني مميز
لا يتكرر ومهمته هو توقيع البرامج التي تنتجها ويشكل ما يشبه البصمه.

فتكون الخطوات هي انتاج ملف ال apk ثم توقيعه وبهذا يصبح ملف موقع يمكن تثبيته على الهواتف

الاضافه ADT اذا كنتم تذكرونها .. تقوم بكل هذا العمل عنا بشكل مبسط...
يلزمنا اولا انشاء ما يسمى keystore او مخزن المفتاح وهو ملف يحوي التوقيع الذي ستسعمله
ويكون محمي بكلمه سر...
هذا الملف يتم انشاءه ومن ثم استعماله من قبل ال ADT لكي يوقع البرامج
ويمكنك نقله من حاسوب لاخر لكي توقع برامجك عليه ، هذه الحاله مفيده بحاله كنت تعمل على اكثر من حاسوب ولكنك تريد توقيع برامجك بنفس الملف، ولكن قد يسأل احد ... لماذا استعمال نفس ال مخزن .. يمكنني انشاء ملف اخر ... والاجابه تكون انه عند عمل تحديثات update لبرنامجك ورفعها مره ثانيه على الماركيت او مكان الرفع الذي تستعمله ... اذا كانت التواقيع مختلفه (يعني من ملفين مخزن مختلفين) عندها واذا اراد شخص اعاده تثبيت التحديث فأنه سيفشل وسيتظهر له رساله خطأ على الهاتف مفادها ان التواقيع غير متطابقه وبهذا يجب عليه حذف النسخه القديمه وتثبيت الجديده ... ومن هنا تأتي اهميه الملف الموحد ... لكي تكون كل تطبيقاتك وكل تحديثاتها موقعه من نفس الملف بنفس التوقيع

قد اكون اطلت بالشرح السابق لانه مهم ومهم ان نعرف ماذا نفعل ... هي ليست مجرد خطوات 1 2 3 لكنني احرص على ان تفهمو ما الذي يحدث ...

الان نفترض انك انهيت برنامجك واصبحت جاهزا لنشره...

***** نبدأ ... اولا انشاء ملف المخزن او keystore (نقوم بهذا مره واحده)

1- تعمل كليك يمين على مجلد المشروع الرئيسي من داخل الايكليبس

** ابحث بالقائمه عن خيار build project واضغط عليه ... تأكد انه لم يعطي رسائل خطأ او اشاره x حمراء... اذا لم تجد هذا الخيار يكون محدد بشكل تلقائي ... اذا انت جاهز للمتابعه

2- نختار من القائمه التي تظهر android tools وهو الخيار قبل الاخير
3- من القائمه الفرعيه التي تظهر نختار export signed application package
الدرس السادس: [دورة تعليميه - الدرس 6] تعلم صنع تطبيقات الاندرويد بالتفصيل - تصدير البرامج بصيغه APK
4- من المربع الذي يظهر يكون به اسم المشروع الذي ترغب بتصديره .. اضغط next
5- يأتيك خيارين بأعلى المربع ... اختر create new keystore
6- اضغط browser وحدد المكان الذي تريد انشاء الملف به ... حاول ان لا يكون على القسم c حتى لا تفقد الملف بحاله عطب القسم c لنفرض انك حددت d:\mystores الان بخانه الاسم اكتب اسم الملف مثلا mykeystor واضغط save
7- عبئ حقلين password و confirm بكلمه السر التي ترغب بحمايه المخزن بها ... واضغط next

ستظهر هذه الشاشه وهي لانشاء المفتاح نفسه الموجود داخل المخزن


الدرس السادس: [دورة تعليميه - الدرس 6] تعلم صنع تطبيقات الاندرويد بالتفصيل - تصدير البرامج بصيغه APK
- الحقل الاول معبأ ... لا تغيره
- الحقل الثاني والثالث كلمه السر password يمكنك استعمال نفس كلمه السر الاولى وهو الافضل حتى لا تتشتت
- validity years مده الصلاحيه ... عبئ مثلا 110
- من القسم الاسفل على الاقل حقل واحد مطلوب ... عبئ الاسم وهو اسمك واذا اردت اكمال البقيه يجوز ذلك واعتقد انه افضل ...
ثم اضغط next

الان انهينا الاجراءات اللازمه لانشاء المخزن وملف المفتاح للتوقيع

الان يسألك عن المكان الذي تريد تخزين ملف ال apk به يفضل ان يكون داخل مجلد البرنامج نفسه
اختر المكان من خلال browse وحدد اسم الملف apk الذي تريده واضغط save
وعلى المربع الرئيسي اضغط finish

الان اصبح هناك ملف apk جاهز للتثبيت على الهاتف او الرفع على الماركيت او الرفع والارسال لاي مكان

في المرات التاليه ... عندما تختار export signed application ... لا تختار create new كما في الخطوه 5 بل اختار use existing
الدرس السادس: [دورة تعليميه - الدرس 6] تعلم صنع تطبيقات الاندرويد بالتفصيل - تصدير البرامج بصيغه APK
ومن خلال الزر browse حدد مكان ملفك الذي انشأته d:\mystores\mykeystore
وضع كلمه السر و next ومن الشاشه التاليه
افتح القائمه ستجد الاسم مره ثانيه اختاره واكتب كلمه السر الثانيه التي حددتها مسبقا وتابع الخطوات كما في الشرح اعلاه (لن تحتاج انشاء المفتح مره اخرى: الشاشه التي بها validity year لن تظهر مره ثانيه)

ان شاء الله الموضوع بسيط ومفهوم وانا جاهز للاسئله ان شاء الله


تم اخذ بعض الصور من موقع
My Android corner: Signing Android applications
لكن الشرح من عند الاخ يزن بفضل الله

التعليقات
2 التعليقات

هناك تعليقان (2) :

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

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

    ردحذف