android - 开发中进度条的选择
ringa_lee
ringa_lee 2017-04-18 09:16:17
0
4
526

使用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_lee
ringa_lee

ringa_lee

Antworte allen(4)
Peter_Zhu

这个我也提不出什么有建设性的意见,有时候为求省事,我会写一个ProgressBar的xml界面,使用时inflate并直接将其插入到rootView当中,愿意的话在BaseActivity中把这个逻辑再封装一层,这样的话基本能满足一些简单的需求。
再复杂一些的话就是让progressBar与用户的操作互动起来,比如说某个编辑界面有图片上传的入口,用户在选择图片后等待上传的这段时间我们就可以将提交键修改为Progress Widget,既阻止了用户的操作还能有效提示进度。
至于ProgressDialog,我觉得它阻塞性太强了,除了在某些强逻辑顺序的场景,例如必须加载某些文件才能进行下步操作的情况下,否则一般不推荐用这个。

Ty80

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

Application为例:

  1. 写一个Activity, 作为Dialog弹出的代理

  2. startActivity(Intent)

Peter_Zhu

我其实对提问中“没有正确提供上下文”的场景是什么样的场景问题,更感兴趣。题主碰到了哪些progressbar可以拿到上下文而progressdialog拿不到的场景?

巴扎黑

不是 activity 或者 fragment 的容器,那这个容器在被创造出来的时候肯定是在 activity 或者 fragment 中,
如果不在,那么他的父容器或者父父容器肯定在是在 activity 或者 fragment 中。
既然如此,那么你就可以通过构造方法一级一级往下传递上下文不就 O 了

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage