搜尋

首頁  >  問答  >  主體

android - 开发中进度条的选择

使用Progress控件很方便,但是如果有居中需求的话,某些场景会增加一层布局嵌套
而且每个布局都要书写,很麻烦

而使用ProgressDialog 书写起来很方便,但是某些场景不能很直接的提供正确的上下文.(容器不是activityfragment 时)

各位大哥在实际开发中如何实现进度条的需求的?

//我尝试这样操作的情况,下 在app第一次进入的时候,我点击按钮向容器上添加progressbar的时候,这个progressbar是不会旋转的,卡在界面上
//而关闭这个activity后(app中还有activity存在),再次进入activity 继续添加,这时候progressbar就会旋转了,这是为什么呢?
ProgressBar progressBar = new ProgressBar(this);
ViewGroup decorView = (ViewGroup) getWindow().getDecorView();
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.CENTER);
progressBar.setLayoutParams(layoutParams);
decorView.addView(progressBar);
ringa_leeringa_lee2771 天前534

全部回覆(4)我來回復

  • 天蓬老师

    天蓬老师2017-04-18 09:18:17

    這個我也提不出什麼有建設性的意見,有時候為求省事,我會寫一個ProgressBar的xml界面,使用時inflate並直接將其插入到rootView當中,願意的話在BaseActivity中把這個邏輯再封裝一層,這樣的話基本上可以滿足一些簡單的需求。
    再複雜一點的話就是讓progressBar與用戶的操作互動起來,比如說某個編輯介面有圖片上傳的入口,用戶在選擇圖片後等待上傳的這段時間我們就可以將提交鍵修改為Progress Widget,既封鎖了使用者的操作還能有效提示進度。
    至於ProgressDialog,我覺得它阻塞性太強了,除了在某些強邏輯順序的場景,例如必須加載某些文件才能進行下步操作的情況下,否則一般不推薦用這個。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-18 09:18:17

    只要能取得到Context, 那就接着用ProgressDialog

    Application為例:

    1. 寫一個Activity, 作為Dialog彈出的代理

    2. startActivity(Intent)

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:18:17

    我其實對提問中「沒有正確提供上下文」的場景是什麼樣的場景問題,更感興趣。題主碰到了哪些progressbar可以拿到上下文而progressdialog拿不到的場景?

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:18:17

    不是 activity 或 fragment 的容器,那麼這個容器在被創造出來的時候肯定是在 activity 或者 fragment 中,
    如果不在,那麼他的父容器或者父父容器肯定在是在 activity 或者 fragment 中。
    既然如此,那麼你就可以用構造法一級一級往下傳遞上下文不就 O 了

    回覆
    0
  • 取消回覆