ProgressDialog 進度表
在下載時如果沒有進度表,很難知道要下載到什麼時候,android有ProgressDialog結合handler聆聽下載進度,可讓user知道目前下載狀況...
public ProgressDialog myDialog = null;
public void onCreate(Bundle savedInstanceState) {
/* 捕捉若使用MediaPlayer緩衝區事件 */
mMediaPlayer01.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener()
{
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent)
{
Message m=new Message();
Bundle data=m.getData();
/* 將進度放入Message中 */
data.putInt("percent",percent);
m.setData(data);
/* send Message */
handler.sendMessage(m);
}
});
}
// 顯示Progress對話方塊
//myDialog = ProgressDialog.show(KRadio.this,strDialogTitle,strDialogBody,true);
myDialog=new ProgressDialog(KRadio.this);
myDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
myDialog.setMax(100); /* 設定最大單位 */
myDialog.setProgress(0); /* 設定初始值 */
myDialog.setTitle(getString(R.string.str_dialog_title));
myDialog.setMessage(getString(R.string.str_dialog_body));
myDialog.show();
//Thread裡放textview會造成其他地方無法控制(setText)
new Thread()
{
public void run()
{
try
{
/* 在這裡寫上要背景執行的程式片段 */
if (mMediaPlayer01!=null)
{
mMediaPlayer01.reset();
}
strPath = "rtsp://64.202.98.91:554/gs64.sdp";
mMediaPlayer01.setDataSource(strPath);
mMediaPlayer01.prepare();
mMediaPlayer01.start();
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
// 卸載所建立的myDialog物件。
myDialog.dismiss();
}
}
}.start();
}
catch(Exception e){
Toast.makeText(KRadio.this,e.toString() , Toast.LENGTH_SHORT).show();
}
/* Handler建構之後,會聆聽傳來的訊息代碼 , 聽取網站下載進度 */
private Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
/* 取得回傳的進度值 */
int p=msg.getData().getInt("percent");
if(p==100)
{
myDialog.dismiss();
}
else
{
/* 下載中UPDATE進度數值 */
myDialog.setProgress(p);
}
}
};
*參考自 Google Android SDK開發範例大全2 (8-20)
public ProgressDialog myDialog = null;
public void onCreate(Bundle savedInstanceState) {
/* 捕捉若使用MediaPlayer緩衝區事件 */
mMediaPlayer01.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener()
{
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent)
{
Message m=new Message();
Bundle data=m.getData();
/* 將進度放入Message中 */
data.putInt("percent",percent);
m.setData(data);
/* send Message */
handler.sendMessage(m);
}
});
}
// 顯示Progress對話方塊
//myDialog = ProgressDialog.show(KRadio.this,strDialogTitle,strDialogBody,true);
myDialog=new ProgressDialog(KRadio.this);
myDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
myDialog.setMax(100); /* 設定最大單位 */
myDialog.setProgress(0); /* 設定初始值 */
myDialog.setTitle(getString(R.string.str_dialog_title));
myDialog.setMessage(getString(R.string.str_dialog_body));
myDialog.show();
//Thread裡放textview會造成其他地方無法控制(setText)
new Thread()
{
public void run()
{
try
{
/* 在這裡寫上要背景執行的程式片段 */
if (mMediaPlayer01!=null)
{
mMediaPlayer01.reset();
}
strPath = "rtsp://64.202.98.91:554/gs64.sdp";
mMediaPlayer01.setDataSource(strPath);
mMediaPlayer01.prepare();
mMediaPlayer01.start();
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
// 卸載所建立的myDialog物件。
myDialog.dismiss();
}
}
}.start();
}
catch(Exception e){
Toast.makeText(KRadio.this,e.toString() , Toast.LENGTH_SHORT).show();
}
/* Handler建構之後,會聆聽傳來的訊息代碼 , 聽取網站下載進度 */
private Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
/* 取得回傳的進度值 */
int p=msg.getData().getInt("percent");
if(p==100)
{
myDialog.dismiss();
}
else
{
/* 下載中UPDATE進度數值 */
myDialog.setProgress(p);
}
}
};
*參考自 Google Android SDK開發範例大全2 (8-20)
標籤: handler, ProgressDialog
0 個意見:
張貼留言
訂閱 張貼留言 [Atom]
<< 首頁