الثلاثاء، 5 يناير 2016

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



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

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

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






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.Activityimport android.os.Bundleimport android.view.Viewimport android.view.View.OnClickListenerimport android.widget.Buttonimport android.widget.EditTextimport 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 

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

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



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

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

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

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

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

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

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

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





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





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

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


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





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

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

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





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





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




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

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

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


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

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



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

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

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






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





اضغط next فيظهر المربع التالي:




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

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




والارقام شرحها كما يلي:
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 عند النقر المزدوج على الملف سيظهر كما الصوره




كما تشاهدون تظهر شاشه الفعاليه وهكذا ستظهر على الهاتف، اذا لاحظتم بالاسفل هناك مربعين
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 والذي بدوره يؤشر على العنصر على شاشه التصميم.

الملفات النهائيه بالمرفقات

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

الى لقاء قريب في درس جديد ان شاء الله

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

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

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

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

** يمكن ان نقسم مكونات البرامج الهواتف الذكيه الى ثلاث اقسام:
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" 

<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 هنا ولكنه شيء مهم برأيي لانك بالمستقبل ستبني واجهات قد تكون معقده قليلا فإذا لم تفهم بشكل جيد البنيه للملف وقواعد الكتابه به، لن تستطيع انجاز عملك بسهوله

والى درس قادم ان شاء الله،

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



بسم الله،


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


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

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

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

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

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

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

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

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

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


بدء العمل:

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

2- نحتاج تنزيل ال JDK:


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

3- نحتاج ال Android SDK:
اختر ما يناسب نظام التشغبل لديك:
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، سيقوم بتحميل عده خيارات





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





باستعرض معاكم طريقة تضبيط برنامج Eclipse Java Editor المشهور واستخدامه في برمجة تطبيقات الاندرويد من 1.5 إلى 2.2

الاشياء اللي نحتاجها:

1. حزمة Android SDK من هنا


2. برنامج Eclipse Java Editor من هنا - لا تنزل Java EE وانصح بالنسخة 32 بت حتى لو كان نظامك 64 بت لان الثاني يعاني من بعض المشاكل

بسم الله نبتدي طريقة إعداد ال Ecliplse

اولاً: فك الضغط عن الملف android-sdk_r06-windows.zip داخل مجلد C:/
ثانياً: فك الضغط عن الملف eclipse-java-helios-win32.zip داخل مجلد C:/







بعدها ادخل مجلد eclipse وعند eclipse.exe اضغط باليمين وبعدها Send to وبعدها Desktop Shortcut

بعدها قم بتشغيل برنامج Eclipse وعند اول تشغيل يظهر لك Workspace Launcher، قم باختيار مساحة البرمجة workspace، وبالنسبة لي اخترت الدرايف D كما في الصورة، مع وضع علامة صح بجانب Use this as default and do not ask again








ستظر لك واجهة Welcome، قم باغلاقها...

الآن مع تنزيل حزمة Android لبرنامج Eclipse، يتم ذلك بالذهاب إلى Help ثم Install New Software








عند Work with، قم بادخال العنوان التالي ثم اضغط ADD ، بعدها ادخل اسم Repository وليكن Android SDK مثلا:





ستظر لك الحزمة بهذا الشكل







قم باختيار Developer Tools بعدها Next وأيضاً Next مرة اخرى

بعدها قم بالموافقة على الشروط وغيرها واضغط Finish سيظر لك تحميل البرنامج








اذا ظهرت لك هذه الرسالة، اضغط OK وسيواصل التحميل









بعدها اضغط على Restart now ليتم إعادة تشغيل البرنامج، لا تخف الوندوز لن يعيد التشغيل فقط البرنامج

بعدها اذهب إلى Window>Preferences واختر Android وتجاهل رسالة الخطأ

عند SDK Location ضع عنوان المجلد للـ SDK والذي افترضنا ان نفك الضغط عنه في هذا العنوان:


كود:C:\android-sdk-windows


واضغط Apply ثم OK








بعدها اذهب إلى Windows>Android SDK and ADV Manager








من خلال Available Packages، ضع الاختيار على جميع الخيارات، واضغط Install Selected، المعذرة فهم موجودين عندي وفي الصورة التالية لا يمكن ان اضغط على Install Selected، هذه العملية ستأخذ وقت طويل








الآن مع كيفية اختيار المحاكي المناسب:
من نفس الخيار السابق، إذهب إلى Virtual Devices واختر New وضع الخيارات المناسبة لك كما في الصورة ، ثم Add ADV








بعدها، من خلال File>New>Other قم باختيار مشروع الاندرويد ثم Next








بعدها اختر اسم للمشروع وقم باختيار Build Target المناسب وفي خانة Application Name ادخل اسم البرنامج








عند النزول قليلاً، هناك خيارات يجب وضعها ثم Finish









تم انشاء مشروع الجافا الخاص بالاندرويد




