شرح الاداة SeekBar في الإندرويد

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

في Android ، يعد SeekBar امتدادًا لـ ProgressBar الذي يضيف إبهامًا قابل للسحب ، ويمكن للمستخدم لمس الإبهام والسحب إلى اليسار أو اليمين لتعيين قيمة التقدم الحالي.

SeekBar في Android

يعد SeekBar أحد عناصر واجهة المستخدم المفيدة جدًا في Android والذي يسمح باختيار قيم عدد صحيح باستخدام واجهة مستخدم طبيعية. مثال على SeekBar هو التحكم في سطوع جهازك والتحكم في مستوى الصوت.

ملاحظة مهمة: سمة SeekBar هي نفسها ProgressBar والفرق الوحيد هو أن المستخدم يحدد التقدم عن طريق تحريك شريط التمرير (الإبهام) في SeekBar. لإضافة شريط بحث إلى ملف تخطيط ( XML ) ، يمكنك استخدام عنصر <SeekBar>.

كود SeekBar في XML :

<SeekBar
    android:id="@+id/simpleSeekBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />
  

كيفية إضافة مستمع لإخطار التغييرات في SeekBar :

SeekBar.OnSeekBarChangeListener هو مستمع يستخدم كإستدعاء يقوم بإعلام العميل عند تغيير مستوى تقدم شريط البحث. يمكن استخدام هذا المستمع لكل من التغييرات التي بدأها المستخدم (في ملف xml أو فئة جافا ) بالإضافة إلى التغييرات البرمجية.

seekBarInstanceVariable.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {…} – 

 - تُستخدم هذه الطريقة لإعلام المستخدم بالتغييرات / الإجراءات في SeekBar.

الأساليب التي يجب تنفيذها Methods Needs To Be Implemented :

في شريط البحث للحصول على التغييرات قيد التقدم ، نحتاج إلى تنفيذ ثلاث طرق مجردة. فيما يلي وصف تفصيلي لهذه الطرق الثلاث:

1. public void onProgressChanged (SeekBar lookBar، int progresValue، boolean fromUser) {…} -
سيتم استدعاء أسلوب المستمع هذا إذا تم إجراء أي تغيير في SeekBar.

2. public void onStartTrackingTouch (SeekBar SeekBar) {…} -
سيتم استدعاء أسلوب المستمع هذا في بداية حدث اللمس للمستخدم. كلما لمس المستخدم الإبهام لسحب هذه الطريقة تلقائيًا.

3. public void onStopTrackingTouch (SeekBar SeekBar) {…} -
سيتم استدعاء أسلوب المستمع هذا في نهاية حدث اللمس للمستخدم. عندما يتوقف المستخدم عن سحب الإبهام ، سيتم استدعاء هذه الطريقة تلقائيًا.

getMax ():

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

SeekBar simpleSeekBar = (SeekBar) findViewById(R.id.simpleSeekBar); // initiate the Seek bar

    int maxValue=simpleSeekBar.getMax(); // get maximum value of the Seek bar
  

getProgress() :

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

SeekBar simpleSeekBar=(SeekBar)findViewById(R.id.simpleSeekBar); // initiate the Seek bar

    int seekBarValue= simpleSeekBar.getProgress(); // get progress value from the Seek bar
  

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

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

1. معرف id :  سمة معرف تحدد SeekBar بشكل فريد.

<SeekBar
    android:id="@+id/simpleSeekBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" /> <!-- id of a Seek bar used to uniquely identify it-->

2.  السمة max : max في SeekBar تحدد الحد الأقصى الذي يمكن أن تستغرقه. يجب أن يكون عددًا صحيحًا مثل 10 ، 20 ، 100 ، 200 إلخ. يمكننا تعيين القيمة القصوى في ملف XML وكذلك في فئة java. بشكل افتراضي ، يأخذ SeekBar أقصى قيمة 100.

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

<SeekBar
    android:id="@+id/simpleSeekBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:max="150"/><!-- set 150 maximum value for the progress -->
  

ماكس في الروبوت سيكبار

