Android 學習筆記(十六):Widget-進度條

來源:互聯網
上載者:User

學習兩種顯示條,ProgressBar用於output,SeekBar用於Input。

ProgressBar

1)Android XML檔案

... ...
    <ProgressBar android:id="@+id/c81_firstBar"
      style="?android:attr/progressBarStyleHorizontal"
      android:layout_width="200dp"
      android:layout_height="wrap_content"
      android:max="200" <!-- 預設為100 -->
      android:visibility="gone"/>
    <!-- gone和invisible都是 當前不可視-,但是invisible在排版上保留了widget的空間,gone不保留 -->

    <ProgressBar android:id="@+id/c81_secondBar"
      style="?android:attr/progressBarStyle"
      ... ... />
    <ProgressBar android:id="@+id/c81_thirdBar"
      style="?android:attr/progressBarStyleLarge"
      ... ... />
      <ProgressBar android:id="@+id/c81_forthBar"
      style="?android:attr/progressBarStyleSmall"
      ...... />
     <Button android:id="@+id/c81_myButton"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="Begin" />
... ...

我們注意到style的設定方法,查看Android的reference的Progress中,我們在XML attributes中查到有四種style,我們分別設定了4個progressbar來進行實驗。

2)原始碼

ProgressBar比較容易,我們需要瞭解它的一些基本操作,見下面粗體部分。

       //在OnCreate()中,設定layout,然後通過ID找到 firstBar,secondBar,thirdBar, fourthBar, Button,此步驟略去
       // firstBar.setIndeterminate(true);
/* 設定progressbar無效*/
       
        button.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
                if (precent == 0){
                    firstBar.setProgress(0);
                    firstBar.setSecondaryProgress(0);
                    secondBar.setProgress(0);
                    firstBar.setVisibility(View.VISIBLE);
                    secondBar.setVisibility(View.VISIBLE);
                    thirdBar.setVisibility(View.VISIBLE);
                    forthBar.setVisibility(View.VISIBLE);
                    precent += 10;
                }else if(precent <= firstBar.getMax()){
//當然在這個例子中Max為200,也可以直接寫為200,但是建議使用getMax()
                    firstBar.setProgress(precent);
//也可以使用 firstBar.incrementProgressBy(10);
                    firstBar.setSecondaryProgress(precent + 10);
                    // secondBar.setProgress(precent);
/* 測試證明此此不起作用,包括thirdBar, fourthBar*/
                    precent += 10;
                }else{
                    firstBar.setVisibility(View.GONE);
                    secondBar.setVisibility(View.GONE);
                    thirdBar.setVisibility(View.GONE);
                    forthBar.setVisibility(View.GONE);
                    precent = 0;
                }
            }
           
        });

如所示,先看第一個progressbar,style為progressBarStyleHorizontal右圖設定了無效,即firstBar.setIndeterminate(true)。如果設定了無效,則setProgress()無法起作用。進度條允許設定兩個進度setProgress()和setSencondaryProgress(),後者顏色淺一些。一般我們使用一個進度條。後面三個style分別為progressBarStyle,progressBarStyleLarge和progressBarStyleSmall。這三個都是表示正在執行過程,只是顯示的大小尺寸不一樣。這三個style,setProgress()是不起作用的。

SeekBar

progressbar使用與顯示進度,或者通知使用者正在執行,避免因執行時間過長使用者以為程式出問題,屬於Output,而SeekBar屬於Input,看獲得使用者手指滑動或者點擊在進度條的位置。我們在上面一個例子後面增加。

1)Android XML檔案

     <SeekBar android:id="@+id/c81_seekbar"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"/>
     <TextView android:id="@+id/c81_info"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content" />

2)原始碼

        info = (TextView)findViewById(R.id.c81_info);
        seekbar = (SeekBar)findViewById(R.id.c81_seekbar);
        //seekbar通過setOnSeekBarChangeListener()設定觸發方法,對onProgressChanged()進行處理
        seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){
            public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
                int progess = arg0.getProgress();
//getProgress( )獲得當前的位置

                info.setText("Progress is "+ progess + (arg2 ? " Trigger" : " Nontrigger") + " by user.");
            }

            public void onStartTrackingTouch(SeekBar arg0) {
                // nothing to do                
            }

            public void onStopTrackingTouch(SeekBar arg0) {
                // nothing to do                   
            }           
        });

相關連結:我的Andriod開發相關文章

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.