溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android學習筆記:進度條ProgressBar和線程

發(fā)布時間:2020-07-12 17:06:19 來源:網絡 閱讀:1120 作者:imjam 欄目:移動開發(fā)

ProgressBar是進度條,android中的指示器,先看效果圖

Android學習筆記:進度條ProgressBar和線程



上圖中水平進度條可以看見有兩種顏色,淺色的是SecondaryProgress,可以用作展示中間進度用。

ProgressBar是有多種樣式的,有水平的和圓圈打轉的。若需要指示進度的可以使用水平的,其他樣式在可以在android api文檔找到

Other progress bar styles provided by the system include:

  • Widget.ProgressBar.Horizontal

  • Widget.ProgressBar.Small

  • Widget.ProgressBar.Large

  • Widget.ProgressBar.Inverse

  • Widget.ProgressBar.Small.Inverse

  • Widget.ProgressBar.Large.Inverse

先看下布局文件activity_main.xml 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.jam.testprogressbar.MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <ProgressBar
        android:id="@+id/id_firstbar_id"
        android:layout_width="150dp"
        android:layout_height="wrap_content"
        
        android:visibility="gone" />

    <ProgressBar
        android:id="@+id/id_spinningbar_id"
        android:layout_width="150dp"
        android:layout_height="wrap_content" 
        android:visibility="gone"/>
    
    <Button 
        android:id="@+id/id_buttonfirst"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="addfirst"/>
    
        <Button 
        android:id="@+id/id_buttonsecond"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="addsecond"/>

</LinearLayout>

布局簡單,若要修改ProgressBar,只需要改style的內容即可。


然后是MainActivity.java 的內容:

package com.jam.testprogressbar;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;


public class MainActivity extends Activity {

	//聲明控件
	private ProgressBar firstProgressBar;
	private ProgressBar secondProgressBar;
	private Button buttonFirst;
	private Button buttonSecond;
	
	private int i = 0;
	private int j = 0;
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        firstProgressBar = (ProgressBar) findViewById(R.id.id_firstbar_id);
        secondProgressBar = (ProgressBar) findViewById(R.id.id_spinningbar_id);
        buttonFirst = (Button) findViewById(R.id.id_buttonfirst);
        buttonSecond = (Button) findViewById(R.id.id_buttonsecond);
        
        /**
         * 給第一個按鈕綁定匿名內部類
         * 在i==0時,顯示兩個ProgressBar
         * i《100 時,每按一次就加10。
         * 當i超過100,則隱藏兩個ProgressBar
         */
        buttonFirst.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				if(i == 0) {
					firstProgressBar.setVisibility(View.VISIBLE);
					secondProgressBar.setVisibility(View.VISIBLE);
					i += 10;
					j = i;
					firstProgressBar.setProgress(i);
					firstProgressBar.setSecondaryProgress(j);
				} else if( i < 100){
					i += 10;
					j = i;
					firstProgressBar.setProgress(i);
				} 
				else {
						i = 0;
						j = i;
						firstProgressBar.setVisibility(View.GONE);
						secondProgressBar.setVisibility(View.GONE);
				}
			} 
		});
        
        /**
         * 第二個按鈕,對SecondaryProgress進行設置。
         */
        buttonSecond.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				if(i != 0) {
					j += 10;
					firstProgressBar.setSecondaryProgress(j);
				}
			}
		});
    }

}

實現進度條代碼比較簡單,在api文檔中有例子和其他具體方法,不一一介紹。




除了主線程之外的線程都叫worker thread。

ProgressBar要與線程使用,只需要寫一個類繼承Thread或者實現Runnable即可。


注意:在原則上來說,除主線程之外,其他線程不允許訪問主線程的UI,但ProgressBar除外




向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI