صفحات

دورة تعليم برمجة اندرويد

تعلم برمجة تطبيقات الأندرويد حتى الإحتراف .....

دورة تعليم لغة الجافا

تعلم برمجة تطبيقات الجافا .....

samedi 28 décembre 2013

الوراثة

بسم الله الرحمان الرحيم:

السلام عليكم و رحمة الله و بركاته،كيف حالكم إخواني ؟ سننتقل اليوم الى مفهوم جديد و مهم جدا الا و هو الوراثة؟لذا ماهي الوراثة؟ و ماهو دورها ؟

jeudi 19 décembre 2013

متغير الفئة

بسم الله الرحمــن الرحيم:
متغيرات الفئة ،ماهي ؟ما دورها؟هذا هو الدرس الموالي في مدخل البرمجة الكائنية في الجافا.

زر التبديل

بسم الله الرحمــــن الرحيم:


السلام عليكم ورحمة الله و بركاته.
 سنرى نوعا آخر من الأزرار و هو زر التبديل او ToggleButton .

samedi 14 décembre 2013

ما هي JRE و SDK؟

JRE : هي عدة تمكن المستخدم من تشغيل برنامج مبرمج بلغة الجافا.وهي تحتوي على الفيرتيال ماشين virtual machine JVM  ودورها هو تنفيذ ال byte code .

SDK : هي عدة خاصة بالمبرمجين و هي تحتوي على JRE و مترجم و مجموعة من الأمثلة لمشاريع جافا و مصادر جميع مكتبات الجافا.

ما هي الجافا؟

ما هي الجافا؟

الجافا هي لغة برمجة كائنية التوجه تم تطويرها من طرف شركة سان Sun  سنة 1995، بنيتها قريبة جدا من بنية لغة البرمجة c++ .

وكان الهدف من تطويرها،تجاوز بعض المشاكل التي كانت تعاني منها c++،وكذلك إضافتها لأمور جديدة وتمثل نقط قوتها وهي: إمكانية التشغيل على غالبية الأنظمة وذلك راجع لكيفية عمل برامج الجافا.إضافة إلى عنصر مهم يتمثل في كون الجافا تمكن من برمجة تطبيقات خاصة بالويب.

ما هي الأدوات الضرورية لبرمجة تطبيقات الأندرويد؟

لبرمجة تطبيقات الأندرويد، لابد وأن تتوفروا على ال SDK للأندرويد وهو أقل ما يلزم للبرمجة،وتجدون هنا طريقة تثبيته تحميل و تثبيت البرامج اللازمة
يمكنكم كذلك الإستعانة ببيئة للبرمجة IDE و أفضل eclipse ،مع إضافة الأداة ADT.

هناك كذاك بيئات برمجة أخرى أبرزها IntelliJ IDEA ، و NetBeans لكنها تبقى أقل جودة من eclipse .

 

ما هي الكلمات المفتاحية في لغة الجافا؟

الكلمات المفتاحية في لغة الجافا هي تلك الكلمات المحجوزة من طرف اللغة، وهذا جدول يبين بعض هذه الكلمات و دورها :

 

تعريفها الكلمة المفتاحية
تمكن فئة ما أن تكون مجردة abstract
نوع منطقي boolean
تمكن من الخروج من حلقة أو شرط break
نوع عدد صحيح صغير byte
تمكن من تحديد الحالات الممكنة لمتغير case
تمكن من التقاط استثناء catch
نوع رمز char
تعريف لفئة class
تمكن من مواصلة عمل حلقة،عكس break continue
نجدها في switch وهي القيمة الإفتراضية للمتغير default
عنصر من الحلقة while do
نوع عدد حقيقي double
جزء من الشرط if else و تعني إذا لم يتحقق الشرط           
else
تعريف لفئة ابنة،الوراثة extends
تعريف لثابتة لا يمكن تغييرها خاصة بفئة ما final
نوع عدد حقيقي float
تعليمة لحلقة for
جزء من الشرط if if
كلمة لاستدعاء حزمات import
تمكن من معرفة هل كائن ما من نوع فئة ما instanceof
نوع عدد صحيح int
نوع عدد صحيح كبير long
إنشاء كائن جديد و حجز الذاكرة المناسبة new
تصريح باسم الحزمة package
جزء من الحلقة while while
تعريف لمتغير static
نوع لدالة لا ترد شيئا void
كلمة مفتاحية تعني أرجِع قيمة ما return
نقصد بها this

 

 