تحديد القيمة القصوى لتقدم SeekBar في فئة Java:

/*Add in Oncreate() funtion after setContentView()*/
    SeekBar simpleSeekBar=(SeekBar) findViewById(R.id.simpleSeekBar); // initiate the Seekbar
    simpleSeekBar.setMax(150); // 150 maximum value for the Seek bar
  

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

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

<SeekBar
    android:id="@+id/simpleSeekBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:max="200"
    android:progress="50"/><!-- set 150 maximum value for the progress -->
  

التقدم في SeekBar Android

إعداد التقدم في Java Class:

SeekBar simpleSeekBar=(ProgressBar) findViewById(R.id.simpleSeekBar); // initiate the progress bar

    simpleSeekBar.setMax(200); // 200 maximum value for the Seek bar

    simpleSeekBar.setProgress(50); // 50 default progress value
  

4. progressDrawable:  يتم استخدام سمة drawable التقدم في Android لتعيين xml القابل للرسم المخصص لوضع التقدم لشريط البحث. يتم استخدام التقدم القابل للرسم عندما نحتاج إلى استخدام تقدم مخصص لشريط البحث.

أدناه قمنا بتعيين التدرج المخصص القابل للرسم لوضع التقدم في شريط البحث.

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

<SeekBar
    android:id="@+id/simpleSeekBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:max="200"
    android:progress="50"
    android:progressDrawable="@drawable/custom_progress"/><!-- set custom progress drawable for the progress -->
  

الخطوة 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="#f00"
    android:useLevel="true" />
    </shape>
    </item>

    </layer-list>

ProgressDrawable في SeekBar Android

5. غير محدد indeterminate :  غير محدد هي سمة مستخدمة في android لتمكين الوضع غير المحدد لشريط البحث. في هذا الوضع يدل على seekbar لدوري الرسوم المتحركة دون مؤشرا على التقدم. يتم استخدام هذا الوضع في التطبيق عندما لا نعرف مقدار العمل الذي تم إنجازه. هنا سيتم إخفاء التقدم الفعلي عن المستخدم.

أدناه نضع غير المحدد على صحيح.

<SeekBar
    android:id="@+id/simpleSeekBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:max="200"
    android:indeterminate="true"/><!-- set custom progress drawable for the progress -->
  

غير محدد في SeekBar Android

6. الخلفية background :  يتم استخدام سمة الخلفية لشريط البحث لتعيين الخلفية. يمكننا تعيين لون أو رسم في خلفية شريط البحث. يمكننا أيضًا ضبط لون الخلفية في فئة JAVA.

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

<SeekBar
    android:id="@+id/simpleSeekBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:max="200"
    android:indeterminate="true"
    android:background="#0F0"/><!-- set green color in the background of seek bar-->
  

الخلفية في SeekBar Android

تعيين خلفية SeekBar في فئة Java:

SeekBar simpleSeekBar=(SeekBar)findViewById(R.id.simpleSeekBar); // initiate the seek bar

    simpleSeekBar.setBackgroundColor(Color.GREEN); // green background color for the seek bar

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

  •  padding إلى اليمين: يتم استخدام خاصية padding right لتعيين المساحة المتروكة من الجانب الأيمن من شريط البحث .
  • paddingLeft: يتم استخدام خاصية padding left لتعيين المساحة المتروكة من الجانب الأيسر من شريط البحث .
  • paddingTop: يتم استخدام الخاصية padding top لتعيين المساحة المتروكة من الجانب العلوي من شريط البحث .
  • paddingBottom: padding bottom attribute is used to set the padding from the bottom side of the Seek bar.
  • Padding: padding attribute is used to set the padding from the all side’s of the Seekbar.

Below we set the 20dp padding from the top of the Seek bar.

<SeekBar
    android:id="@+id/simpleSeekBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:max="200"
    android:progress="150"
    android:background="#34A853"
    android:paddingTop="40dp"/><!-- set  20dp padding from the top of the seek bar-->

الحشو في SeekBar Android

