Android 第十二課——UI ProgressBar

Android UI 圖:java

7 ProgressBarandroid

進度條視圖,這種視圖有兩種方式展現,一種是不知道何時能夠結束的旋轉視圖展現,例如咱們web後臺請求是根本不知道後臺何時能夠返回數據;一種是進度條展現,相似於下載,這種明確知道共有多少數據,已經獲取到了多少數據的進度條展現。web

1)旋轉圖標:ide

注意:當請求完成是應該隱藏圖標,任務開始時顯示圖標。post

經過設置 ProgressBar 的 Visibility 屬性爲 View.GONE (值 8)來隱藏它。INVISIBLE 和 GONE 常量的區別在於 INVISIBLE 常量只是隱藏 ProgressBar(ProgressBar 仍舊在活動中佔據空間)。GONE 常量則從活動中移除 ProgressBar 視圖,它再也不佔據任何空間。View.VISIBLE天然就是顯示的意思。只有這三個值,並且是與其餘組件通用屬性,在xml中使用標籤:android:visibilitythis

layout.xml 代碼:spa

<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" 
     >
    <Button 
        android:id="@+id/start_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="動做開始"/>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="當前進度:"
        />
    <ProgressBar 
       	android:id="@+id/progress_btn"
       	android:layout_width="match_parent"
       	android:layout_height="wrap_content"
       	android:visibility="visible"
       	/>
</LinearLayout>

Activity代碼:code

public class ProgressBarActivity extends Activity {
	
	private ProgressBar bar;
	private Button btn;
	
	private int progressStatus;
	private Handler handler;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		this.setContentView(R.layout.activity_progressbar);
		
		bar = (ProgressBar)findViewById(R.id.progress_btn);
		btn = (Button)findViewById(R.id.start_btn);
		btn.setOnClickListener(new BtnClickImpl());
		
		handler = new Handler();
	}
	class BtnClickImpl implements OnClickListener{

		@Override
		public void onClick(View view) {
			// TODO Auto-generated method stub
			new Thread(){
				public void run() {
					// 開始
					handler.post(new Runnable() {
						@Override
						public void run() {
							// TODO Auto-generated method stub
							Toast.makeText(ProgressBarActivity.this,"開始...", Toast.LENGTH_SHORT).show();
							//bar.setMax(100);
							bar.setVisibility(View.VISIBLE);
						}
					});
					// 運行中....
					while(progressStatus < 100){
						progressStatus++;
						try {
							Thread.sleep(50l);
						} catch (InterruptedException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						handler.post(new Runnable() {
							public void run() {
								// TODO Auto-generated method stub
								//bar.setProgress(progressStatus);
							}
						});
					}
					// 結束
					handler.post(new Runnable() {
						@Override
						public void run() {
							// TODO Auto-generated method stub
							Toast.makeText(ProgressBarActivity.this, "動做完成..", Toast.LENGTH_SHORT).show();
							progressStatus = 0;
							bar.setVisibility(View.GONE);
						}
					});
				};
			}.start();
		}
	}
}

效果:xml

2)進度條圖標get

注意:當請求開始時:設置progressBar的最大值,以及初始化他的progress(起始值);請求結束時:隱藏進度條,把progress設置爲初始值。在運行中,經過不斷改變progress的值,來展現進度條的具體進度。

layout.xml

<ProgressBar 
       	android:id="@+id/progress_btn"
       	android:layout_width="match_parent"
       	android:layout_height="wrap_content"
       	android:visibility="visible"
       	style="@android:style/Widget.ProgressBar.Horizontal"
       	/>

Activity.java代碼和上面的差不了多少,只要把單行註釋放開便可。

效果:

相關文章
相關標籤/搜索