Heim  >  Artikel  >  Backend-Entwicklung  >  Android-UI-Steuerelementserie: ProgressBar (Fortschrittsbalken)

Android-UI-Steuerelementserie: ProgressBar (Fortschrittsbalken)

黄舟
黄舟Original
2017-01-19 09:40:572299Durchsuche

Wenn Android einige Hintergrundvorgänge ausführt, z. B. das Laden von Spielen und das Abspielen von Liedern, kennt der Benutzer den Fortschritt der Programmausführung nicht. Zu diesem Zeitpunkt kann der Fortschrittsbalken verwendet werden, um den Fortschritt anzuzeigen.

Das Android-System bietet zwei Arten von Fortschrittsbalken, den langen Fortschrittsbalken (progressBarStyleHorizontal) und den kreisförmigen Fortschrittsbalken (progressBarStyleLarge). Der Standard-Fortschrittsbalken auf der Android-Plattform ist der zweite Typ. Darüber hinaus können Sie auch einen Fortschrittsbalken in der Titelleiste des Formulars festlegen. Dazu müssen Sie den Anzeigestil des Formulars „requestWindowFeature(Window.FEATURE_PROGRESS)“ festlegen setProgressBarVisibility(true); Methode zur Anzeige

Das Folgende ist ein Beispiel, das aus einem Titelleisten-Fortschrittsbalken, einem langen Fortschrittsbalken und einem kreisförmigen Fortschrittsbalken besteht und von Threads gesteuert wird.

Hinweis: Der kreisförmige Fortschrittsbalken zeigt keinen spezifischen Fortschritt an, sondern dreht sich einfach

package org.hualang.progress;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.ProgressBar;

public class ProgressBarTest extends Activity
{
        //声明ProgressBar对象
        private ProgressBar pro1;
        private ProgressBar pro2;
        private Button btn;
        protected static final int STOP_NOTIFIER = 000;
        protected static final int THREADING_NOTIFIER = 111;
        public int intCounter=0;
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
                super.onCreate(savedInstanceState);
                //设置窗口模式,,因为需要显示进度条在标题栏
                requestWindowFeature(Window.FEATURE_PROGRESS);
                //设置标题栏上的进度条可见
                setProgressBarVisibility(true);
                setContentView(R.layout.main);

                //取得ProgressBar
                pro1 = (ProgressBar) findViewById(R.id.progress1);
                pro2= (ProgressBar) findViewById(R.id.progress2);
                btn = (Button)findViewById(R.id.button);
                //设置进度条是否自动运转,即设置其不确定模式,false表是不自动运转
                pro1.setIndeterminate(false);
                pro2.setIndeterminate(false);

                //当按钮按下时开始执行,
            btn.setOnClickListener(new Button.OnClickListener()
            {
              @Override
              public void onClick(View v)
              {
                // TODO Auto-generated method stub

                      //设置ProgressBar为可见状态
                      pro1.setVisibility(View.VISIBLE);
                      pro2.setVisibility(View.VISIBLE);
                      //设置ProgressBar的最大值
                      pro1.setMax(100);
                      //设置ProgressBar当前值
                      pro1.setProgress(0);
                      pro2.setProgress(0);

                      //通过线程来改变ProgressBar的值
                                new Thread(new Runnable() {
                                        public void run()
                                        {
                                                for (int i = 0; i < 10; i++)
                                                {
                                                        try
                                                        {
                                                                intCounter = (i + 1) * 20;
                                                                Thread.sleep(1000);

                                                                if (i == 4)
                                                                {
                                                                        Message m = new Message();

                                                                        m.what = ProgressBarTest.STOP_NOTIFIER;
                                                                        ProgressBarTest.this.myMessageHandler.sendMessage(m);
                                                                        break;
                                                                }
                                                                else
                                                                {
                                                                        Message m = new Message();
                                                                        m.what = ProgressBarTest.THREADING_NOTIFIER;
                                                                        ProgressBarTest.this.myMessageHandler.sendMessage(m);
                                                                }
                                                        }
                                                        catch (Exception e)
                                                        {
                                                                e.printStackTrace();
                                                        }
                                                }
                                        }
                                }).start();
                        }
                });
        }

          Handler myMessageHandler = new Handler()
          {
            // @Override
                  public void handleMessage(Message msg)
                  {
                          switch (msg.what)
                          {
                          //ProgressBar已经是对大值
                          case ProgressBarTest.STOP_NOTIFIER:
                                  pro1.setVisibility(View.GONE);
                                  pro2.setVisibility(View.GONE);
                                  Thread.currentThread().interrupt();
                                  break;
                          case ProgressBarTest.THREADING_NOTIFIER:
                                  if (!Thread.currentThread().isInterrupted())
                                  {
                                          // 改变ProgressBar的当前值
                                          pro1.setProgress(intCounter);
                                          pro2.setProgress(intCounter);

                                          // 设置标题栏中前景的一个进度条进度值
                                          setProgress(intCounter*100);
                                          // 设置标题栏中后面的一个进度条进度值
                                          setSecondaryProgress(intCounter*100);//
                                  }
                                  break;
                          }
                          super.handleMessage(msg);
                 }
          };
}

main.xml

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:orientation="vertical"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    >  
<TextView  
    android:layout_width="fill_parent"  
    android:layout_height="wrap_content"  
    android:text="进度条实例演示"  
    />  
<ProgressBar  
        android:id="@+id/progress1"  
        style="?android:attr/progressBarStyleHorizontal"---设置进度条为长条形  
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content"  
        android:visibility="gone"---设置其不可见  
/>  
<ProgressBar  
        android:id="@+id/progress2"  
        style="?android:attr/progressBarStyleLarge"---设置进度条为圆形进度条  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:max="100"---设置其最大值  
        android:progress="50"---设置当前进度值  
        android:secondaryProgress="70"---设置次要进度值  
        android:visibility="gone"  
/>  
<Button  
        android:id="@+id/button"  
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content"  
        android:text="启动进度条"  
/>  
</LinearLayout>

Die laufenden Ergebnisse sind wie folgt folgt:

Android-UI-Steuerelementserie: ProgressBar (Fortschrittsbalken)

Nachdem Sie auf die Schaltfläche „Fortschrittsbalken starten“ geklickt haben, wird der Fortschrittsbalken automatisch ausgeführt

Android-UI-Steuerelementserie: ProgressBar (Fortschrittsbalken)

Android-UI-Steuerelementserie: ProgressBar (Fortschrittsbalken)

Wenn es beendet ist, wird das Fortschrittsbalkenprogramm automatisch beendet und zum ersten Bild zurückgekehrt

Das Obige ist der Inhalt der Android-UI-Steuerungsserie: ProgressBar (Fortschrittsbalken). Bitte achten Sie auf die chinesische PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn