溫馨提示×

溫馨提示×

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

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

Android編程實(shí)現(xiàn)顯示在標(biāo)題上的進(jìn)度條功能【附源碼下載】

發(fā)布時間:2020-09-08 04:06:15 來源:腳本之家 閱讀:142 作者:Bear 欄目:移動開發(fā)

本文實(shí)例講述了Android編程實(shí)現(xiàn)顯示在標(biāo)題上的進(jìn)度條功能。分享給大家供大家參考,具體如下:

今天我們來學(xué)習(xí)一下Android中顯示在Activity標(biāo)題上的進(jìn)度條。在這個例子當(dāng)中我們還能夠?qū)W習(xí)到很多關(guān)于AsyncTask的知識。

(1)準(zhǔn)備用于顯示到界面上的四張圖片img01,img02,img03,img04

(2)在Activity的布局文件activity_main.xml中只定義一個線性布局LinearLayout,并為其設(shè)置一個id,代碼如下:

<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"
  android:id="@+id/main_layout">
</LinearLayout>

(3)Java代碼部分,通過requestWindowFeature(Window.FEATURE_PROGRESS);語句設(shè)置Activity標(biāo)題欄為有進(jìn)度條風(fēng)格,然后實(shí)例化并啟動一個MyTask對象,代碼如下:

public class MainActivity extends Activity {
  //圖片id數(shù)組
  private int[] imageIds = { R.drawable.img01, R.drawable.img02,
      R.drawable.img03, R.drawable.img04 };
  private LinearLayout mainLayout;
  /**
   * Activity的入口方法
   */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //設(shè)置標(biāo)題欄有進(jìn)度條
    requestWindowFeature(Window.FEATURE_PROGRESS);
    setContentView(R.layout.activity_main);
    mainLayout = (LinearLayout)findViewById(R.id.main_layout);
    //實(shí)例化MyTask并開始執(zhí)行
    new MyTask().execute();
  }
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
  }
  /**
   * 自定義繼承AsyncTask的異步類MyTask
   */
  class MyTask extends AsyncTask<Void, Integer, LinearLayout>{
    /**
     * 在doInBackground()方法之前執(zhí)行的方法
     */
    @Override
    protected void onPreExecute() {
      super.onPreExecute();
      //設(shè)置標(biāo)題欄的進(jìn)度條可見
      setProgressBarVisibility(true);
    }
    /**
     * 后臺執(zhí)行的耗時操作
     */
    @Override
    protected LinearLayout doInBackground(Void... params) {
      LinearLayout ll = new LinearLayout(MainActivity.this);
      ll.setOrientation(LinearLayout.VERTICAL);
      ll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
      for(int i=1; i<5; i++){
        ImageView iv = new ImageView(MainActivity.this);
        iv.setLayoutParams(new LayoutParams(200, 100));
        iv.setImageResource(imageIds[i-1]);
        ll.addView(iv);
        new Thread(){
          public void run() {
            try {
              //休眠20毫秒
              Thread.sleep(20);
            } catch (Exception e) {
              e.printStackTrace();
            }
          };
        }.start();
        //要求更新進(jìn)度條,會引起調(diào)用onProgressUpdate()方法
        publishProgress(i);
      }
      return ll;
    }
    /**
     * 更新進(jìn)度條
     */
    @Override
    protected void onProgressUpdate(Integer... values) {
      super.onProgressUpdate(values);
      //參數(shù)值為0-10000,所以要乘以2500,values[0]取值分別是1,2,3,4
      setProgress(values[0] * 2500);
    }
    /**
     * 后臺操作執(zhí)行完畢后所要執(zhí)行的方法
     */
    @Override
    protected void onPostExecute(LinearLayout result) {
      super.onPostExecute(result);
      mainLayout.addView(result);
    }
  }
}

右鍵運(yùn)行android project,效果如下:

Android編程實(shí)現(xiàn)顯示在標(biāo)題上的進(jìn)度條功能【附源碼下載】

進(jìn)度條執(zhí)行完畢后,界面會顯示四張圖片。

附:完整實(shí)例代碼點(diǎn)擊此處本站下載。

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android開發(fā)入門與進(jìn)階教程》、《Android調(diào)試技巧與常見問題解決方法匯總》、《Android多媒體操作技巧匯總(音頻,視頻,錄音等)》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)》

希望本文所述對大家Android程序設(shè)計(jì)有所幫助。

向AI問一下細(xì)節(jié)

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

AI