Android - 在没有对话框的情况下显示不确定的进度条

时间:2009-04-01 06:23:59

标签: android

我想在按钮点击时进行处理时,在屏幕中央显示我的进度条。但我只想要没有对话框的进度条..

我有什么方法可以做到这一点吗?

5 个答案:

答案 0 :(得分:23)

SDK中的ApiDemos全面解释了这一点。 您想要的示例名为:ProgressBar3.java,可以在\ ApiDemos \ src \ com \ example \ android \ apis \ view \

中找到

此外,如果要删除对话框的边框以便只显示进度条,则可以将对话框本身定义为透明视图/叠加层(在示例中也会对此进行说明)。

答案 1 :(得分:22)

如果您不需要对话框,只需将progressBar放在布局中,就像任何其他视图项一样,并将默认情况下的可见性设置为“INVISIBLE”甚至“GONE”。

然后只需在代码中使用setVisibility将其更改为“VISIBLE”时显示它,并在任务完成后通过再次使其“INVISIBLE”或“GONE”重新隐藏它。

e.g。

MyTask {

// get handle on ProgressBar ViewItem defined in XML (id:progressBar)

ProgressBar progressBar = findViewById(R.id.progressBar);


//starting task, show progress bar

progressBar.setVisibility(View.VISIBLE);


// Do some stuff... 


//task done, hide it again

progressBar.setVisibility(View.GONE);

}

这是一个简单版本,全部在UI线程中完成,但如果您使用异步任务或线程处理程序,这应该很容易适应。只需在UI线程中显示,隐藏和发布对话框的任何更新,并在后台执行长时间运行的任务。

答案 2 :(得分:3)

@reflog: 这不是我想要的。

@lostInTransit:

实现这一目标的正确方法如下:

  1. 创建自己的对话框
  2. 将进度条设置为对话框中的唯一视图
  3. 设置对话框窗口背景透明
  4. 显示对话框。
  5. 就是这样。它适用于1.5至2.1的设备。没试过2.2。

    -Yogesh

答案 3 :(得分:2)

@Jesse Finnerty的回答解决了我的问题。 我做的是:

private ProgressBar mprogressBar;

内部oncreate()就像我做的其他按钮和textviews一样,     mprogressBar =(ProgressBar)findViewById(R.id.progressBar);

然后在我希望旋转轮出现的地方我发出命令

mprogressBar.setVisibility(View.VISIBLE);

在我希望它消失的地方。

mprogressBar.setVisibility(View.INVISIBLE);

这实际上是在切换下。这样当程序中的状态发生变化时,进度条会出现并消失

答案 4 :(得分:1)

有一个很好的例子可以做Yogesh的建议:

How to center progress indicator in ProgressDialog easily (when no title/text passed along)

信用证转到Macarse发布。