آموزش ProgressBar - در برنامه نویسی اندروید

شما می توانید پیشرفت یک کار را در اندروید از طریق ProgressBarها نشان دهید و باید بدانید ProgressBar به دو شکل قابل استفاده است. به چرخشی و خطی که میتواند پر شود. در این آموزش ما نوع چرخشی پروگرس بار را مورد بحث قرار خواهیم داد و نحوه استفاده از آن را با ذکر مثال بیان کرده ایم. Spinner برای نمایش پیشرفت آن دسته از وظایفی که زمان کل تکمیل آنها مشخص نیست استفاده می شود. برای استفاده از آن، فقط باید آن را در xml تعریف کرد و از آن استفاده کرد. به این صورت تعریف کنید:

<ProgressBar
   android:id="@+id/progressBar1"
   style="?android:attr/progressBarStyleLarge"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_centerHorizontal="true" />

پس از تعریف آن در xml، باید نمونه آن را در فایل جاوا از طریق کلاس ProgressBar دریافت کنید تا بتوانید تغییرات را روی آن اعمال کنید. به این شکل :

private ProgressBar spinner;
spinner = (ProgressBar)findViewById(R.id.progressBar1);

پس از آن می توانید آن را ناپدید کنید و در صورت نیاز از طریق متد setVisibility آن را برگردانید به این شکل :

spinner.setVisibility(View.GONE);
spinner.setVisibility(View.VISIBLE);

متدهای کلاس ProgressBar

به غیر از این متدها، متدهای دیگری نیز در کلاس ProgressBar تعریف شده است. که می توانید از آن برای مدیریت موثرتر و ایجاد تغییرات در progressBar از آن استفاده کنید.

متد و توضیحات ردیف
isIndeterminate()

با استفاده از این متد میتوانید مشخص کنید که آیا این ProgressBar در حالت نامشخص است یا خیر.

1
postInvalidate()

این متد باعث میشود در چرخه بعدی در حلقه, یک رویداد نامعتبر اتفاق بیفتد.

2
setIndeterminate(boolean indeterminate)

با استفاده از این متد میتوانید حالت نامشخص را برای این ProgressBar تغییر دهید.

3
invalidateDrawable(Drawable dr)

این متد Drawable مشخص شده را باطل می کند.

4
incrementSecondaryProgressBy(int diff)

با استفاده از این متد میتوانید پیشرفت ثانویه ProgressBar را به میزان مشخص شده افزایش دهید که باید در نظر داشته باشید مقدار صحیح باید به آن بدهید.

5
getProgressDrawable()

این متد drawable که ProgressBar در حال استفاده از آن میباشد را برمیگرداند.

6

مثال

در ادامه مثالی آورده ایم که نشان دهنده استفاده از ProgressBar برای مدیریت در حالت چرخی میباشد. با این مثال یک برنامه کاربردی اساسی ایجاد می کنید که به شما امکان می دهد با کلیک روی دکمه حالت چرخشی را در ProgressBar روشن کنید. برای آزمایش و تست مراحل زیر را دنبال کنید.

توضیحات مرحله
ابتدا یک پروژه جدید در اندروید استودیو با یک پکیج دلخواه ایجاد کنید و ادامه مراحل را دنبال کنید. 1
کدهای درون فایل MainActivity.class را مطابق کدهای که در پایین آورده ایم تغییر بدهید. 2
کدهای درون فایل activity_main.xml را مطابق کدهای که در پایین آورده ایم تغییر بدهید. 3
یک فایل xml ( نام انتخابی ما dra_shape می باشد) در پوشه drawable ایجاد کنید, این فایل حاوی اطلاعات شکل و چرخش ProgressBar است. 4
برنامه را بر روی یک تلفن واقعی یا شبیه ساز اجرا کنید و تست را انجام بدهید. 5

نمونه کدهای فایل MainActivity.java :

package com.foray.articlelib;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;

import androidx.appcompat.app.AppCompatActivity;


public class MainActivity extends AppCompatActivity {
    Button b1;

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

        b1=(Button)findViewById(R.id.button);
        spinner=(ProgressBar)findViewById(R.id.progressBar);
        spinner.setVisibility(View.GONE);

