في عصر الهواتف الذكية، أصبحت تطبيقات الأندرويد من بين الأدوات الأساسية التي يعتمد عليها ملايين المستخدمين يوميًا في مختلف المجالات مثل التعليم، الصحة، الترفيه، التجارة، والخدمات. تعلم كيفية إنشاء تطبيق على أندرويد لم يعد مقتصرًا على المبرمجين المحترفين فقط، بل أصبح في متناول كل من يملك فكرة ويرغب في تحويلها إلى تطبيق عملي يعمل على الهواتف والأجهزة اللوحية.
في هذا الدليل التعليمي، سنستعرض خطوة بخطوة كيفية إنشاء تطبيق بسيط بلغة Kotlin باستخدام بيئة التطوير الرسمية Android Studio. سنتناول جميع المراحل الأساسية من التثبيت وحتى تشغيل التطبيق على جهاز حقيقي أو محاكي.
كيفية إنشاء تطبيق تحويل القياسات على أندرويد من البداية للمبتدئين
في هذا الدرس، سنتعلم كيف نصنع تطبيقًا بسيطًا على هواتف أندرويد يقوم بتحويل القياسات (مثل الطول من متر إلى كيلومتر، أو الحرارة من مئوية إلى فهرنهايت). هذا النوع من التطبيقات يُستخدم كثيرًا في الحياة اليومية، وسنبدأ من الصفر كأنك لم تبرمج من قبل.
الخطوة 1: ما الذي نحتاج إليه؟
لكي نبدأ، نحتاج إلى:
- جهاز كمبيوتر (ويندوز أو ماك أو لينكس).
- الاتصال بالإنترنت.
- برنامج Android Studio، وهو البرنامج الرسمي لإنشاء تطبيقات أندرويد.
تحميل Android Studio
- اذهب إلى الموقع الرسمي: developer.android.com/studio
- اضغط على زر التحميل حسب نظام التشغيل.
- ثبّت البرنامج كأنك تثبّت أي برنامج آخر.
الخطوة 2: إنشاء مشروع جديد
- افتح Android Studio.
- اختر New Project (مشروع جديد).
- اختر القالب Empty Activity، وهو مشروع فارغ ببنية بسيطة.
- أدخل اسم التطبيق مثل: Measurement Converter.
- اختر لغة البرمجة: Kotlin.
- اضغط "Finish" وانتظر قليلاً حتى يتم تحميل المشروع.
الخطوة 3: تصميم شكل التطبيق (واجهة المستخدم)
واجهة المستخدم هي ما يراه المستخدم عندما يفتح التطبيق. لتصميمها:
- افتح الملف
res/layout/activity_main.xml
. - اختر وضع Design لرؤية الواجهة بشكل بصري.
- اسحب وأفلت العناصر التالية:
- EditText: لإدخال الرقم المراد تحويله.
- Spinner: لاختيار الوحدة الأصلية (مثلاً: متر).
- Spinner: لاختيار الوحدة التي نريد التحويل إليها (مثلاً: كيلومتر).
- Button: زر مكتوب عليه "تحويل".
- TextView: مكان لعرض النتيجة.
نصيحة:
يمكنك وضع العناصر واحدة تحت الأخرى، وتغيير ألوانها أو الخط إذا رغبت من الخصائص على الجهة اليمنى.
الخطوة 4: ربط التصميم بالبرمجة
نذهب الآن إلى الملف MainActivity.kt
وهو مكان كتابة الكود البرمجي. وسنقوم بالتالي:
- نربط كل عنصر من الواجهة باسمه البرمجي.
- نكتب دالة تقوم بالتحويل بين الوحدات.
- نضيف أمرًا عندما يُضغط الزر، ينفذ التحويل ويعرض النتيجة.
مثال على دالة تحويل الطول:
fun convertLength(value: Double, from: String, to: String): Double {
val meters = when (from) {
"متر" -> value
"كيلومتر" -> value * 1000
"سنتيمتر" -> value / 100
else -> 0.0
}
return when (to) {
"متر" -> meters
"كيلومتر" -> meters / 1000
"سنتيمتر" -> meters * 100
else -> 0.0
}
}
الخطوة 5: تجربة التطبيق على الهاتف أو المحاكي
- اضغط على زر "Run" الأخضر في الأعلى.
- اختر "Emulator" لتشغيل محاكي جهاز أندرويد، أو صِل هاتفك بكابل USB.
- افتح التطبيق، جرّب إدخال رقم، اختر وحدات، واضغط "تحويل".
الخطوة 6: إضافة تحسينات
- إضافة وحدات جديدة مثل الوزن (كيلوغرام، باوند) أو الحرارة (مئوي، فهرنهايت).
- تغيير شكل التصميم ليكون أجمل.
- إضافة لغة عربية في التطبيق.
الخطوة 7: توليد ملف APK وتثبيته
- من القائمة العلوية، اختر Build ثم Build APK.
- عند الانتهاء، اضغط على "Locate" لفتح مكان ملف APK.
- انسخ الملف إلى هاتفك وثبّته كتطبيق عادي.
لقد تعلمت الآن كيف تنشئ تطبيق أندرويد بسيطًا من البداية دون خبرة سابقة. كل ما تحتاجه هو الصبر والتجربة. يمكنك تطوير التطبيق ليصبح أكثر ذكاءً، أو إنشاء تطبيقات أخرى مشابهة مثل تحويل العملات أو الآلات الحاسبة.
إذا أردت نسخة جاهزة للكود مع كل شيء مرتب، يمكنني تزويدك بها.
كيفية إنشاء تطبيق اختبارات قواعد اللغة الإنجليزية على أندرويد
في هذا الدرس، سنتعلم كيفية إنشاء تطبيق بسيط لتقديم اختبارات قواعد اللغة الإنجليزية. سيتكوّن التطبيق من مجموعة من الأسئلة متعددة الاختيارات (اختيار من متعدد)، ويعرض للمستخدم نتيجته بعد الإجابة.
الخطوة 1: ما الذي نحتاج إليه؟
نفس الخطوات المشروحة في المثال الأول: كمبيوتر + Android Studio + اتصال بالإنترنت.
الخطوة 2: إنشاء مشروع جديد
تمامًا كما في المثال الأول، ننشئ مشروع جديد في Android Studio باستخدام Empty Activity بلغة Kotlin.
الخطوة 3: تصميم شكل التطبيق (واجهة المستخدم)
في هذا النوع من التطبيقات، نحتاج إلى تصميم يحتوي على:
- TextView: لعرض السؤال الحالي.
- RadioGroup يحتوي على RadioButton: لكل خيار من الخيارات (A - B - C - D).
- Button: زر "تحقّق" أو "التالي".
- TextView: لعرض النتيجة النهائية بعد الانتهاء.
الخطوة 4: ربط التصميم بالبرمجة (شرح مفصل للمبتدئين)
الوصول إلى عناصر الواجهة من الكود
كل عنصر من عناصر الواجهة (السؤال، الخيارات، الزر) يجب أن نصل إليه برمجيًا من كود كوتلن. ولكي نفعل ذلك، يجب أن نمنحه معرّفًا (id) في ملف activity_main.xml
، مثل:
<TextView android:id="@+id/questionText" ... />
<RadioGroup android:id="@+id/optionsGroup">
<RadioButton android:id="@+id/optionA" ... />
<RadioButton android:id="@+id/optionB" ... />
<RadioButton android:id="@+id/optionC" ... />
<RadioButton android:id="@+id/optionD" ... />
</RadioGroup>
<Button android:id="@+id/nextButton" ... />
<TextView android:id="@+id/scoreText" ... />
تعريف العناصر داخل ملف MainActivity.kt
في الملف MainActivity.kt
، نكتب في الدالة onCreate
التالي:
val questionText = findViewById<TextView>(R.id.questionText)
val optionsGroup = findViewById<RadioGroup>(R.id.optionsGroup)
val optionA = findViewById<RadioButton>(R.id.optionA)
val optionB = findViewById<RadioButton>(R.id.optionB)
val optionC = findViewById<RadioButton>(R.id.optionC)
val optionD = findViewById<RadioButton>(R.id.optionD)
val nextButton = findViewById<Button>(R.id.nextButton)
val scoreText = findViewById<TextView>(R.id.scoreText)
إنشاء الأسئلة في شكل بيانات
ننشئ قائمة تحتوي على الأسئلة والخيارات الصحيحة. يمكن أن نستخدم كائنات (Objects) أو قائمة بسيطة:
data class Question(
val text: String,
val options: List<String>,
val correctIndex: Int
)
val questions = listOf(
Question("Choose the correct sentence:", listOf("He go to school", "He goes to school", "He going to school", "He gone to school"), 1),
Question("Which one is past tense?", listOf("Run", "Runs", "Ran", "Running"), 2),
...
)
عرض السؤال الحالي
نكتب دالة تقوم بتحديث الشاشة لعرض السؤال الحالي:
var currentQuestion = 0
var score = 0
fun showQuestion(index: Int) {
val q = questions[index]
questionText.text = q.text
optionA.text = q.options[0]
optionB.text = q.options[1]
optionC.text = q.options[2]
optionD.text = q.options[3]
optionsGroup.clearCheck()
}
التحقق من الإجابة والانتقال للسؤال التالي
نستخدم الزر للتحقّق من الإجابة وإظهار السؤال التالي:
nextButton.setOnClickListener {
val selectedId = optionsGroup.checkedRadioButtonId
val selectedIndex = when (selectedId) {
R.id.optionA -> 0
R.id.optionB -> 1
R.id.optionC -> 2
R.id.optionD -> 3
else -> -1
}
if (selectedIndex == questions[currentQuestion].correctIndex) {
score++
}
currentQuestion++
if (currentQuestion < questions.size) {
showQuestion(currentQuestion)
} else {
questionText.text = "Your score: $score / ${questions.size}"
optionsGroup.visibility = View.GONE
nextButton.visibility = View.GONE
}
}
في نهاية onCreate، لا تنس تشغيل أول سؤال
showQuestion(0)
الخطوة 5: تجربة التطبيق
كما في المثال السابق: تشغيله على المحاكي أو هاتفك الحقيقي.
الخطوة 6: تحسينات مقترحة
- إضافة صفحة بداية تحتوي على اسم المستخدم.
- إضافة عدّاد للوقت لكل سؤال.
- إضافة قاعدة بيانات لحفظ نتيجة المستخدم.
- دعم الترجمة للعربية.
الخطوة 7: توليد ملف APK
نفس الخطوات تمامًا كما في المثال الأول.
بهذا تكون قد أنشأت تطبيقًا تفاعليًا بسيطًا لاختبار قواعد اللغة الإنجليزية. يمكنك الاستمرار في تطويره بإضافة أسئلة من مستويات مختلفة، أو حتى تقسيم الأسئلة حسب القواعد (مثل المضارع البسيط، الماضي، المبني للمجهول...).
التعليقات