●實作練習:預期畫面

=>點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

文章標籤
全站熱搜
創作者介紹
創作者 muchone 的頭像
muchone

簡單。生活。享受

muchone 發表在 痞客邦 留言(0) 人氣(208)