samedi 30 novembre 2013

دوال الوصول و التغير

بسم الله الرحمان الرحيم:
السلام عليكم و رحمة الله،سنتطرق إلى ما نسميه بتعريف دوال الوصول إلى خصائص فئة ما كما سنتطرق إلى درجات إمكانية الوصول إلى الخصائص.
 public class Car {
 
 private String brand;
 private String color;
 private int model;
 
 public Car(){
  System.out.println("Car created with default constructor");
  this.brand = "";
  this.color = "";
  this.model = 2000;
 }
 
 public Car(String _brand,String _color,int _model){
  System.out.println("Car created with specific constructor");
  this.brand = _brand;
  this.color = _color;
  this.model = _model;
 }

}

هناك كلمة تم إضافتها قبل نوع كل من نوع خصائص الفئة هي private ، وتعني "خاصة" أي أن هذه الخصائص لا يمكننا الوصول إليها خارج الفئة،وبالتالي لا يمكن تغيير أو قراءة قيمتها خارج الفئة Car .كيف ذلك؟لنفهم أكثر،لنجعل الوضعية عكس ما هي عليه الآن: إذن لنضف عليها كلمة public ، وتعني للعموم أي الجميع يمكنه تغيير و قراءة قيمة الخاصية التي تم تعريفها بإمكانية وصول للعموم.

لكن أين يمكننا أن نغير قيمتها؟بمعنى آخر أين يوجد "خارج الفئة" الذي ذكرته؟

جميل،خارج الفئة نعني به كل فئة أخرى تحتوي على كائنات من فئة Car ،مثلا الفئة الرئيسية للبرنامج.

إذن إذا عرفنا الخصائص كلها بإمكانية الوصول public يمكننا مثلا فعل ما يلي:

public class MainClass {

   public static void main(String args[]) {
      Car car1 = new Car();
      Car car2 = new Car("Mercedes", "Black", 2009);
      
      car1.color = "red";
      car1.model = 2006;
      
      System.out.println("the color of car2 is :" + car2.color);
      System.out.println("the model of car2 is :" + car2.model);
      
   }
}

كما هو مبين في الشيفرة،عرفنا كائنين من فئة Car ثم وصلنا إلى خاصية color الكائن car1 بتحديد اسم الكائن ثم نقطة ثم اسم الخاصية التي نريد الوصول إليها لتغيير أو قراءة قيمتها،في حالتنا الأولى قمنا بتغيير قيمة لون الكائن car1 إلى red و قيمة model إلى 2006 ،بالنسبة لما تبقى قمنا بقراءة قيمتي خاصيتين من خاصيات الكائن car2 ، لا تنسوا أن هذا كلها صالح فقط لأننا قمنا بتعريف الخصائص بإمكانية وصول public .لهذا أمكننا الوصول إلى الخصائص مباشرة خارج الفئة.

لكن،من الضروري أن نذكر أنه لايجب ترك خصائص فئاتكم بإمكانية وصول public أبدا،دائما نجعلها private.

إذن نعود إلى الكود الأول لفئة Car حيث جميع الخصائص معرفة بإمكانية الوصول private ،السؤال الذي يجب أن يطرح الآن هو : كيف إذن يمكننا تغيير و قراءة قيم هذه الخصائص؟

هذا هو موضوعنا اليوم،إنها دوال الوصول ودوال التغيير أو ما يسمى getters and setters . هي دوال عادية و بسيطة تمكننا من تغيير و قراءة قيم الخصائص،من خلالها يمكننا التحكم في طريقة تغيير و طريقة قراءة قيم الخصائص حسب ما نريد،وهذا مثال :

public class Car {
 
 private String brand;
 private String color;
 private int model;
 
 public Car(){
  System.out.println("Car created with default constructor");
  this.brand = "";
  this.color = "";
  this.model = 2000;
 }
 
 public Car(String _brand,String _color,int _model){
  System.out.println("Car created with specific constructor");
  this.brand = _brand;
  this.color = _color;
  this.model = _model;
 }
 
 public String getBrand() {
  return brand;
 }

 public void setBrand(String brand) {
  this.brand = brand;
 }

 public String getColor() {
  return color;
 }

 public void setColor(String color) {
  this.color = color;
 }

 public int getModel() {
  return model;
 }

 public void setModel(int model) {
  this.model = model;
 }

}

تلاحظون أن الدوال بسيطة جداا وغالبا ما نسمي دوال الوصول getColor او getModel .... و دوال التغيير setColor أو setModel ....لكن يمكننا أن نسميها ما نشاء لكن لاحترافية أكبر و توحيد للمصطلحات بين المبرمجين نستخدم المصططلحات المتعارف عليها....

الآن بقي أن نرى كيف نستخدمها خارج الفئة :

public class MainClass {

   public static void main(String args[]) {
      Car car1 = new Car();
      Car car2 = new Car("Mercedes", "Black", 2009);
      
      car1.setColor("red");
      car1.setModel(1987);
      
      System.out.println("the color of car1 is "+car1.getColor());
      System.out.println("the model of car1 is "+car1.getModel());
      
   }
}

وهذه هي النتيجة :

Car created with default constructor
Car created with specific constructor
the color of car1 is red
the model of car1 is 1987

هكذا نكون قد أنهينا هذا الدرس ولا تنسوا ان تتفاعلوا مع الموضوع.

دمتم في رعاية الله.

mardi 26 novembre 2013

أفكار تطبيقات اندرويد-التعديل على الصور

بسم الله الرحمان الرحيم:

 

تطبيق التعديل على الصور:


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

سأضع هنا بعض الأفكار لهذا التطبيق :

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

هناك العديد من الأفكار .... يكفي أن تطلقوا العنان لمخيلاتكم....Content

دمتم في رعاية الله.

lundi 25 novembre 2013

أفكار تطبيقات اندرويد-تطبيق رسم للأطفال

بسم الله الرحمان الرحيم:

 

تطبيق رسم للأطفال:

السلام عليكم و رحمة الله،من التطبيقات التي يقتنيها الكثير و التي نجد فيها القليل من الإبداع هي تطبيقات اندرويد رسم للأطفال،هذه التطبيقات التي تمكِّن للطفل الرسم على اللوح الإلكتروني،نجد القليل من المبرمجين من يضيف لمسات إبداعية يحتاجها الطفل في مثل هذه التطبيقات.

حاول أن تجعل تطبيقك يعطي للمستخدم الكثير من الإمكانات البسيطة الإستعمال و التي تبعد تطبيقك عن الروتين الذي يشهده هذا التطبيق .

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

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

تقبلوا تحياتي.

{jcomments on}

أفكار تطبيقات اندرويد - تطبيق Puzzle

بسم الله الرحمان الرحيم:

 

تطبيق Puzzle:

 

من التطبيقات التي نرى أنها تلاقي الكثير من الترحيب هي لعب البازل .

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

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

دمتم في رعاية الله.

{jcomments on}

أفكار تطبيقات اندرويد-تطبيق لموقعك

بسم الله الرحمان الرحيم:

 

تطبيق لموقعك:

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

بطبيعة الحال لابد من أخذ النقط التالية بعين الإعتبار :

  • أولا أن تجعل لموقعك نسخة موبايل لكي يبدو الموقع لائقا.
  • أن يكون موقعك متجددا،لكي لا يمل مستخدموا التطبيق و لكي يحسسوا أن هنا دماء جديدة تتحرك في كل حين.
  • لبرمجة تطبيقك،اجعله مجانيا
  • يكفي أن تضيف إلى تطبيقك مكون webview .
  • حاول أن يكون تطبيقك سريعا،لما لا تجعل لم لا يملكون أنترنت نسخة احتياطية لموقعك في التطبيق(إن كان ممكنا).

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

دمتم في رعاية الله.

dimanche 17 novembre 2013

مدخل إلى البرمجة الكائنية و مفاهيمها

بسم الله الرحمـــن الرحيم:
السلام عليكم و رحمة الله،الآن بعد ما تتطرقنا إلى بعضى المفاهيم الأساسية في لغة الجافا،ننتقل إلى ما يعتبر حلقة أساسية في البرمجة و هي البرمجة الكائنية أو Object Oriented Programming .

mercredi 13 novembre 2013

الدوال -الجزء 2

بسم الله الرحمـــن الرحيم :
السلام عليكم و رحمة الله،نلتقي مرة أخرى مع درس الدوال او الإجراءات كما يسميها البعض وسنتطرق لمفهوم surcharge باللغة الفرنسية أو overriding باللغة الإنجليزية.

mardi 5 novembre 2013

الدوال - Methods

بسم الله الرحمــــن الرحيم:
السلام عليكم و رحمة الله،من المفاهيم المهمة جدا و التي لابد منها،مفهوم الدوال methods،سنرى في هذا الدرس كيفية إنشاء دالة،و سنعطي أمثلة لدوال ننشئها بأنفسنا و دوال موجودة في حزمات ال java.

