Android|Android 实现 圆形进度对话框 和 水平进度对话框 —— ProgressDialog

图1:
Android|Android 实现 圆形进度对话框 和 水平进度对话框 —— ProgressDialog
文章图片

图2:
Android|Android 实现 圆形进度对话框 和 水平进度对话框 —— ProgressDialog
文章图片

图3:
Android|Android 实现 圆形进度对话框 和 水平进度对话框 —— ProgressDialog
文章图片

activity_main.xml


MainActivity.java:
public class MainActivity extends AppCompatActivity {@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }public void showPD(View v){final ProgressDialog dialog = ProgressDialog.show(this,"数据加载","数据加载中..."); //模拟做一个长时间的工作 //长时间的工作不能在主线程做,得启动 子线程 完成 new Thread(){ @Override public void run() { for (int i=0; i<20; i++){ //休息一会 try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } //移除 dialog dialog.dismiss(); //虽然是在子线程中执行的,但是内部使用Handler实现主线程更新UI//不能再子线程直接更新UI,Toast//将 子线程 切换 主线程 去更新UI runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this,"加载完成了!!!",Toast.LENGTH_LONG).show(); } }); } }.start(); //注意Toast不能放在这个位置进行提示,因为多线程的意思就是在不断往下执行代码的过程中,也不断的在做线程中的逻辑问题,那么如果这样么写 //就会造成 Toast 直接提示了,应该要放在子线程执行完后,再去执行 //Toast.makeText(MainActivity.this,"加载完成了!!!",Toast.LENGTH_LONG).show(); }}

【Android|Android 实现 圆形进度对话框 和 水平进度对话框 —— ProgressDialog】总结:
1. 子线程不能更新UI界面2. 启动子线程代码: new Thread(){ @Override public void run() {}}.start(); 3. 在子线程中切换回主线程代码: runOnUiThread(new Runnable() { @Override public void run() {} }); 4. 要注意线程的执行和方法的顺序向下执行代码块是同时进行的!

    推荐阅读