أندرويد: أهلا بالعالم (II)

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

من ضمن ما قمنا بإنشائه سابقا داخل ملف src هو كلاس جافا يحمل اسم MainActivity و الذي يحتوي على الشفرة المصدرية لتطبيقنا الأولي هذا الكلاس هو عبارة عن Activity المسؤول عن إظهار واجهة المستخدم ذات الإسم activity_main الموجودة داخل ملف layout و هو ما سيراه المستخدم.

عند فتح ملف MainActivity سنجد شيء مشابه لهذا:


package com.androcode.helloworld;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}

}

مسار الملف src\com\androcode\helloworld\MainActivity.java

هنا قمنا  بتعريف حزمة الكلاسات في السطر الأول و استيراد الكلاسات الضرورية بعدها, ثم بإعادة كتابة ميثود onCreate لأنها أول ما سينفذ عند تشغل التطبيق, و بواسطة العبارة  setContentView التي ستتولى إظهار واجهة المستخدم مع تعريفها بمكان ملف تصميم الواجهة على الشكل التالي R.layout.activity_main, الميثود التالي onCreateOptionsMenu نفس الشيء يتولى إظهار قائمة للمستخدم بعد الضغط على زر القائمة.

نأتي على تعريف R: ببساطة R هي عبارة عن كلاس ذاتي التحديث حيث يتولى إكليبس تغيير محتواه كلما أضفنا أو غيرنا شيئا من موارد (res) التطبيق, هذا المحتوى عبارة عن قيم تعريفية لبعض العناصر ليتسنى الوصول لها و استخدامها, و يمنع تعديله, كمثال تعريف واجهة المستخدم


public static final class layout {
public static final int activity_main=0x7f030000;
}

واجهة المستخدم تم تصميمها مبدئيا على نحو الشكل التالي:


<?xml version="1.0" encoding="utf-8"?>
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_centervertical="true"
tools:context=".MainActivity">

<textview
android:layout_centerhorizontal="true"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/hello_world" />

</relativelayout>

مسار الملف res\layout\activity_main.xml

العنصر textview سيظهر عبارة Hello World التي سيستدعيها من ملف القيم النصية(res/values) عن طريق R بواسطة الاختصار  string@

و أخيرا نأتي على ذكر الملف الذي وجوده ضروري و إلزامي, الملف الموجود في كل تطبيقات أندرويد بلا استثناء, ملف AndroidManifest.xml هو الأخر أيضا يحرر بواسطة لغة XML


<?xml version="1.0" encoding="utf-8"?>
<manifest android:versioncode="1"
android:versionname="1.0"
package="com.androcode.helloworld"
xmlns:android="http://schemas.android.com/apk/res/android">

<uses-sdk
android:minsdkversion="8"
android:targetsdkversion="16">

<application
android:allowbackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:label="@string/app_name"
android:name="com.androcode.helloworld.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN">
<category android:name="android.intent.category.LAUNCHER">
</category>
</action>
</intent-filter>
</activity>
</application>

</uses-sdk>
</manifest>

كما نرى هذا هو محتوى الملف الشهير فكل وسم مخصص لمهمة خاصة:

  • manifest: ترويسة الملف.
  • uses-sdk: تحديد إصدارة النظام التي سيعمل عليلها و أيضا الإصدارة الدنيا.
  • application: تعريف خصائص التطبيق.
  • activity: كل activity يحتويها تطبيقنا وجب تعريفها هنا بحديد مكانها عبر ذكر الحزمة ثم اسم الكلاس بواسطة خاصية name
  • intent-filter: إضافة فلاتر
  • action: عبارة عن فلتر و هنا هو مخصص لجعل الactivity المعرف هو الرئيسي عند تشغيل التطبيق
  • category: أيضا فلتر يصنف الactivity ضمن قائمة التطبيقات

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

Time limit is exhausted. Please reload CAPTCHA.