با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن . و کاربرانی که دوره کامل آموزش برنامه نویسی اندروید را دنبال می کنند. ساده ترین راه برای ایجاد یک نوار پیشرفت دایره ای در اندروید ، استفاده از کلاسی به نام ProgressDialog است. نوار loading را نیز می تواند از طریق آن کلاس ساخت. تنها تفاوت منطقی بین bar و Circle ، این است که وقتی که شما زمان کل را برای انتظار یک کار خاص می دانید، استفاده می شود. این قابلیت همانند spinner بوده و پیشرفت یک فرآیند را به شما نشان می دهد. برای آشنایی بیشتر با طرز استفاده از Progress Circle در اندروید در ادامه ی مباحث این بخش با ما همراه باشید.
در این مبحث ما ساختار استفاده از نوار پیشرفت دایره ای در اندروید و متدهای مربوطه به آن را مورد بحث قرار داده ایم.
در ادامه ی این آموزش برای درک بهتر مباحث، یک مثال از نحوه ی استفاده از Progress Circle در برنامه نویسی اندروید ارائه داده ایم.
ابتدا باید یک آبجکت از کلاس ProgressDialog به صورت زیر تعریف کنید:
1 | ProgressDialog progress = new ProgressDialog(this); |
حالا شما می توانید ویژگی های این dialog را از جمله style ،text و … را تنظیم کنید.
1 2 3 | progress.setMessage("Downloading Music :) "); progress.setProgressStyle(ProgressDialog.STYLE_SPINNER); progress.setIndeterminate(true); |
علاوه بر متدهای فوق متدهای دیگری نیز از کلاس ProgressDialog به شرح زیر ارائه شده است:
ردیف | کلاس ها و توضیحات مربوطه |
---|---|
۱ | getMax() این متد حداکثر مقدار progress را برمی گرداند. |
۲ | incrementProgressBy(int diff) این متد باعث افزایش نوار پیشرفت توسط تفاوت مقداری که به عنوان یک پارامتر ارسال شده می شود. |
۳ | setIndeterminate(boolean indeterminate) این متد نشانگر پیشرفت را به عنوان تعیین شده یا غیرقابل تعیین مشخص می کند. |
۴ | setMax(int max) این متد حداکثر مقدار نوار پیشرفت را تنظیم می کند. |
۵ | setProgress(int value) این متد برای به روز رسانی نوار پیشرفت با مقدار خاصی استفاده می شود. |
۶ | show(Context context, CharSequence title, CharSequence message) این یک متد استاتیک است که برای نمایش progress dialog استفاده می شود. |
این مثال یک نوار پیشرفت چرخشی را نشان می دهد، این برنامه یک Progress Circle را با فشردن یک دکمه نمایش می دهد.
برای آزمایش این مثال، شما باید پس از توسعه برنامه با توجه به مراحل زیر، این را روی یک دستگاه واقعی اجرا کنید:
مراحل | توضیحات |
---|---|
۱ | مراحل ایجاد برنامه در اندروید استدیو را طبق بخش های قبلی تحت عنوان پکیج com.example.Pvlearn.myapplication دنبال کنید. |
۲ | به فایل src/MainActivity.java کدهای Progress Circle را برای نمایش نوار پیشرفت چرخشی اضافه کنید. |
۳ | طراحی مناسب با این برنامه را به res/layout/activity_main اضافه کنید. |
۴ | برنامه را اجرا کنید تا دستگاه اندروید شما نتیجه را نمایش دهد. |
محتوای main activity در فایل src/MainActivity.java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | package com.example.Pvlearn.myapplication; import android.app.ProgressDialog; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.widget.Button; public class MainActivity extends Activity { Button b1; private ProgressDialog progressBar; private int progressBarStatus = 0; private Handler progressBarbHandler = new Handler(); private long fileSize = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b1=(Button)findViewById(R.id.button); b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { progressBar = new ProgressDialog(v.getContext()); progressBar.setCancelable(true); progressBar.setMessage("File downloading ..."); progressBar.setProgressStyle(ProgressDialog.STYLE_SPINNER); progressBar.setProgress(0); progressBar.setMax(100); progressBar.show(); progressBarStatus = 0; fileSize = 0; new Thread(new Runnable() { public void run() { while (progressBarStatus < 100) { progressBarStatus = downloadFile(); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } progressBarbHandler.post(new Runnable() { public void run() { progressBar.setProgress(progressBarStatus); } }); } if (progressBarStatus >= 100) { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } progressBar.dismiss(); } } }).start(); } }); } public int downloadFile() { while (fileSize <= 1000000) { fileSize++; if (fileSize == 100000) { return 10; }else if (fileSize == 200000) { return 20; }else if (fileSize == 300000) { return 30; }else if (fileSize == 400000) { return 40; }else if (fileSize == 500000) { return 50; }else if (fileSize == 700000) { return 70; }else if (fileSize == 800000) { return 80; } } return 100; } } |
محتوای فایل res/layout/activity_main.xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | <?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:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:text="Music Palyer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textview" android:textSize="35dp" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Pvlearn" android:id="@+id/textView" android:layout_below="@+id/textview" android:layout_centerHorizontal="true" android:textColor="#ff7aff24" android:textSize="35dp" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="download" android:id="@+id/button" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="112dp" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView" android:src="@drawable/abc" android:layout_below="@+id/textView" android:layout_centerHorizontal="true" /> </RelativeLayout> |
محتوای فایل res/values/string.xml :
1 2 3 | <resources> <string name="app_name">My Application</string> </resources> |
محتوای پیش فرض فایل AndroidManifest.xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.Pvlearn.myapplication" > <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.Pvlearn.myapplication.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> |
برای اجرای برنامه ی اندرویدی خود یکی از فایل های activity در برنامه ی خود کلیک کنید.
سپس روی نماد (Run) از نوار ابزار برای شروع اجرای برنامه کلیک کنید.
سپس نتیجه اجرای برنامه را در دستگاه اندروید خود مشابه زیر مشاهده خواهید کرد:
حالا روی button کلیک کنید تا Progress Dialog همانند شکل زیر شروع بکار کند:
با استفاده از Progress Circle در برنامه نویسی اندروید می توانید فرآیندی مانند دانلود که در پس زمینه ی برنامه اتفاق می افتد، را در قالب یک نوار پیشرفت Progress Circle در اپلیکیشن خود نشان دهید تا کاربر از میزان پیشرفت فرآیند خود آگاه شوید.