بسم الله الرحمن الرحيم
أضافة ميزة (المؤقت) أو العداد التنازلي من الأشياء المهمة لتطبيقات (الألغاز) و (الأسئلة) و سوف تكون أضافة جميلة إذا قمت بأضافتها على تطبيقك من أجل زيادة حماس المستخدم اثناء استخدام التطبيق و لكي لا يشعر بالملل
نبدأ الشرح
أولاً يجب علينا عمل import لمكتبة (المؤقت) كما في الأمر التالي :
import android.os.CountDownTimer;
و الأوامر التي يحتويها كلاس العداد التنازلي هي :
- synchronized final CountDownTimer start() : و هذه الميثود تستدعى عندما يبدأ العداد التنازلي .
- synchronized final void cancel() : و هذه الميثود تستخدم لإيقاف العداد التنازلي .
- abstract void onFinish() : تستدعى هذه الميثود عن انتهاء الوقت .
- abstract void onTick(long millisUntilFinished) : تستخدم لتنفيذ أوامر معينة خلال عمل العداد التنازلي
و أيضاً لدينا (الكونسركتور) التالي الذي سوف نحدد من خلاله المدة الزمنية للمؤقت
CountDownTimer(long millisInFuture, long countDownInterval)
و سوف نرى الأن من خلال الشرح كيف نستخدم الأوامر السابقة :
ثانياً ملف الليوات activity_main.xml :
و هو بسيط يحتو على (بروغرس بار ) يظهر لنا الوقت و لدينا أيضاً أزرار , الأول سوف نستخدمه لبدء العداد التنازلي , و الثاني سوف يكون لإيقاف العداد التنازلي
<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:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <ProgressBar android:id="@+id/progressBar" style="?android:attr/progressBarStyleHorizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:indeterminate="false" android:max="10" android:minHeight="50dp" android:minWidth="200dp" android:progress="0" android:layout_centerVertical="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Start Timer" android:id="@+id/button" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="61dp" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Stop Timer" android:id="@+id/button2" android:layout_centerHorizontal="true" android:layout_marginTop="46dp" android:layout_below="@+id/progressBar" /> </RelativeLayout>
ثالثاً ملف MainActivity.java
و الذي يحتوي على الأكود كاملة و فوق كل كود يوجد شرح أيضاً
package com.andrody.countdowntimer; import android.os.CountDownTimer; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.ProgressBar; import android.widget.TextView; public class MainActivity extends AppCompatActivity { ProgressBar progressBar; Button start_timer,stop_timer; MyCountDownTimer myCountDownTimer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // هنا قمنا بربط الأزرار و البروغرس بار مع الليوات progressBar=(ProgressBar)findViewById(R.id.progressBar); start_timer=(Button)findViewById(R.id.button); stop_timer=(Button)findViewById(R.id.button2); // و هنا عند الضغط على الزر يبدأ العداد التنازلي start_timer.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //و هنا المدة الزمنية للعداد التنازلي من 10 ثواني إلى 1 ثانية و الرقم موضوع بالميلي ثانية myCountDownTimer = new MyCountDownTimer(10000, 1000); myCountDownTimer.start(); } }); // و هنا عند الضغط على هذا الزر يتوقف العداد التناازلي stop_timer.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { myCountDownTimer.cancel(); } }); } // و هنا ربط العداد التنازلي مع البروغرس بار public class MyCountDownTimer extends CountDownTimer { public MyCountDownTimer(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); } @Override public void onTick(long millisUntilFinished) { int progress = (int) (millisUntilFinished/1000); progressBar.setProgress(progressBar.getMax()-progress); } @Override public void onFinish() { finish(); } } }
و هكذا نكون قد أنتهينا من هذا الشرح البسيط
لا تنسو لأشتراك في صفحتنا على الفيس بوك لكي تصلكم شروحاتنا الجديدة
بارك الله فيك اخى الكريم
عندى سؤال لو سمحت .. ياريت تقولى ايه الخطوات اللى اتعمل بيها لعبه وصله الشهيرة ع المتجر
الادوات المسخدمه ايه هى وشكرا لك
لو سمحتو نريد اكواااد جاهزة لبرنامج MPBOROPO برنامج التحكم بالندرويد
شرح فعلا مميز ورائع يستحق التعليق والجهد المبذول فيه