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 هم نوشت؟

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

    سلام

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

    تشکر

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

پاسخ دهید

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

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