Java 为什么Android';什么是进度对话?

Java 为什么Android';什么是进度对话?,java,android,user-interface,Java,Android,User Interface,当我意识到Android的进度对话框或微调器中没有取消按钮时,我面临着一个类似于(2008年1月)经历的令人挠头的时刻。现在是2009年7月,我刚刚安装了Android的纸杯蛋糕版本。这件事变了吗?如果没有,你是在对话框中添加取消按钮吗?你是怎么做的?我不是安卓用户或开发者,但我认为链接到线程中给出的答案相当不错:所有安卓设备上都有一个硬件“后退”键。用户应该知道,无论他们目前从事什么活动,都要背靠背地按 因此,UI设计者觉得没有必要包含GUI后退/取消按钮。这可以看作是该原则的UI应用;如果已

当我意识到Android的进度对话框或微调器中没有取消按钮时,我面临着一个类似于(2008年1月)经历的令人挠头的时刻。现在是2009年7月,我刚刚安装了Android的纸杯蛋糕版本。这件事变了吗?如果没有,你是在对话框中添加取消按钮吗?你是怎么做的?

我不是安卓用户或开发者,但我认为链接到线程中给出的答案相当不错:所有安卓设备上都有一个硬件“后退”键。用户应该知道,无论他们目前从事什么活动,都要背靠背地按


因此,UI设计者觉得没有必要包含GUI后退/取消按钮。这可以看作是该原则的UI应用;如果已经有一种方法可以做某事,那就足够了。

这里的答案就是硬件键。我会小心地将干式原理推广到UIs。在很多情况下,你需要通过标题、正文、颜色和图像反复向用户敲打、敲打、敲打同一点


用户不会像你读小说那样“读”用户界面。他们扫描阅读

我不能为其他应用说话,但在我的应用中,任何可能导致UI线程等待的操作都是在单独的线程中执行的。我最多要做的就是在标题栏中显示一个小进度微调器,让用户知道后台正在发生什么事情。

不确定整个取消按钮……我听说onCancel()方法无法正常启动。我的解决方案就是在对话框上创建一个普通按钮,并在按下按钮时调用return

private void createCancelProgressDialog(String title, String message, String buttonText)
{
    cancelDialog = new ProgressDialog(this);
    cancelDialog.setTitle(title);
    cancelDialog.setMessage(message);
    cancelDialog.setButton(buttonText, new DialogInterface.OnClickListener() 
    {
        public void onClick(DialogInterface dialog, int which) 
        {
            // Use either finish() or return() to either close the activity or just the dialog
            return;
        }
    });
    cancelDialog.show();
}
然后只需使用活动中其他地方的简单调用方法

createCancelProgressDialog("Loading", "Please wait while activity is loading", "Cancel");
这是一个相当简单的解决方案,但它确实起到了作用;)
还需要注意的是cancelDialog是一个活动擦除变量,如果您不需要从其他地方调用它,那么您应该能够将变量的范围仅限于该方法。

作为Android用户和开发者,我可以说,在我看来,基于我对平台的理解,默认情况下,在“取消自由进度”对话框上没有“取消”按钮是有充分理由的

作为开发人员,默认情况下不能取消这些对话框,也就是说,您必须明确地将它们设置为可取消

这是有意义的,因为它们的目的是在用户继续使用应用程序之前,通过UI线程提醒用户某些对更新UI线程很重要的工作正在其他地方进行

例如,当获取要占用空屏幕的数据列表时,没有任何可交互的内容,用户需要了解正在发生的事情,并期望在该过程完成之前没有可交互的内容

但是,在某些情况下,例如从internet检索数据时,过程可能“粗略”,并且由于连接问题,您可能无法完成请求,并被困在此处

这是一个可以使对话框取消的开发

现在,作为一个用户,一个清楚理解Android用户界面模式的用户,我知道如果我想回到我以前所做的,或者“取消”当前操作,我应该点击后退键

作为一个用户,知道在安卓系统中,菜单键通常可以显示隐藏的选项也没什么不同,有时在一个看似空白的屏幕上,无法进行交互

这是用户期望的行为,也是平台的设计方式。您完全可以添加一个取消按钮,但从了解其手机的用户角度来看,这没有什么区别,后退键显然是用于此目的的预期选择

活动和UI有一个流程,您可以通过“堆叠”的活动和UI“屏幕”,后退按钮实质上是“弹出”堆栈中的最后一个内容,将您返回到以前的位置。如果将该对话框视为这些活动中的另一个,则需要从堆栈顶部将其弹出,以返回到下面的内容,或者返回之前的活动


如果一个开发人员有一个不能通过back取消的对话框,那么从设计上来说,它可能是很好的原因,或者是开发人员的开发能力差和疏忽。

从历史上看,在UI中,通常认为最好提供多个冗余方法来实现同一任务。如果这就是他们这么做的原因,那么这是一个有趣的方法。在我看来,后退按钮与浏览器后退按钮是同义词。对我(甚至对我办公室的技术人员)来说,按“后退”键会取消对话框是不直观的。然后,你只需等待对话框关闭,或者在微调器中选择已选择的项目。通常,退出进度对话框不会取消操作,因为应用程序无论如何都应该在线程中执行长时间运行的进程。除非他们正在寻找关闭对话框,否则这个过程无论如何都会在某个时候完成。如果程序员认为取消按钮有用,他们可以很容易地添加它。没有必要在默认情况下使用它,因为并非所有情况下都需要它。但问题是,返回并不意味着取消。例如,如果将PreferencesActivity与复选框preferences一起使用,则在切换按钮状态时,会立即提交首选项更改。因此,更改设置后按back不会取消;你将处于相同的状态。请参阅以了解更多关于此的信息。