شرح ProgressBar في الإندرويد

برنامج ProgressBar التعليمي مع مثال في Android Studio

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

ProgressBar في Android
ملاحظة هامة:  A شريط التقدم يمكن أيضا أن تكون غير محددة. في هذا الوضع على شريط التقدم يظهر دوري الرسوم المتحركة دون مؤشرا على التقدم. يتم استخدام هذا الوضع في التطبيق عندما لا نعرف مقدار العمل الذي يتعين القيام به.

لإضافة شريط تقدم إلى ملف تخطيط ( xml ) ، يمكنك استخدام عنصر < ProgressBar >. بشكل افتراضي ، يكون شريط التقدم عبارة عن عجلة دوارة (مؤشر غير محدد). للتغيير إلى شريط تقدم أفقي ، قم بتطبيق النمط الأفقي لشريط التقدم.

كود ProgressBar:

<ProgressBar
    android:id="@+id/simpleProgressBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
  

كود التقدم الأفقي Horizontal ProgressBar :

<ProgressBar
    android:id="@+id/simpleProgressBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"/>
  

الطرق والدوال الهامة المستخدمة في شريط التقدم ProgressBar :

1. getMax () - تُرجع القيمة القصوى لشريط التقدم

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

ProgressBar simpleProgressBar=(ProgressBar) findViewById(R.id.simpleProgressBar); // initiate the progress bar 
    int maxValue=simpleProgressBar.getMax(); // get maximum value of the progress bar
  

2. getProgress () - إرجاع قيمة التقدم الحالية

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

ProgressBar simpleProgressBar=(ProgressBar)findViewById(R.id.simpleProgressBar); // initiate the progress bar
    int progressValue=simpleProgressBar.getProgress(); // get progress value from the progress bar
  

سمات وخصائص ProgressBar في Android:

الآن دعنا نناقش السمات المهمة التي تساعدنا في تكوين شريط التقدم في ملف xml (التخطيط).

1. id:  id هي سمة تُستخدم لتعريف شريط التقدم بشكل فريد.

<ProgressBar
    android:id="@+id/simpleProgressBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"/>
  

2. max: max هي سمة مستخدمة في android لتحديد القيمة القصوى التي يمكن أن يستغرقها التقدم. يجب أن تكون قيمة عددية مثل 100 ، 200 وما إلى ذلك.

أدناه قمنا بتعيين 100 قيمة قصوى لشريط التقدم.

<ProgressBar
    android:id="@+id/simpleProgressBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"
    android:max="100" /><!--set 100 maximum value for the progress bar-->

قم بتعيين الحد الأقصى لقيمة ProgressBar في فئة Java:

ProgressBar simpleProgressBar=(ProgressBar) findViewById(R.id.simpleProgressBar); // initiate the progress bar
    simpleProgressBar.setMax(100); // 100 maximum value for the progress bar
  

ماكس في ProgressBar Android
3. التقدم progress :  التقدم هو سمة مستخدمة في android لتحديد قيمة التقدم الافتراضية بين 0 و max. يجب أن تكون قيمة عدد صحيح.

أدناه قمنا بتعيين القيمة القصوى 100 ثم قمنا بتعيين 50 تقدمًا افتراضيًا.

<ProgressBar
    android:id="@+id/simpleProgressBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:max="100"
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"
    android:progress="50"/><!--// 50 default progress value-->

التقدم في ProgressBar Android
تحديد قيمة تقدم ProgressBar في فئة Java:

ProgressBar simpleProgressBar=(ProgressBar)findViewById(R.id.simpleProgressBar); // initiate the progress bar
    simpleProgressBar.setMax(100); // 100 maximum value for the progress value
    simpleProgressBar.setProgress(50); // 50 default progress value for the progress bar
  

4. ProgressDrawable : يُعد التقدم القابل للرسم سمة مستخدمة في Android لتعيين الرسم المخصص لوضع التقدم.

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

الخطوة 1: أضف هذا الرمز في activity_main. xml أو main.xml داخل التخطيط.