        b1.setOnClickListener(v -> spinner.setVisibility(View.VISIBLE));
    }
}

محتوای فایل activity_main.xml :

<?xml version="1.0" encoding="utf-8"?>
<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:padding="16dp"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:text="ProgressBar"
        android:textSize="25dp" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textview"
        android:layout_centerHorizontal="true"
        android:textColor="@color/black"
        android:text="7Cloner.com"
        android:textSize="25dp" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/imageView"
        android:layout_centerHorizontal="true"
        android:text="اجرا" />

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="150dp"
        android:layout_below="@+id/textView"
        android:layout_centerHorizontal="true"
        android:src="@drawable/abc" />

    <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/button"
        android:layout_alignStart="@+id/textview"
        android:layout_alignLeft="@+id/textview"
        android:layout_alignEnd="@+id/textView"
        android:layout_alignRight="@+id/textView"
        android:layout_alignParentBottom="true"
        android:progressDrawable="@drawable/dra_shape" />

</RelativeLayout>

اطلاعات فایل dra_shape.xml :

<?xml version="1.0" encoding="utf-8"?>
<rotate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="90"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="360">

    <shape
        android:innerRadiusRatio="3"
        android:shape="ring"
        android:thicknessRatio="7.0">

        <gradient
            android:centerColor="#03A9F4"
            android:endColor="#03A9F4"
            android:startColor="#03A9F4"
            android:angle="0"
            android:type="sweep"
            android:useLevel="false" />
    </shape>

</rotate>

نتیجه :

ProgressBar در اندروید

در تصویر بالا نتیجه کار را میتوانید مشاهده کنید که بعد از کلیک روی دکمه اجرا ویو به نمایش در می آید. در این روش کاربر متوجه میشود که عملیاتی درحال انجام است و تا پایان عملیات باید منتظر بماند.

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر نیاز است تا ابتدا وارد سایت شوید.

هیچ نظری ارسال نشده است.

قیمت آموزش
رایگان
نوع دسترسی
رایگان

این مقاله در حال حاضر تنها به روش رایگان در دسترس می باشد.

ناصر خالدی
مدرس دوره

ناصر خالدی

مهندس شبکه, امنیت, برنامه نویسی تلفن های هوشمند, طراح وب سایت و متخصص هوش مصنوعی

گفتگوی برنامه نویسان

بخشی برای حل مشکلات برنامه‌نویسی و مباحث پیرامون آن

دوره های پیشنهادی

مقالات پیشنهادی

هوش مصنوعی

هوش مصنوعی یا هوش ماشینی, به هوشمندی نشان داده شده توسط ماشین در شرایط مختلف گفته میشود که مقابل هوش طبیعی در انسان ها قرار دارد که ...


۸۶۱
۰
۱۱ آذر ۱۳۹۹

بک لینک چیست؟

بک لینک (Back Link) به لینک دادن یک سایت به سایت دیگر گفته میشود که یک فاکتور مهم و اساسی در سئو هر سایتی می باشد.


۹۹۲
۰
۲۲ آذر ۱۳۹۹

جاوا اسکریپت

جاوا اسکریپت یک زبان پویا و محبوب مبتنی بر شیء, داینامیک و مفسری می باشد. این زبان برای برنامه نویسی سمت سرور و کلاینت استفاده میشود که ...


۸۶۸
۰
۱۳ آذر ۱۳۹۹

درباره فایل Robots.txt

این فایل ربات های خزنده موتور های جستجو را راهنمایی می کنند و به آنان می فهماند که چه دایرکتوری و لینک هایی قابل بررسی و چه دایرکتوری و لینک هایی غیرقابل برررسی می باشند...


۷۵۵
۰
۲ دی ۱۳۹۹

Fatal error: Uncaught wfWAFStorageFileException: Unable to verify temporary file contents for atomic writing. in /home/clonerco/public_html/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php:52 Stack trace: #0 /home/clonerco/public_html/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php(659): wfWAFStorageFile::atomicFilePutContents('/home/clonerco/...', '<?php exit('Acc...') #1 [internal function]: wfWAFStorageFile->saveConfig('livewaf') #2 {main} thrown in /home/clonerco/public_html/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php on line 52