●實作練習:預期畫面
=>點button後產生progerss dialog,五秒後自動消失
●程式說明:
(一)android多重執行緒
=>progressDialog (可取消/不可取消)用程式設定自行取消
public void click1(View view) {
final ProgressDialog pd= new ProgressDialog(MainActivity.this);
pd.show();
new Thread(){
@Override
public void run() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
runOnUiThread(new Runnable() {
@Override
public void run() {
pd.dismiss();
}
});
}
}.start();
**說明
1.這邊測試使用設定停1秒,實際上的做法應該是在抓資料抓圖片或在做運算等做完才讓它dismiss()
2.prgressDialog.show()預設是點外面就可以取消
3.如果不用new Thread,點button就會覺得沒反應,實際上是出現一下馬上消失
**在android 8的ui設計準則中不希望有東西擋住畫面,所以在android 8中把progressDialog擋掉了(出現刪除線)
=>假設我們在ps.show();前面加上下面兩行程式碼,畫面在轉圈圈的時候是完全無法動的,android 8不希望這樣的狀況發生,因為有可能就整個當掉無法處理
pd.setMessage("please wait");
pd.setCancelable(false);
=>解決android 8不接受progressDialog的作法:把progress bar放到dialog中,而不用progressDialog
●程式--java code
public void click1(View view) {
final ProgressDialog pd= new ProgressDialog(MainActivity.this);
pd.setMessage("please wait");
pd.setCancelable(false);
pd.show();
new Thread(){
@Override
public void run() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
runOnUiThread(new Runnable() {
@Override
public void run() {
pd.dismiss();
}
});
}
}.start();
}
●程式參考(GitHub):多重執行緒和ProgressDialog
文章標籤
全站熱搜