8. thumbالإبهام: تُستخدم سمة الإبهام في شريط البحث لرسم إبهام على شريط البحث. يمكننا استخدام صورة أو رسم للإبهام. يوجد أدناه مثال على رمز قمنا فيه بتعيين رمز قابل للرسم لإبهام شريط البحث. قم أولاً بتنزيل رمز الإبهام من هنا وحفظه في مجلد قابل للرسم لمشروعك. يمكنك أيضًا النقر فوق الرمز أدناه ثم تنزيله:

رمز الإبهام

<SeekBar
    android:id="@+id/simpleSeekBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:max="200"
    android:progress="100"
    android:thumb="@drawable/thumb"/><!-- set  a thumb drawable icon for the seek bar-->
  


الإبهام في SeekBar Android


SeekBar مثال  في  Android Studio :

Example 1: In the below example of 

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

ملاحظة مهمة: لا تفوت المثال الثاني من Custom SeekBar في Android والذي تمت مناقشته مباشرة بعد هذا المثال.

Download Code ?

مثال SeekBar Android

الخطوه  1: قم بانشاء مشروع جديد بالاسم  SeekBarExample

Step 2: افتح  res -> layout -> activity_main.xml (or) main.xml واضف الكود التالي  :

In this step we open an xml file and add the code for displaying a seekbar by using its different attributes like max, default progress and few more.

<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">

    <SeekBar
    android:id="@+id/simpleSeekBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:max="200"
    android:progress="60"
    />

    </RelativeLayout>

Step 3: افتح  src -> package -> MainActivity.java

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

   

package example.gb.seekbarexample;

    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.support.v7.widget.ButtonBarLayout;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.SeekBar;
    import android.widget.Button;
    import android.widget.Toast;

    public class MainActivity extends AppCompatActivity {

    Button submitButton;
    SeekBar simpleSeekBar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // initiate  views
    simpleSeekBar=(SeekBar)findViewById(R.id.simpleSeekBar);
    // perform seek bar change listener event used for getting the progress value
    simpleSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
    int progressChangedValue = 0;

    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    progressChangedValue = progress;
    }

    public void onStartTrackingTouch(SeekBar seekBar) {
    // TODO Auto-generated method stub
    }

    public void onStopTrackingTouch(SeekBar seekBar) {
    Toast.makeText(MainActivity.this, "Seek bar progress is :" + progressChangedValue,
    Toast.LENGTH_SHORT).show();
    }
    });

    }


    }

Custom vertical SeekBar Example In Android Studio:

 

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

.  Download Code ?

مثال على شريط البحث المخصص android

Step 1: Create a new project and name it SeekBarExample

Step 2: Open res -> layout -> activity_main.xml (or) main.xml and add following code:

In this step we open xml file and add the code for displaying a vertical seekbar by using its different attributes like max, default progress etc. In this xml for displaying a vertical seekbar we used a rotational attribute and set 270 value for that.

<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">

    <SeekBar
    android:id="@+id/customSeekBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:max="200"
    android:progress="40"
    android:thumb="@drawable/thumb_icon"
    android:rotation="270"
    android:progressDrawable="@drawable/custom_progress"/>

    </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:useLevel="true"
    android:startColor="#560" 
    android:endColor="#454455"/>
    </shape>
    </item>
    </layer-list>
  

الخطوة 4: افتح src -> package -> MainActivity. جافا

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

package example.gb.seekbarexample;

    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.SeekBar;
    import android.widget.Button;
    import android.widget.Toast;

    public class MainActivity extends AppCompatActivity {

    Button submitButton;
    SeekBar customSeekBar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // initiate  views
    customSeekBar =(SeekBar)findViewById(R.id.customSeekBar);
    // perform seek bar change listener event used for getting the progress value
    customSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
    int progressChangedValue = 0;

    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    progressChangedValue = progress;
    }

    public void onStartTrackingTouch(SeekBar seekBar) {
    // TODO Auto-generated method stub
    }

    public void onStopTrackingTouch(SeekBar seekBar) {
    Toast.makeText(MainActivity.this, "Seek bar progress is :" + progressChangedValue,
    Toast.LENGTH_SHORT).show();
    }
    });

    }


    }