lundi 4 novembre 2013

الجداول ذات البعد الواحد


بسم الله الرحمــــن الرحيم:
السلام عليكم،مرحبا أصدقائي،كيف الحال؟مارأيكم ببعض الجداول الشهية؟ إنها وجبتنا لهذا اليوم.

الحلقات for و while

بسم الله الرحمـــــــن الرحيم :
السلام عليكم ورحمة الله و بركاته ، درسنا اليوم سيكون مع الحلقات ،فما معنى الحلقات و متى يمكن استعمالها.

الشروط


بسم الله الرحمــــن الرحيم:
السلام عليكم و رحمة الله،نلتقي،إخواني أخواتي،مع درس الشروط conditions،سنرى إن شاء الله صيغ الشروط المعروفة في java و نعطي أمثلة للتبسيط.

dimanche 3 novembre 2013

زر الإنتقاء-RadioButton


بسم الله الرحمان الرحيم:
السلام عليكم و رجمة الله،نلتقي اليوم أحبتي مع درس جديد مع RadioButton و RadioGroup و تعريف كل واحد منهما.

صندوق الإختيار-CheckBox


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

حقل النصوص EditText

بسم الله الرحمــــن الرحيم:
السلام عليكم و رحمة الله و بركاته، نلتقي اليوم أحبتي،مع مكون آخر يمكن من تفاعل المستعمل مع التطبيق و هو حقل النص EditText.

lundi 28 octobre 2013

سلسلة دروس لغة البرمجة جافا

السلام عليكم و رحمة الله
تجدون هنا سلسلة من الدروس في لغة البرمجة جافا و هي متسلسلة من تعريف للغة البرمجة جافا مرورا بتنصيب البرامج اللازمة ثم انتهاء بسلسلة من الدروس التي تدخل في عمق البرمجة .
نتمنى أن تجدوا ضالتكم في هذه دروس الجافا هذه و أن تتواصلوا في طرح استفساراتكم و أسئلتكم و حتى انتقاداتكم.
الجزء الأول : تقديم
 
تقديم
أول تطبيق لك بلغة الجافا 
المتغيرات و العمليات 
المدخلات-inputs
الشروط
الحلقات for و while
الجداول ذات البعد الواحد
الدوال - Methods
الدوال -الجزء 2



الجزء الثاني : البرمجةالكائنية


 
مدخل إلى البرمجة الكائنية و مفاهيمها
دوال الوصول و التغير
الوراثة





مازالت المواضيع في مرحلة الرفع....


dimanche 27 octobre 2013

الأزرار

بسم الله الرحمـــن الرحيم:
نصل إخواني إلى المرحلة "التفاعلية" مع تطبيقاتنا،وسنبدأ بالأزرار

mercredi 23 octobre 2013

GridLayout

بسم الله الرحمـــن الرحيم :
مرحبا إخواني،سنرى في درسنا اليوم تعريفا للــ GridLayout وطريقة استعماله ثم سنرى مثالا بسيطا نطبق فيه ما تعلمناه.

FrameLayout

السلام عليكم و رحمة الله:
مرحبا أحبتي،اليوم لنا موعد مع عنصر آخر مميز و هو FrameLayout ،سنرى بعض خصائصه في هذا الدرس إن شاء الله.

RelativeLayout

بسم اله الرحمــن الرحيم:
مرحبا بكم أحبتي،درسنا اليوم سيكون حول عنصر أخر وهو التصميم (أو الحاوية) RelativeLayout.

samedi 20 avril 2013

LinearLayout المكون

بسم الله الرحمــن الرحيم : السلام عليكم ورحمة الله و بركاته.
في هذا الدرس سنرى ،إن شاء الله، التصميم LinearLayout و كيفية استخدامه و بعض خصائصه.

lundi 25 mars 2013

سلسلة دروس تعلم برمجة الأندرويد

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

الجزء الأول : تقديم
 
مقدمة عن نظام الأندرويد
تحميل و تثبيت البرامج اللازمة
محاكي هواتف الأندرويد






  


الجزء الثاني :أول تطبيق
  
مفاهيم أساسية قبل البدء
أول مشروع أندرويد
الملفات المكونة لمشروع أندرويد
أول تطبيق لك مع الأندرويد





  


الجزء الثالث :التصاميم Layouts
  
