alertdialog對話框,Android ProgressDialog 實現圓形進度對話框 和 水平進度對話框

 2023-12-25 阅读 28 评论 0

摘要:圖1: 圖2: 圖3: activity_main.xml <Buttonandroid:id="@+id/button"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="圓形進度條對話框"android:o

圖1:
在這里插入圖片描述
圖2:
在這里插入圖片描述
圖3:
在這里插入圖片描述
activity_main.xml

    <Buttonandroid:id="@+id/button"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="圓形進度條對話框"android:onClick="showPD"android:layout_gravity="center"android:layout_marginTop="80dp" />

alertdialog對話框、MainActivity.java:

public class MainActivity extends AppCompatActivity {@Overrideprotected 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(){@Overridepublic void run() {for (int i=0;i<20;i++){//  休息一會try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}}//  移除 dialogdialog.dismiss();   //雖然是在子線程中執行的,但是內部使用Handler實現主線程更新UI//  不能再子線程直接更新UI,   Toast//  將 子線程 切換 主線程 去更新UIrunOnUiThread(new Runnable() {@Overridepublic void run() {Toast.makeText(MainActivity.this,"加載完成了!!!",Toast.LENGTH_LONG).show();}});}}.start();//  注意Toast不能放在這個位置進行提示,因為多線程的意思就是在不斷往下執行代碼的過程中,也不斷的在做線程中的邏輯問題,那么如果這樣么寫//  就會造成 Toast 直接提示了,應該要放在子線程執行完后,再去執行
//            Toast.makeText(MainActivity.this,"加載完成了!!!",Toast.LENGTH_LONG).show();}}

總結:

1.	子線程不能更新UI界面2.	啟動子線程代碼:new Thread(){@Overridepublic void run() {}}.start();3.	在子線程中切換回主線程代碼:runOnUiThread(new Runnable() {@Overridepublic void run() {}});4.	要注意線程的執行和方法的順序向下執行代碼塊是同時進行的!

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/194824.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息