<ProgressBar
    android:id="@+id/simpleProgressBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:max="100"
    android:progress="60"
    android:layout_marginTop="100dp"
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"
    android:progressDrawable="@drawable/custom_progress"/><!--custom progress drawable for progress mode-->
  

الخطوة 2: قم بإنشاء مورد قابل للرسم xml جديد في مجلد قابل للرسم وقم بتسميته custom_progress. أضف هنا الكود أدناه الذي ينشئ تأثير التدرج في شريط التقدم .

<?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item>
    <shape>
    <gradient
    android:endColor="#fff"
    android:startColor="#1f1"
    android:useLevel="true" />

    </shape>
    </item>


    </layer-list>

جاري الرسم: ProgressBar Android
5. الخلفية background :  تُستخدم سمة الخلفية لتعيين خلفية شريط التقدم. يمكننا تعيين لون أو رسم في خلفية شريط التقدم.

أدناه قمنا بتعيين اللون الأسود لخلفية شريط التقدم.

<ProgressBar
    android:id="@+id/simpleProgressBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:max="100"
    android:progress="50"
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"
    android:background="#000"/><!-- black background color for progress bar-->

الخلفية في ProgressBar
6. غير محدد indeterminate :  يتم استخدام سمة غير محددة في Android لتمكين الوضع غير المحدد. في هذا الوضع يظهر شريط التقدم في دوري الرسوم المتحركة دون مؤشرا على التقدم. يتم استخدام هذا الوضع في التطبيق عندما لا نعرف مقدار العمل الذي يتعين القيام به. في هذا الوضع لن يتم عرض العمل الفعلي.

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

<ProgressBar
    android:id="@+id/simpleProgressBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:max="100"
    android:progress="50"
    android:background="#000"
    android:padding="20dp" style="@style/Widget.AppCompat.ProgressBar.Horizontal"
    android:indeterminate="true"/><!--true value for indeterminate-->

غير محدد في ProgressBar Android
إعداد غير محدد من ProgressBar في فئة Java:

ProgressBar simpleProgressBar=(ProgressBar)findViewById(R.id.simpleProgressBar); // initiate the progress bar
    simpleProgressBar.setBackgroundColor(Color.BLACK); // black background color for the progress bar
  

7.  padding :  يتم استخدام خاصية padding لتعيين المساحة المتروكة من اليسار أو اليمين أو أعلى أو أسفل شريط التقدم.

  •  padding إلى اليمين : اضبط المساحة المتروكة من الجانب الأيمن من شريط التقدم .
  •  المساحة المتروكة إلى اليسار : اضبط المساحة المتروكة من الجانب الأيسر لشريط التقدم .
  • paddingTop:  اضبط المساحة المتروكة من الجانب العلوي لشريط التقدم .
  • paddingBottom:  اضبط المساحة المتروكة من الجانب السفلي لشريط التقدم .
  •  الحشوة : اضبط المساحة المتروكة من جميع جوانب شريط التقدم .

أدناه قمنا بتعيين حشوة 20dp من جميع جوانب شريط التقدم.

<ProgressBar
    android:id="@+id/simpleProgressBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:max="100"
    android:progress="50"
    android:background="#000"
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"
    android:padding="20dp"/><!--// 20dp padding from all the sides of the progress bar-->

الحشو في ProgressBar Android


مثال على ProgressBar في Android Studio:

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

تحميل الكود ؟

مثال على ProgressBar في Android Studio
الخطوة 1: قم بإنشاء مشروع جديد وقم بتسميته ProgressBarExample.

حدد ملف -> جديد -> مشروع جديد ... ثم املأ النماذج وانقر فوق الزر "إنهاء".

الخطوة 2: افتح res -> layout ->  activity_main.xml (أو) main.xml  وأضف الكود التالي:

في هذه الخطوة ، نفتح ملف 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: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">

    <ProgressBar
    android:id="@+id/simpleProgressBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:visibility="invisible"
    android:layout_centerHorizontal="true"/>

    <Button
    android:id="@+id/startButton"
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:text="Start"
    android:textSize="20sp"
    android:textStyle="bold"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="100dp"
    android:padding="10dp"
    android:background="#0f0"
    android:textColor="#fff"/>

    </RelativeLayout>

