iT邦幫忙

2022 iThome 鐵人賽

DAY 21
0
Mobile Development

Android Studio 30天學習系列 第 21

Android Studio 30天學習-DAY21_ProgressBar基本設置

  • 分享至 

  • xImage
  •  

ProgressBar基本建立

progressbar是進度條可以明顯觀察到目前載入的進度條,可以觀察到是否有在正常動作的一個元件。

在XML建立progressbar元件

  • style:我目前只知道長條型與轉圈型的progressbar類型
    • @style/Widget.AppCompat.ProgressBar.Horizontal:是長條型的ProgressBar
    • @style/Widget.AppCompat.ProgressBar:是轉圈型的ProgressBar
  • 我這邊其餘的設定大致上都與SeekBar的設定類似。
    • max:這個進度條的最大值
    • progress:預設值,起始值。
  • 在XML我有另外設置TextView以及Button,我這邊只貼上ProgressBar的程式碼。
    • TextView來顯示目前的進度數值。
    • Button就是來實作點擊事件來執行。
<!-- 長條型進度條 -->
<ProgressBar
        android:id="@+id/progressBarHorizontal"
        style="@style/Widget.AppCompat.ProgressBar.Horizontal"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:max="10000"
        android:progress="0"
        app:layout_constraintEnd_toStartOf="@+id/guideline2"
        app:layout_constraintStart_toStartOf="@+id/guideline1"
        app:layout_constraintTop_toBottomOf="@+id/progressbarTextView"
        tools:ignore="MissingConstraints" />

<!-- 轉圈型進度條 -->
<ProgressBar
        android:id="@+id/progress_circle"
        style="@style/Widget.AppCompat.ProgressBar"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:max="10000"
        android:progress="0"
        app:layout_constraintEnd_toStartOf="@+id/guideline2"
        app:layout_constraintStart_toStartOf="@+id/guideline1"
        app:layout_constraintTop_toBottomOf="@+id/progressBarHorizontal"
        tools:ignore="MissingConstraints" />

Java程式碼

  • 程式碼解析:
    • setVisibility(View.INVISIBLE):將可視狀態設定為INVISIBLE,就是不可視狀態。相反,設為VISIBLE就是可視狀態。
    • 在Java也能設定max值,方法是setmax();
    • 這邊我還有使用了一個建立新線程的方法,目的在於我要讓這個progressbar跑進度的地方在另外一個線程去執行,這樣才不會占用到主線程的操作。
  • 建立新線程
    這個部分在後面會詳細用到。
new Thread(()->{
    //執行動作
    }).start();
  • progressbar的程式碼撰寫
        //最一開始將圓圈型progressbar設不可視狀態
        progressBarCircle.setVisibility(View.INVISIBLE);

        RunProgressBarBT.setOnClickListener(v -> {
            //設置轉圈progressbar為可視狀態
            progressBarCircle.setVisibility(View.VISIBLE);
            //進度條最多就是100
            progressbarHorizontal.setMax(100);
            //建立一個新的線程來跑progressBar進度
            new Thread(()->{
                for (int i = 0; i <100 ; i++) {
                //更新進度
                    progressbarHorizontal.setProgress(i);
                    progressBarTextView.setText ("Now progress status is :"+i);
                    SystemClock.sleep(50);
                }
                progressBarTextView.setText ("Complete Status Loading");
                //跑完後,設置轉圈圈為不可視狀態
                progressBarCircle.setVisibility(View.INVISIBLE);
                //將進度條歸零
                progressbarHorizontal.setProgress(0);
                //在UI線程執行Toast的動作顯示已經完成進度條動作
                runOnUiThread(()->{
                    Toast.makeText(this, "進度跑完!", Toast.LENGTH_SHORT).show();
                });
            }).start();
        });

結果圖

  • 起始畫面
  • 按下按鈕執行時的畫面
  • 結束進度條的畫面
  • 建立新線程,Seekbar在主線程執行而ProgressBar是在另外新建的線程執行迴圈動作。

以上是今天所做的Progressbar的基本設置方法


上一篇
Android Studio 30天學習-DAY20_SeekBar基本設置練習
下一篇
Android Studio 30天學習-DAY22_Android_ROOM的基本練習
系列文
Android Studio 30天學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言