الآن يمكنك البدء في البرمجة

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

ونتابع مع درس قادم ان شاء الله.

الاثنين، 4 يناير 2016

كيفية اعادة توجية نطاق مدونات بلوجر من http إلى Https



أهلا بكم متابعى وزوار"الاحترافي" منذ اسابيع قليلة أطلقت شركة جوجل فرض حماية قوى على نطاقها blogspot للمدونات المجانية لزيادة الحماية والامان للمدونات المستضافة عليها ويعتبر تحديث رائع جدا وقوى فى نفس الوقت واليوم باذن الله سنتطرق لـ طريقة اضافة https الى نطاق مدونات بلوجر المجانية بطريقة سهلة.

ملحوظة: هذه الطريقة والاضافة متاحة فقط للمدونات المجانية وليست للمدونات التى تمتلك دومين مدفوع.

الطريقة كالتالى. من خلال الصورة.


كيفية اعادة توجية نطاق مدونات بلوجر من http إلى Https




1 - ندخل على لوحة تحكم بلوجر
2 - نختار المدونة المراد التطبيق عليها
3 - نضغط على اعدادات . 


بعد الضغط على الاعدادات ننزل الى أسفل الصفحة ستشاهد الاعداد مثل ما فى الصورة السابقة.
4 - مقابل كلمة"توفر https يوجد خيارين الاول نعم والثانى. لا

لتفعيل الاضافة اضغط نعم . وبعدها احفظ الاعدادات
ومبروك عليك الاضافة القوية.

أفضل كود ميتا تاج للمواقع ولمدونات بلوجر والووردبريس الجديد 2016




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


ماهى فائدة كود الميتا تاج.؟


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

للدخول الى الموقع. من هنــــا 

هذه صورة من الموقع.


كود ميتا تاج 2016


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

اتمنى ان تكون المقالة مفيدة لكم. ولا تحرمونى من تعليقاتكم المشجعة.

شرح طريقة تنصيب قالب ووردبريس 2016

 نعرف اهمية القالب في اظهار المدونة بشكل احترافي و جميل و اتاحة تصفح المواضيع بشكل سلس و سهل , لذلك من المهم اختيار قالب يكون بسيط وفي نفس الوقت احترافي, كي تكسب ثقة الزوار و بالتالي امكانية العودة مرة اخرى, وحتى الاشتراك من خلال تسجيل العضوية او الانضمام الى صفحة الفيس بوك الخاصة بالموقع وكذلك قناتك على يوتيوب, هكذا تكسب زوار دائمين بالتالي تضمن ثقة محركات البحث.
يمنك البحث عن قوالب مجانية و هي منتشرة بكثرة على النت او شراء احدها من مواقع موثوقة تقدم قوالب ذات جودة عالية . و طريقة تنصيب قالب ووردبريس سهلة و بسيطة
يمكنك تحميل قوالب مجانية من هنا http://wordpress.org/extend/themes
ملاحظة مهمة :
يمكنك تنصيب قوالب ووردبريس و التي قمت بتحميلها او شرائها فقط اذا كانت لديك مدونة مستضافة خارج سيرفر الوردبريس, يعني استظافة خاصة بك مدفوعة او مجانية . اذا كنت تملك مدونة مجانية مستضافة على السيرفر الخاص بالوردبريس لن تظهر لك كلمة (رفع) ولا يمكنك تنصيب قوالب خاصة بك , في هذه الحالة يمكنك اختيار احد القوالب المقترحة من ووردبريس فقط .
طريقة تنصيب قالب ووردبريس
بعد تحميل القالب ويجب ان يكون (مضغوط بامتداد zip) احفظه على سطح المكتب.
أدخل إلى لوحة التحكم (المظهر ثم القوالب ثم التبويب تنصيب قوالب)


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


بالتوفيق للجميع

الأربعاء، 21 أكتوبر 2015

10 خرافات وأكاذيب تكنولوجية يجب أن تتوقف عن تصديقها


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

1-حواسيب "ماك" والفيروس
يعتقد آلاف مستخدمي "آبل" أن الفايروسات لا يمكن أن تصيب حواسيب "ماك"، وهو اعتقاد خاطىء، لأنها كغيرها من الحواسيب معرّضة للبرمجيات الخبيثة والفيروسات التي تضر وتبطئ الجهاز. خير دليل على ذلك أن هناك نحو 18 ألف جهاز "ماك" تعرضت للقرصنة والفايروسات عام 2014، فيما تعرّض نحو 50 ألف جهاز "آبل" عام 2012 لفايروس Trojan Flashback وهذا باعتراف شركة "آبل" نفسها.
2-الهاتف والشاحن
يعتقد معظم الأشخاص أن نسيان الهاتف موصولاً بالشاحن يتلف البطارية، إلا أن هذا معتقد خاطئ لأن الهواتف الذكية تعمل ببطارية "ليثيوم-آيون" أو "ليثيوم بوليمر" التي يمكنها إيقاف استمرار الشحن حين تمتلئ البطارية. وفي حال ترك الهاتف على الشاحن لفترات طويلة لن يؤثر ذلك على البطارية أو الهاتف.
3-البطارية ودورات الشحن
في الآونة الأخيرة سمعنا عدة آراء خبراء تكنولوجيين حيث قالوا: "لا تشحن بطارية الجهاز إذا نفدت نهائيًا"، إلا أن دراسة حديثة أشارت إلى أن للبطاريات دورات شحن محددة لوصولها إلى حالة التلف أو نفادها بشكل سريع، وإذا استعملت الدورات المحددة مسبقاً ستتلف تلقائياً وليس بسبب الشحن عند نفادها.
4-شاحن "آيباد " لشحن هاتف "آيفون" 
تباينت الآراء حول موضوع استخدام شاحن "آيباد" لشحن "آيفون"، البعض يؤكد أن هذا الأمر يتلف الجهاز. ومن جهته، أكد الموقع الرسمي لشركة "آبل" العالمية، أن محوّل "آيباد" هو 12 واطاً وقادر على شحن "آيفون". لكن لمدير قسم التكنولوجيا في شركة "إيه إي آي سيستيمز"، ستيف ساندلر، رأي مختلف إذ أكّد أن الشحن المتبادل بين "آيباد" و"آيفون" يتسبب بالضغط على البطارية بحال اتباعها لمرات مستمرة، وقد يؤثر ذلك على عملها بشكل سليم.
5-إغلاق الحاسوب يومياً 
يتساءل العديد من المستخدمين عن صحة وضرورة إغلاق الحاسوب أو الجهاز المكتبي يومياً، إذ يعتقد البعض أن إغلاقه نهائياً كل يوم يضر الحاسوب أو الجهاز، إلا أن الأمر مختلف.
يجب أن يُغلق الحاسوب نهائياً يومياً لأسباب عديدة أبرزها حماية البيانات من المتربصين والمقرصنين، الذين يستغلون الثغرات البسيطة للدخول إلى الحواسيب. كما يجب الحفاظ على طاقة البطارية إن كان الجهاز هو لابتوب، والأهم، إغلاقه يساهم بالحفاظ على عمر أطول للجهاز، لأن لكل قطعة إلكترونية عمراً محدداً مسبقاً من قبل الشركة المصنعة. أما السبب الرابع فهو الحفاظ على البيئة لأن استهلاك الطاقة المستمرة قد يضر بها، وهذا ما تطلبه المنظمات المعنية بحماية البيئة بحملات التوعية.
6-الهواتف الذكية تسبب السرطان
تكثر الشائعات على مواقع التواصل الاجتماعي، والتي تجزم بأن الهواتف الذكية تتسبب بسرطان الدماغ لأنها تصدر إشعاعات قريبة من الرأس. هذا الأمر منطقي ولكن لا يوجد دليل قاطع لهذه الإشاعات، إذ أكد التقرير السنوي للمعهد الوطني للسرطان في أميركا أن "هناك بعض المخاوف حول إمكانية تأثير الطاقة الكهرطيسية من الهواتف النقالة على الدماغ عند تقريبها من الرأس، لا يوجد في الحاضر إثباتات من الدراسات على الخلايا أو الحيوانات أو البشر على أن الطاقة بالتردد الراديوي يمكن أن تسبب السرطان".
7-إشارات الإرسال تضمن خدمة جيدة
تشير علامة الإرسال التي تظهر على الهاتف إلى جودة الاتصال وخدمة الإنترنت، فإن كانت جيدة تكون جودة الإنترنت والاتصال جيدة والعكس صحيح، إلا أن هناك عوامل أخرى تؤثر على سرعة الإنترنت وأدائه. إن استخدام عدد كبير من الأشخاص الشبكة في الوقت نفسه قد يؤثر أيضاً على الجودة والسرعة، وقد تكون شريحة الإرسال في الهاتف بطيئة، أو لا تتلاءم مع إشارة برج الإرسال القريب منه. 

8-دقة الشاشة والعين
يؤكد بعض الخبراء أن دقة شاشة الهاتف تفقد أهميتها إن تجاوزت حداً معيناً، إذ لا تستطيع عين الإنسان ملاحظة زيادة الدقة أكثر من كثاقة 300 نقطة في البوصة. إلا أن شركة LG دحضت ما قاله الخبراء وطرحت مؤخراً هاتف G4 بدقة QuadHD أي 2560×1440 وكثافة 538 نقطة في البوصة، وقد استطعنا ملاحظة الفرق الكبير بالعين وهو أفضل بكثير من الـ 300 نقطة في البوصة من حيث الدقة وجودة الصورة.
9-استخدام الهاتف في محطات الوقود

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

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