الخطوة 3: الآن افتح src -> package ->  MainActivity.java

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

package example.gb.progressbarexample;

    import android.graphics.Color;
    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.ProgressBar;
    import android.widget.Button;

    public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // initiate progress bar and start button
    final ProgressBar simpleProgressBar = (ProgressBar) findViewById(R.id.simpleProgressBar);
    Button startButton = (Button) findViewById(R.id.startButton);
    // perform click event on button
    startButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    // visible the progress bar
    simpleProgressBar.setVisibility(View.VISIBLE);
    }
    });
    }


    }

 

المخرجات :

الآن ابدأ تشغيل AVD في Emulator وقم بتشغيل التطبيق. انقر فوق زر البدء وسيتم عرض شريط التقدم على الشاشة.

إخراج مثال شريط التقدم


مثال على شريط التقدم الأفقي في Android Studio:

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

تحميل الكود ؟

مثال على شريط التقدم الأفقي في Android Studio
الخطوة 1: قم بإنشاء مشروع جديد وقم بتسميته ProgressBarExample .

حدد ملف -> جديد -> مشروع جديد ... ثم املأ النماذج وانقر فوق الزر "إنهاء".

الخطوة 2: افتح res -> layout ->  activity_main.xml (أو) main.xml  وأضف الكود التالي:

في هذه الخطوة ، نفتح ملف xml ونضيف الكود لعرض شريط تقدم أفقي باستخدام خاصية النمط والتقدم القابل للرسم 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:background="#000"
    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">

    <ProgressBar
    android:id="@+id/simpleProgressBar"
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="70dp"
    android:max="100"
    android:progress="0"
    android:progressDrawable="@drawable/custom_progress" />

    <Button
    android:id="@+id/startButton"
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="120dp"
    android:background="#0f0"
    android:padding="10dp"
    android:text="Start"
    android:textColor="#fff"
    android:textSize="20sp"
    android:textStyle="bold" />

    </RelativeLayout>

الخطوة 3:   قم بإنشاء ملف xml في drawable -> custom_progress.xml

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

<?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item>
    <shape>
    <gradient
    android:endColor="#fff"
    android:startColor="#1f1"
    android:useLevel="true" />

    </shape>
    </item>


    </layer-list>

الخطوة 4: افتح التطبيق -> الحزمة ->  MainActivity.java

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

package example.gb.progressbarexample;

    import android.app.Dialog;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.graphics.Color;
    import android.provider.Settings;
    import android.support.v7.app.AlertDialog;
    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.ProgressBar;
    import android.widget.Button;
    import android.widget.Toast;

    public class MainActivity extends AppCompatActivity {

    int progress = 0;
    ProgressBar simpleProgressBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // initiate progress bar and start button
    simpleProgressBar = (ProgressBar) findViewById(R.id.simpleProgressBar);
    Button startButton = (Button) findViewById(R.id.startButton);
    // perform click event on button
    startButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    // call a function
    setProgressValue(progress);

    }
    });
    }

    private void setProgressValue(final int progress) {

    // set the progress
    simpleProgressBar.setProgress(progress);
    // thread is used to change the progress value
    Thread thread = new Thread(new Runnable() {
    @Override
    public void run() {
    try {
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    setProgressValue(progress + 10);
    }
    });
    thread.start();
    }


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

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
    return true;
    }

    return super.onOptionsItemSelected(item);
    }
    }

انتاج:

الآن قم بتشغيل التطبيق في AVD ، انقر فوق زر البدء وسترى شريط تقدم أفقي.

مثال على شريط التقدم الأفقي في Android Studio


موضوع ذو صلة - ProgressDialog في Android

Android Progress Dialog هو واجهة مستخدم تعرض تقدم مهمة كما تريد أن ينتظر المستخدم حتى تكتمل المهمة السابقة المخططة ولهذا الغرض يمكنك استخدام مربع حوار التقدم . اقرأ برنامج Progressdialog التعليمي الخاص بنا مع مثال .

مثال على حوار التقدم في Android Studio

تعليقات