歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android_UI_中常用的兩種ProgressDialog

Android_UI_中常用的兩種ProgressDialog

日期:2017/3/1 10:45:38   编辑:Linux編程
Android_UI_中常用的兩種ProgressDialog,當手機跟服務器進行數據交互的時候,我們不能把耗時的操作放在主線程中,要做的事情就是異步.

而要異步,我們也要在界面上反饋一個信息給用戶,讓用戶知道應該等待數據下載....

先看兩張圖,這就是最常用的異步彈出窗口了

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /pub/Android源碼集錦/2011年/12月/Android_UI_中常用的兩種ProgressDialog/

上代碼吧 都比較簡單,關於線程,看了比較多的建議...不管是線程也好還是其他什麼都好,android是一個手機客戶端,

大家在寫代碼的同時還是非常有必要針對內存優化,代碼健壯做一些相應上的代碼優化的.

比如 少用new的關鍵字,對象多復用..等等.我再這裡就不敘述了,我個人也不是非常的強悍

  1. package tree.love.UI.Demo.ProgressDialog.activity;
  2. import tree.love.UI.Demo.ProgressDialog.R;
  3. import android.app.Activity;
  4. import android.app.ProgressDialog;
  5. import android.os.Bundle;
  6. import android.os.Handler;
  7. import android.os.Message;
  8. import android.view.View;
  9. import android.view.View.OnClickListener;
  10. public class HomeActivity extends Activity implements OnClickListener
  11. {
  12. private ProgressDialog loadingDialog = null;
  13. /** 第一種風格 **/
  14. private static final int LOADING_STYLE_01 = 1 ;
  15. /** 第二種風格 **/
  16. private static final int LOADING_STYLE_02 = 2 ;
  17. @Override
  18. protected void onCreate(Bundle savedInstanceState)
  19. {
  20. super.onCreate(savedInstanceState);
  21. setContentView(R.layout.main);
  22. findViewById(R.id.button).setOnClickListener(this);
  23. findViewById(R.id.button1).setOnClickListener(this);
  24. }
  25. @Override
  26. public void onClick(View v)
  27. {
  28. switch (v.getId())
  29. {
  30. case R.id.button://按鈕1
  31. loadingDialog = PrintAlertUtil.showDialog(this, "正在下載...");
  32. Thread thread01 = new Thread(new Runnable() {
  33. @Override
  34. public void run()
  35. {
  36. downLoad(5,false);
  37. }
  38. });
  39. thread01.start();
  40. break;
  41. case R.id.button1://按鈕2
  42. loadingDialog = PrintAlertUtil.showDialog(this, "正在更新", 100);
  43. Thread thread02 = new Thread(new Runnable() {
  44. @Override
  45. public void run()
  46. {
  47. downLoad(10,true);
  48. }
  49. });
  50. thread02.start();
  51. break;
  52. }
  53. }
  54. private Handler mHandler = new Handler() {
  55. @Override
  56. public void handleMessage(Message msg)
  57. {
  58. super.handleMessage(msg);
  59. switch (msg.what)
  60. {
  61. case LOADING_STYLE_01:
  62. //關閉對話框
  63. PrintAlertUtil.dismissDialog(loadingDialog);
  64. //提示
  65. PrintAlertUtil.showToast(HomeActivity.this, msg.obj.toString());
  66. break;
  67. case LOADING_STYLE_02:
  68. int p = msg.getData().getInt("percent");
  69. if (p == 100)
  70. {
  71. //更新完成,關閉對話框
  72. loadingDialog.setProgress(p);
  73. PrintAlertUtil.dismissDialog(loadingDialog);
  74. PrintAlertUtil.showToast(HomeActivity.this, msg.obj.toString());
  75. }
  76. else
  77. {
  78. //更新進度條
  79. loadingDialog.setProgress(p);
  80. }
  81. break;
  82. }
  83. }
  84. };
  85. /**
  86. * 模擬下載操作
  87. */
  88. public void downLoad(int number,boolean download)
  89. {
  90. for (int i = 0; i < number; i++)
  91. {
  92. /** 每次模擬停頓耗時0.5秒 **/
  93. try{Thread.sleep(500);}catch (InterruptedException e){e.printStackTrace();}
  94. if (download)
  95. {
  96. /** 每循環一次更新一次進度 **/
  97. int percent = (i+1)*10;
  98. Message message = new Message();
  99. Bundle bundle = message.getData();
  100. bundle.putInt("percent", percent);
  101. message.setData(bundle);
  102. message.what = LOADING_STYLE_02;
  103. if (i == 9)
  104. {
  105. message.obj="更新完畢";
  106. }
  107. mHandler.sendMessage(message);
  108. }
  109. }
  110. if (!download)
  111. {
  112. Message message = new Message();
  113. message.what = LOADING_STYLE_01;
  114. message.obj = "下載完成";
  115. mHandler.sendMessage(message);
  116. }
  117. }
  118. }
Copyright © Linux教程網 All Rights Reserved