<pre name="code" class="java"><pre name="code" class="plain">這裏我只貼上activity代碼,相關的註釋,看代碼裏面的就可以了。
package org.lxh.demo;
import org.lxh.demo.R;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class Demo extends Activity {
private Button btnDownload;
private Thread thread;
private ProgressDialog diaProgress;
private String isInterrupted;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main);
btnDownload = (Button) findViewById(R.id.download_btn);
btnDownload.setOnClickListener(new OnClickListenerImpl()) ;
}
private class OnClickListenerImpl implements OnClickListener {
@Override
public void onClick(View view) {
isInterrupted = "N";
diaProgress = new ProgressDialog(Demo.this);
diaProgress.setTitle("Download"); //設置標題
diaProgress.setMessage("Please wait..."); //設置提示文字
diaProgress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); //進度條的風格-水平
diaProgress.setProgress(0); //初始進度值
diaProgress.setMax(100); //最大的進度值
//第一個按鈕監聽,隱藏
diaProgress.setButton("Hide",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//雖然進度條隱藏了,但不代表“下載”有結果
diaProgress.dismiss();
}
});
//第二個按鈕監聽,取消
diaProgress.setButton2("Cancel",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
diaProgress.dismiss();
sendMsg(3);
sendMsg(2); //這裏的暫停方法,不是很理解,但網上都這麼說,大家有什麼看法,可以交流下
sendMsg(1);
}
});
diaProgress.onStart(); //進度條開始執行工作
//設置線程
thread = new Thread(new Runnable() {
@Override
public void run() {
int i = 0;
while(i != 100){
if(isInterrupted.equals("Y")){
break;
}
try {
//暫停0.5秒,純屬爲了模擬效果,當然實際的做法不是這樣的
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
diaProgress.incrementProgressBy(1);
i += 1;
}
diaProgress.dismiss();
sendMsg(0);
}
});
thread.start();
diaProgress.show(); //進度條開始顯示(實際到這裏纔開始真正工作)
}
}
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
diaProgress.dismiss();
switch (msg.what) {
case 0:
Toast.makeText(Demo.this, "download successfully",
Toast.LENGTH_LONG).show();
break;
case 1:
Toast.makeText(Demo.this,
"download has been interrupted", Toast.LENGTH_LONG)
.show();
break;
case 2:
// stop the thread
thread.interrupt();
break;
case 3:
isInterrupted = "Y";
default:
break;
}
}
};
private void sendMsg(int flag) {
Message msg = new Message();
msg.what = flag;
handler.sendMessage(msg);
}
}
demo請看:點擊打開鏈接