編輯:Android編程入門
ProgressBar時android用於顯示進度的組件。當執行一個比較耗時的操作(如io操作、網絡操作等),為了避免界面沒有變化讓用戶體驗降低,提供一個進度條可以讓用戶知道程序還在運行。
一、ProgressBar有如下幾種常見樣式
1、默認進度條的樣式為圓圈(為中等大小的圓圈)
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
注意,當樣式為圓圈時,其進度不停的在旋轉,只是告訴用互程序在執行,無法精確地告訴用戶具體進度。
而且默認顯示就是旋轉的,還無法讓它停下來,只有通過程序讓其隱藏(比如任務處理完成時)。
如果想要顯示為圓形的,又要控制其停頓和旋轉,需要用自定義的方式,這個不在這裡介紹。
隱藏進度條,很簡單:xxxx.setVisibility(View.GONE);
2、顯示為大的尺寸的圓圈
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
3、顯示為小的尺寸的圓圈
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
可以直接設置 layout_width 和 layout_height為具體的值,來控制圓圈的半徑。
4、顯示為直條形的
<ProgressBar
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
對於直條形的樣式,不僅可以讓它向圓形一樣,默認就是進度不停變化;而且還可以精確控制其進度,下面會重點介紹。
二 、直條形進度條
設置為一直在旋轉的樣式
<ProgressBar
android:id="@+id/progress1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:indeterminate="true"
/>
設置indeterminate屬性為true,就可以顯示時進度條一直在變化,該屬性默認是false的。
如果想讓它停止變化,可以通過代碼控制:
ProgressBar pro1 = (ProgressBar) findViewById(R.id.progress1);
pro1.setIndeterminate(false);
如果想讓它停止時,進度顯示完成,可以如下代碼:
pro1.setProgress(100);
注意進度條的默認最大大小是100,可以通過setMax來設置自己需要的值。
三、精確控制進度(和AsyncTask結合)
代碼如下
public void startProgress(View view) { final ProgressBar pro1 = (ProgressBar) findViewById(R.id.progress1); new AsyncTask<Integer, Integer, Integer>() { @Override protected Integer doInBackground(Integer... params) { for (int i = 1; i <= 100; i++) doSomethingTask(i); return 100; } private void doSomethingTask(int num) { try { Thread.sleep(50); publishProgress(num); } catch (InterruptedException e) { e.printStackTrace(); } } @Override protected void onPostExecute(Integer result) { TextView resultView = (TextView) findViewById(R.id.resultText); resultView.setVisibility(View.VISIBLE); resultView.setText("the result is " + result); super.onPostExecute(result); } @Override protected void onProgressUpdate(Integer... values) { pro1.setProgress(values[0]); super.onProgressUpdate(values); } }.execute(1); }
在AsyncTask的doInBackground方法中執行後台任務(實際上是在另外線程中執行,如io操作、網絡操作。在這個方法中不能操作界面組件),如果想讓進度條顯示中間的進度,就可以在後台任務的執行過程中調用publishProgress方法發送進度。而執行publishProgress方法,會觸發onProgressUpdate方法(該方法在主線程中進行,可以在該方法中更新界面組件,這裡更新的是進度條的進度)。當doInBackground方法執行完畢後,會觸發onPostExecute方法(該方法在主線程中進行,可以在該方法中更新界面組件),可以在該方法中顯示任務完成後的界面,上面例子是在本文view顯示下信息。
通過上面的代碼和例子,基本上就可以滿足大部分場景。最後提一點的是,ProgressBar的進度只能通過代碼控制,無法讓用戶拖動。如果想要讓用戶能夠拖動進度(比如在視頻或音頻播放界面),可以使用SeekBar組件。
1.推送方式基礎知識: 在移動互聯網時代以前的手機,如果有事情發生需要通知用戶,則會有一個窗口彈出,將告訴用戶正在發生什麼事情。可能是未接電話的提示,日歷的
下面我從安卓開發的角度,簡單寫一下如何獲取手機設備信息和手機號碼 准備條件:一部安卓手機、手機SIM卡確保插入手機裡、eclipse ADT和android-s
五種交互方式,分別是:通過廣播交互、通過共享文件交互、通過Messenger(信使)交互、通過自定義接口交互、通過AIDL交互。(可能更多)Service與Thread的
一、在這裡我會先說明兩個基本概念,Broadcast(廣播)和BroadcastReceiver(廣播接收器) 1、Broadcast:是運用在