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代碼和上面的差不了多少,只要把單行註釋放開便可。
效果: