Friday, January 4, 2013

[Android] 標題列進度條的使用


2535808065203091705.jpg  
1)圓形旋轉進度條
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); //設置為圓形旋轉進度條
setContentView(R.layout.main);


new MyTask().execute();
}


class MyTask extends AsyncTask{

@Override
protected void onPreExecute() {
setProgressBarIndeterminateVisibility(true);// 執行前使進度條可見
super.onPreExecute();
}


@Override
protected Void doInBackground(Void... arg0) {
// TODO 這裡可以編寫後臺耗時操作的代碼,本示例用執行緒sleep類比
for(int i=0; i<10 div="div" i="i">
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}


@Override
protected void onPostExecute(Void result) {
setProgressBarIndeterminateVisibility(false); // 執行完後使進度條隱藏
super.onPostExecute(result);
}
}
}
3349270747881549781.png  
2)水準進度條
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_PROGRESS); //設置為水準進度條 注意標題列的水準進度條最大值是10000,不用自己手動設置
setContentView(R.layout.main);
setSecondaryProgress(10000); //設置副進度為10000


new MyTask().execute();
}


class MyTask extends AsyncTask{

@Override
protected void onPreExecute() {
setProgressBarVisibility(true); // 執行前使進度條可見
super.onPreExecute();
}


@Override
protected Void doInBackground(Void... arg0) {
// TODO 這裡可以編寫後臺耗時操作的代碼,本示例用執行緒sleep類比
for(int i=0; i<10 div="div" i="i">
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
publishProgress(i+1);
}
return null;
}

@Override
protected void onProgressUpdate(Integer... values) {
setProgress(values[0]*1000); //動態更新最新進度
super.onProgressUpdate(values);
}

@Override
protected void onPostExecute(Void result) {
setProgressBarVisibility(false); // 執行完後使進度條隱藏
super.onPostExecute(result);
}
}
}

No comments:

Post a Comment