LinearLayout المكون
GridLayout 
FrameLayout 
RelativeLayout 








 الجزء الرابع :مكونات الإدخال
  
الأزرار 
حقل النصوص EditText 
صندوق الإختيار-CheckBox
زر الإنتقاء-RadioButton
زر التبديل









samedi 9 mars 2013

الملفات المكونة لمشروع أندرويد

السلام عليكم و رحمة الله .
سنرى إخواني في هذا الدرس الملفات التي يتكون منها مشروعنا بالتفصيل و سنشرح كل ملف عى حدى . على بركة الله

أول مشروع أندرويد

السلام عليكم و رحمة الله.
سنمر الآن إلى كيفية إنشاء أول مشروع أندرويد، سنتتبع الخطوات التالية:

مفاهيم أساسية قبل البدء

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

mercredi 6 mars 2013

محاكي الأندرويد

السلام عليكم و رحمة الله و بركاته.
محاكي الاندرويد : Android Virtual Device
هو برنامج يقوم بمحاكاة الهواتف االتي تعمل تحت نظام الأندرويد أو برنامج الاندرويد للكمبيوتر، هذا يعني كله أنك لن تحتاج إلى هاتف أو لوح إلكتروني لكي تبرمج تطبيقا ما،لكن هذا لا

samedi 2 mars 2013

تحميل و تثبيت البرامج اللازمة

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

jeudi 28 février 2013

أول تطبيق لك مع الأندرويد

السلام عليكم ورحمة الله و بركاته.
في هذه الفقرة ، سنتطرق إلى التطبيق الأول و سنلقي نظرة على بعض المكونات التي تكون ال Activity ، كما سنقوم بتشغيل تطبيقنا على المحاكي.

سنفتح المشروع السابق الذي قمنا بإنشائه مسبقا، أو بإمكانكم إنشاء مشروع جديد باتباع الخطوات السابقة.
لنتأمل قليلا ملف التصميم (Layout) الذي يعطينا شكل الActivity و الذي يحدد مكوناتها. لنفتح الملف و تجدونه هنا res/layout :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
 
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
 
</RelativeLayout>
هناك نقط مهمة لابد من الوقوف عندها :
- كل ملف تصميم لابد من أن يضم نوعا من المكونات وهي التي ترث من الفئة ViewGroup وهي مكونات تحدد كيفية ترصيص (ترتيب) المكونات الأخرى.فهناك عدة طرق لذلك، فإذا استعملنا الRelativeLayout كما هو الحال عندنا، وهو يقوم بترصيص المكونات وفق إحداثياتها ونقصد بها المسافة الفاصلة بين المكون والحد الأعلى و المسافة الفاصلة بينه و بين الحد الأيسر

الRelativeLayout يعطينا حرية أكبر في ترصيص المكونات،لكنه ليس عمليا إلى حد ما،لأنه قد لا يكون التصميم ملائما لأنواع أخرى من الهواتف أو الألواح ...
يمكن كذلك أن نستعمل ال LinearLayout و الذي يقوم بترصيص المكونات إما أفقيا أو عموديا ، أو ال GridLayout الذي يرصص المكونات في شبكة و هناك عناصر أخرى سنراها في دروس قادمة.
- كل المكونات الأخرى يتم إضافتها داخل الوسم (Tag أو balise) التالي <RelativeLayout> </RealativeLayout> .
- المكون الذي تلاحظونه داخل الوسم السابق هو ال TextView وهو الذي يمكننا من أظهار نصوص و سلاسل نصية . بالنسبة للخصائص الخاصة بكل وسم مثل android:layout_width فهي تحدد عرض المكون وهذه الخاصية يمكن أن تأخذ القيم "wrap-content" أي أن يكون عرض المكون عرض محتواه،أو "match-parent" أي أن يكون عرض المكون هو عرض العنصر الذي يحتويه أو عرض أبيه  (لأن هناك علاقة تربط بين العناصر في الأندرويد و هي علاقة الأب و الإبن) وهناك قيمة أخرى و هي تحديد القيمة التي نريدها مثلا "100dp" و dp هي وحدة من الوحدات المستعملة كـ sp و mm و px وغيرها .ولكم أن تعاينوا كل وحدة على حدى في الصفحة الخاصة بنظام الأندرويد هنا.
كذلك نلاحظ الخاصية android:text وهي التي تحدد لنا النص الذي ستم إظهاره من طرف هذا المكون،وهذا النص محدد كما يلي : string/hello_world@ أي النص الذي تم تحديده في ملف XML تحت اسم (id أو معرف) hello_world ورابطه هو res/values/strings.xml .في هذا الملف يتم تحديد السلاسل النصية التي نريد استخدامها في تطبيقنا،وعندما نريد استخدامها نستدعيها بالطريقة السابقة.ربما يقول البعض لماذا لا نكتب النص مباشرة ؟ نعم يمكن ذلك ، لكن تصور معي لو أنك أردت أن يكون تطبيقك متعدد اللغات، أي بلغات مختلفة.ما العمل ؟ هل ستنشأ تطبيقا لكل لغة ؟.ليس عمليا أليس كذلك؟وهنا تأتي هذه التقنية التي يمكننا فقط إنشاء ملف XML آخر بنفس المعرفات وبلغة أخرى...
سنحاول ،بعد هذه المقدمة ، أن ننجز تطبيقا بسيطا هدفه هو تغيير النص الذي يظهره ال TextView عند اللمس زر. سنبقى مع نفس المشروع سنغير ملف التصميم ،بالضبط سنغير ال Viewgroup أي RelativeLayout إلى LinearLayout لكي نلاحظ الطريقة التي يتم بها ترصيص المكونات داخله.
سيكون ملف التصميم على هذه الشاكلة :
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="change"
        />

