还在用 progressdialog 吗?官方已不推荐快看替代方案!

吉云

今天倒腾一下那个进度提示的东西,就是以前咱们经常用的ProgressDialog

我就是想在做一个网络请求的时候,给用户一个提示,告诉他“正在加载,别急”。脑子里第一个蹦出来的就是ProgressDialog,毕竟用那么多年,顺手得很。

我就按照老习惯,准备在代码里直接new一个ProgressDialog出来,设置个提示文字,比如“正在拼命加载中...”,然后调用show()方法,想着几行代码就搞定,简单快捷。

还在用 progressdialog 吗?官方已不推荐快看替代方案!

遇到的情况

结果?代码敲上去,编辑器就给我画个删除线,提示说这玩意儿被弃用!我当时心里“咯噔”一下,啥情况?这么好用的东西怎么就不用。

不死心,我还是跑一下程序,确实能跑,样子也还是那个老样子,一个灰色的框框,中间一个转圈的菊花,加上我设置的文字。但是那个删除线看着实在膈应,而且官方都说弃用,肯定有它的道理,咱也不能老抱着旧东西不放。

找替代方案

于是我就去查查,现在都推荐用啥来替代。网上搜一圈,大概有这么几种说法:

    还在用 progressdialog 吗?官方已不推荐快看替代方案!

  • 直接用ProgressBar控件,把它放在布局文件里,需要显示进度的时候就让它显示出来,不需要就隐藏掉。
  • AlertDialog来自定义一个加载中的对话框,灵活性更高,想做成啥样都行。
  • 还有推荐用DialogFragment来管理这个加载框的生命周期,据说更规范。

看看,DialogFragment感觉有点小题大做,我就想简单显示个加载状态。AlertDialog自定义倒是挺灵活,但是也得多写不少布局和代码。

最终的选择和实践

还在用 progressdialog 吗?官方已不推荐快看替代方案!

我决定试试最简单的方案,就是用ProgressBar

实践过程大概是这样的:

  1. 先在我的界面布局文件(XML)里,加一个ProgressBar控件。一开始我让它是隐藏的(visibility="gone")。
  2. 然后在我的代码里,找到这个ProgressBar
  3. 在开始网络请求之前,我把这个ProgressBar的可见性设置成VISIBLE,它就显示出来开始转圈。
  4. 还在用 progressdialog 吗?官方已不推荐快看替代方案!

  5. 等网络请求成功或者失败,总之就是结束的时候,再把它的可见性设置回GONE,它就又隐藏起来。

这么一搞,效果也差不多,界面上多一个小小的转圈动画,提示用户正在加载。关键是,这么做代码里没有那个弃用的警告,心里踏实多。

感觉,虽然ProgressDialog用起来是简单粗暴,直接弹个框,但确实有点影响用户体验,有时候用户可能还想看看后面的内容。用ProgressBar嵌入到布局里,就显得自然多,不打断用户的操作流。

虽然一开始有点不习惯,但试试新的ProgressBar方式,发现也挺好用的。以后做加载提示,我估计就直接用ProgressBar或者根据需要用AlertDialog来自定义,ProgressDialog这老伙计,是时候跟它说再见。

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]