使用Progress
控件很方便,但是如果有居中需求的话,某些场景会增加一层布局嵌套
而且每个布局都要书写,很麻烦
而使用ProgressDialog
书写起来很方便,但是某些场景不能很直接的提供正确的上下文.(容器不是activity
或 fragment
时)
各位大哥在实际开发中如何实现进度条的需求的?
//我尝试这样操作的情况,下 在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);
这个我也提不出什么有建设性的意见,有时候为求省事,我会写一个ProgressBar的xml界面,使用时inflate并直接将其插入到rootView当中,愿意的话在BaseActivity中把这个逻辑再封装一层,这样的话基本能满足一些简单的需求。
再复杂一些的话就是让progressBar与用户的操作互动起来,比如说某个编辑界面有图片上传的入口,用户在选择图片后等待上传的这段时间我们就可以将提交键修改为Progress Widget,既阻止了用户的操作还能有效提示进度。
至于ProgressDialog,我觉得它阻塞性太强了,除了在某些强逻辑顺序的场景,例如必须加载某些文件才能进行下步操作的情况下,否则一般不推荐用这个。