</LinearLayout>
هناك بعض التغييرات البسيطة و هي كالتالي :
تم استبدال RelativeLayout بالعنصر LinearLayout :بالنسبة للخصائص layout_width و layout_height هي فقط لتحديد عرض و ارتفاع المكون.أما بالنسبة للخاصية orientation فهي لتحديد اتجاه ترصيص المكونات التي سيضمها LinearLayout ، وهذه الخاصية تأخذ القيمتين vertical (ترصيص المكونات عموديا أي مكون فوق مكون) أو horizontal (ترصيص المكونات أفقيا أي مكون بجانب مكون).
تم إضافة خاصية جديدة للمكون TextView و هي android:id والقيمة التي أعطيناها للخاصية هي textview ، يمكنكم وضع ما شئتم،وهذه الخاصية تحدد اسما خاصا بالمكون ومن خلاله يمكن استدعاءه برمجيا.سنرى ذلك في ما سيأتي.
تم إضافة مكون آخر هو المكون Button أي الزر وتم تحديد اسمه(id) والعرض والإرتفاع و النص الذي سيكتب على الزر.
بالنسبة للتصميم سيكون كما يلي :

الآن،بعدما قمنا بإعداد التصميم ، سنمر إلى الجانب البرمجي.لنفتح الملف الذي يحتوي على الفئة الرئيسية (Class) ، و سنعرف متغيرين الأول للزر الذي أضفناه(Button) و الثاني ل (TextView) :
package com.barmeej.android.firstapp;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

 //التصريح بالمتغيرات
 private Button myButton;
 private TextView myTextView;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //تهيئة المتغيرات
        myButton = (Button)findViewById(R.id.button);
        myTextView = (TextView)findViewById(R.id.textview);
        //عند الضغط على الزر يتم تنفيذ ما يلي
        myButton.setOnClickListener(new OnClickListener() {
   
   @Override
   public void onClick(View v) {
    //TextView نغير النص في ال
    myTextView.setText("النص الجديد");
   }
  });
        
    }
    
}

الكود بسيط للغاية،قمنا بتعريف المتغيرين myButton و myTextView و قمنا بربطهما بالزر و TextView (الذين قمنا بإضافتهما لتصميم التطبيق) ، وهنا يأتي دور المعرف (id) حيث بواسطته نربط بين المتغير myButton و الزر في التصميم.
عند لمس الزر يتم تنفيذ السطر البرمجي
myButton.setOnClickListener(new OnClickListener() {
   
   @Override
   public void onClick(View v) {
    //TextView نغير النص في ال
    myTextView.setText("النص الجديد");
   }
  });
يمكنكم تشغيل التطبيق في المحاكي و عند الضغط على الزر سيتغير النص hello world إلى نص جديد كما في الصورة :
إذن الخلاصة التي يمكن أن نخرج بها من تطبيقنا الأول هي أن أول شيئ يمكن البدء به هو إنشاء تصميم تكون المكونات فيه معرفة بمعرٌفات (id) يتم بواسطتها ربط هذه المكونات بالمتغيرات البرمجية التي يمكننا من خلالها التحكم في هذه المكونات ...

مقدمة عن نظام الأندرويد


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