1113 نیروی متخصص آماده کـار برای شمـا هستند
حالا پروژه خود را ایجاد کنید
تعداد طراحان اندروید 1017
تعداد نرم افزار های اندروید 0
تعداد طراحان آی او اس 1002
تعداد نرم افزارهای آی او اس 0
آخرین اخبار سایت
ابزار نمایش Progress Bar

ابزار نمایش ProgressBar

برای نمایش دادن پیشرفت یک عملیات در حال انجام شدن از ابزار ProgressBar استفاده میکنیم. این عملیات می تواند قابل مشاهده و یا در پس زمینه در حال رخ دادن باشد. مثلا وقتی در حال دانلود یک سری Data از یک سایت هستید و قصد دارید کاربر از پیشرفت عملیات دانلود باخبر باشد ، در این موارد بهترین راه پیش رو استفاده از ابزار نمایش ProgressBar است.

1.در ایکلیپس یک پروژه جدید با نام BasicView2 بسازید.

2.فایل main.xml که در res/layout قرار دارد را مانند زیر اصلاح کنید:

<?”xml version=”1.0” encoding=”utf-8?>
”LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android>
”android:orientation=”vertical
”android:layout_width=”fill_parent
<”android:layout_height=”fill_parent
”ProgressBar android:id=”@+id/progressbar >
”android:layout_width=”wrap_content
</”android:layout_height=”wrap_content
<LinearLayout/>

 

3.فایل MainActivity.java را به صورت زیر اصلاح نمایید:

;package net.learn2develop.BasicViews2
;import android.app.Activity
;import android.os.Bundle
;import android.os.Handler
;import android.widget.ProgressBar
} public class MainActivity extends Activity 
;private static int progress
;private ProgressBar progressBar
;private int progressStatus = 0
;()private Handler handler = new Handler
/* .Called when the activity is first created **/
Override@
} (public void onCreate(Bundle savedInstanceState
;(super.onCreate(savedInstanceState
;(setContentView(R.layout.main
;progress = 0
;(progressBar = (ProgressBar) findViewById(R.id.progressbar
---do some work in background thread---//
()new Thread(new Runnable
} 
()public void run
}
---do some work here---//
(while (progressStatus < 10
}
;()progressStatus = doSomeWork
{
---hides the progress bar---//
()handler.post(new Runnable
}
()public void run
}
---0 - VISIBLE; 4 - INVISIBLE; 8 - GONE---//
;(progressBar.setVisibility(8
{
;({
{
---do some long lasting work here---//
()private int doSomeWork
}
}  try 
---simulate doing some work---//
;(Thread.sleep(500
 (catch (InterruptedException e{
}
;()e.printStackTrace
{
;return ++progress
{
;()start.({
{  
{

 

4.با استفاده از کلید F11 برنامه را در امولاتور اجرا کنید.

 

حالت پیش فرض در ProgressBar  به صورت indeterminate است (یک دایره ی در حال چرخش). از این حالت زمانی استفاده می کنیم که تایم مشخصی برای پایان یک عملیات نداریم. وقتی شما یک سری داده را به یک وب سرویس ارسال می کنید و منتظر دریافت پاسخ هستید. اگر یک عنصر progressBar به صورت خیلی ساده در فایل main.xml قرار می دهید, ابزاری را نمایش می دهد که دائما در حال چرخیدن است.اختیار این با شماست که زمانی که عملیات در پس زمینه تمام شد آن را متوقف کنید. کدی که به فایل جاوا اضافه کردید نشان دهنده ی این است که چطور می توان با استفاده از یک thread چرخش در پس زمینه را خاموش کرد و انجام یک وظیفه طولانی مدت را شبیه سازی نمود و از آن برای نمایش پیشرفت کار استفاده کرد. برای این کار از کلاس Thread همراه با یک شئ Runnable استفاده کنید. متد()run اجزا thread را بر عهده دارد,که در این مورد متد ()doSomeWork را برای شبیه سازی کردن انجام بعضی کارها فراخوانی می کند.بعد از این که شبیه سازی به پایان رسید(حدوداً بعد از 5 ثانیه),از یک شئ Handler برای ارسال یک پیام به thread جهت توقف ProgressBar استفاده می کنیم:

 

---do some work in background thread---//
()new Thread(new Runnable
}
()public void run
}
---do some work here---//
(while (progressStatus < 10
}
;()progressStatus = doSomeWork
{
---hides the progress bar---//
()handler.post(new Runnable
}
()public void run
}
---0 - VISIBLE; 4 - INVISIBLE; 8 - GONE---//
;(progressBar.setVisibility(8
{
;({
{
---do some long lasting work here---//
()private int doSomeWork
}
}  try 
---simulate doing some work---//
;(Thread.sleep(500
( catch (InterruptedException e{
}
;()e.printStackTrace
{
;return ++progress
{
;()start.{(

 

پس از اتمام ابزار ProgressBar را بوسیله خصوصیت visibility که مقدار آن برابر GONE (مقدار 8) قرار داده شده است,پنهان می کنیم.تفاوتی که بین مقدار INVISIBLE و ثابت GONE وجود دارد,این است که وقتی از INVISIBLE استفاده می کنید,ProgressBar تنها پنهان می شود ولی همچنان فضایی را که در اکتیویتی اشغال کرده بود,در تصرف خود دارد.اما زمانی که از GONE استفاده می کنید,دیگر ProgressBar فضایی از اکتیویتی را اشغال نکرده است.

تغییر شکل  ProgressBar 

1.در همان پروژه ی قبل,فایل main.xml را به صورت زیر تغییر دهید:

 

<?”xml version=”1.0” encoding=”utf-8?>
”LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android>
”android:orientation=”vertical
”android:layout_width=”fill_parent
<”android:layout_height=”fill_parent 
”ProgressBar android:id=”@+id/progressbar>
”android:layout_width=”wrap_content
”android:layout_height=”wrap_content
</ ”style=”?android:attr/progressBarStyleHorizontal
<LinearLayout/>

 

2.فایل MainActivity.java را به صورت زیر اصلاح کنید:

 

/* .Called when the activity is first created**/
Override@
} (public void onCreate(Bundle savedInstanceState
;(super.onCreate(savedInstanceState
;(setContentView(R.layout.main
;progress = 0
;(progressBar = (ProgressBar) findViewById(R.id.progressbar
;(progressBar.setMax(200
---do some work in background thread---//
()new Thread(new Runnable
}
()public void run
}
---do some work here---//
(while (progressStatus < 100
}
;()progressStatus = doSomeWork
---Update the progress bar---//
()handler.post(new Runnable
}
} ()public void run
;(progressBar.setProgress(progressStatus
{
;({
{
---hides the progress bar---//
()handler.post(new Runnable
}
()public void run
}
---0 - VISIBLE; 4 - INVISIBLE; 8 - GONE---//
;(progressBar.setVisibility(8
{
;({
{
---do some long lasting work here---//
()private int doSomeWork
}
} try 
---simulate doing some work---//
;(Thread.sleep(50
( catch (InterruptedException e{
}
;()e.printStackTrace
{
;return ++progress
{
;()start.({
{

 

3.با استفاده از کلید F11 برنامه را اجرا کنید.

در تصویر زیر ProgressBar را در حالت نمایش پیشرفت 50% نشان می دهد:

 

برای نمایش ProgressBar به صورت عمودی ، خصوصیت style را به صورت زیر تنظیم کنید:

 

”ProgressBar android:id=”@+id/progressbar>
”android:layout_width=”wrap_content
”android:layout_height=”wrap_content
</”style=”?android:attr/progressBarStyleHorizontal

 

برای نمایش پیشرفت کار متد ()setProgress را فراخوانی کرده و عددی را که نشان دهنده ی پیشرفت کار است به آن ارسال میکنیم:

 

---Update the progress bar---//
()handler.post(new Runnable
}
} ()public void run
;(progressBar.setProgress(progressStatus
{
;({

 

در این مثال بوسیله ی متد ()setMax محدوده ی ProgressBar بین 0 تا 200 در نظر گرفته شده است. زمانی که ProgressBar به حد وسط می رسد ،ناپدید می گردد این در حالیست که هنوز متد ()doSoneWork فراخوانی می شود و progressStatud کمتر از 100 است. برای اطمینان از اینکه ProgressBar تا اتمام 100% کار محو نخواهد شد ، مقدار حداکثر را برابر 100 قرارداده و یا به روشی حلقه ی while مینویسیم تا آنقدر تکرار شود که مقدار ProgressStatus به 200 برسد:

 

---do some work here---//
(while (progressStatus < 200

  • دسته بندی :
  • تاریخ انتشار : 16 اردیبهشت 1396
  • بازدید : 273

برچسب ها :