ProgressBar افقی در اندروید

اگر برنامه نویس اندروید باشید میدونید که ProgressBar و یا ProgressDialog تو اپلیکیشن کاربرد زیادی دارند. اینها معمولا برای نشون دادن پیشرفت کار همراه با زیرکلاسی از AsyncTask استفاده میشن.

ProgressBar به صورت دیفالت دایره‌ای شکل هست. حالا باید چیکار کنیم اگر خواستیم یک ProgressBar افقی به شکل زیر داشته باشیم؟

screenshot_horizontal_progress

چون مطلب نسبتا طولانیه باقیش رو تو ادامه ببینید.

در ابتدا باید ظاهرش رو بسازیم. پس تو فولدر drawable یه فایل xml به اسم custom_progress_bar.xml میسازیم و این کد ها رو توش مینویسیم:

<?xml version="1.0" encoding="UTF-8"?>

<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@android:id/background">
        <shape>
            <padding
                android:bottom="3dip"
                android:top="3dip"
                android:left="3dip"
                android:right="3dip"
                />
            <corners
                android:radius="5dip" />
            <gradient
                android:startColor="#2a2b2f"
                android:centerColor="#2a2b2f"
                android:centerY="0.50"
                android:endColor="#2a2b2f"
                android:angle="270" />
        </shape>
    </item>
    <item
        android:id="@android:id/progress">
        <clip>
            <shape>
                <corners
                    android:radius="5dip" />
                <gradient
                    android:startColor="#ff0e75af"
                    android:endColor="#ff1997e1"
                    android:angle="90" />
            </shape>
        </clip>
    </item>
</layer-list>

 

حالا لازمه یک Style تعریف کنیم. این همون استایلیه که قراره به ProgressBar بدیم. تنها کافیه کد زیر رو به style.xml اضافه کنید:

<style name="CustomProgressBar" parent="android:Widget.ProgressBar.Horizontal">
        <item name="android:indeterminateOnly">false</item>
        <item name="android:progressDrawable">@drawable/custom_progress_bar</item>
        <item name="android:minHeight">10dip</item>
        <item name="android:maxHeight">20dip</item>
    </style>

 

دیگه بیشتر راه رو رفتیم.  حالا فقط کافیه تو layout به ProgressBarمون استایل بدیم. به شکل زیر:

<ProgressBar
            android:id="@+id/customProgress"
            style="@style/CustomProgressBar"
            android:layout_width="match_parent"
            android:layout_height="15dip"
            android:layout_marginLeft="20dip"
            android:layout_marginRight="5dip"
            android:layout_marginTop="30dip"
            android:layout_weight="0.8" />

و به همین سادگی! حالا تنها کاری که باید بکنیم اینه که تو Activity یا Fragment از ProgressBarمون یه آبجکت بگیریم و  هرجایی که خواستیم به شیوه ی زیر مقدار پیشرفت رو براش ست کنیم (این کار معمولا در متد onProgressUpdate در سابکلاس AsyncTask انجام میشود). در اینجا فرض کردیم که ۲۰ درصد از روند کار پیشرفت کرده:

customProgress = (ProgressBar)findViewById(R.id.customProgress);
customProgress.setProgress(20]);

پ.ن: من برای نوشتن این مطلب از اسکرین‌شات ها و نمونه کدهای این پروژه گیت هاب استفاده کردم.

8 پاسخ به “ProgressBar افقی در اندروید”

  1. عالی بود
    ممنون از آموزشتون

  2. میشه برنامه های اندروید رو تحت mvc هم نوشت؟

    • آرش خوئینی گفت:

      من مدتها دنبال جواب این سوال بودم. آخرین چیزی که بهش رسیدم این بود: نه دقیقا. یعنی میشه با یه سری ابتکار کاری کرد که نزدیک به MVC بشه. اما حداقل من نتونستم دقیقا MVC رو توش پیاده کنم!

      • با عرض سلام و خسته نباشید
        مایکرو سافت روی MVC4 و MVC5 این قابلیت رو برای SDK هاش گذاشته ولی به روونی تحت وب نیست!

        امیدوارم این اطلاعات کمکی کرده باشه!

    • از زامارین استفاده کنید فکر کنم باتون بهتر باشه
      موفق باشید

  3. کرم پودر گفت:

    سلام

    میشه لطفا آموزش پروژه محور برامون بزارید؟

    تشکر

  4. سلام با تشکر از آموزشتون
    می خوام برای سایتم اپلیکیشن بنویسم
    ممنون میشم راهنماییم کنین که برای قدم صفر باید از کجا شروع کنم؟

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

android application Google I/O HomeBrew ImageMagick Material Design mobile PogressBar RecyclerView splash TEDxKish ux آموزش اندروید الوین تافلر اندروید اپلیکیشن برنامه نویسی برنامه نویسی اندروید برنامه‌نویسی برنامه‌نویسی اندروید تداکس کیش تعمیر تغییر سایز عکس با ترمینال خلاصه کتاب دانش داده دانشگاه دانشگاه ایده‌آل دزد دیتا ساینس رشته مهندسی کامپیوتر ریکامندرسیستم سیستم‌های توصیه‌گر فری‌لنس لپتاپ متریال دیزاین معرفی کتاب موج سوم نوار پیشرفت همایش هوش مصنوعی ُجزیره کیش کار کسب و کار یادگیری عمیق یادگیری ماشین