设为首页 加入收藏

TOP

Kotlin入门(20)几种常见的对话框(三)
2019-09-01 23:14:46 】 浏览:66
Tags:Kotlin 入门 常见 对话
然与Spinner的选择对话框殊途同归。下面给出AlertDialog对应selector函数的Java实现代码,方便读者理解它的本质:

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("请选择行星");
    builder.setItems(satellites, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            Toast.makeText(SpinnerDialogActivity.this, "你选择的行星是"+starArray[arg2], Toast.LENGTH_LONG).show();
        }
    });
    builder.create().show();

  


进度对话框
App加载网页之类的请求服务端行为,经常属于耗时操作,往往要过好几秒才能加载完毕,在此期间为了减少用户的等待焦灼感,界面需要展示正在加载的动画,一方面避免造成App卡死的错觉,另一方面提示用户耐心等待。这时就用到了进度对话框,在加载开始前弹出进度框,加载结束后关闭进度框,从而改善了加载交互的用户体验。
进度对话框分两种,一种是水平进度对话框,另一种是圆圈进度对话框,下面分别进行介绍。
水平进度对话框
水平进度对话框允许实时刷新当前进度,方便用户知晓已处理的进展百分比。它主要包含几个元素,包括消息标题、消息内容、对话框样式(水平还是圆圈)、当前进度这四种,如果使用Java代码实现该对话框,则是很常规的编码风格,具体的Java代码例子如下:

    ProgressDialog dialog = new ProgressDialog(this);
    dialog.setTitle("请稍候");
    dialog.setMessage("正在努力加载页面");
    dialog.setMax(100);
    dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    dialog.show();

 

水平进度对话框的Java编码,看起来十分中规中矩,可是仍然显得拖泥带水,很简单的功能也花费了六行Java代码。倘若使用Kotlin书写,则借助于Anko库只需下面两行代码:

    val dialog = progressDialog("正在努力加载页面", "请稍候")
    dialog.show()

 

瞧瞧,水平进度对话框的实现代码顿时变得清爽了许多,其界面效果与Java是完全一样的。当然,因为用到了Anko库的扩展函数,所以务必在代码头部加上一行导入语句:

import org.jetbrains.anko.progressDialog

 

在水平进度对话框弹出之后,若想更新水平条的进度值,则可调用以下代码设置当前进度:

    dialog.progress = 进度值(取值为0到100)

当进度值达到100,意味着处理完成,此时即可调用对话框对象的dismiss函数关闭对话框,下图展示了水平进度对话框的进度变化效果。

圆圈进度对话框
圆圈进度对话框仅仅展示转圈的动画效果,不支持实时刷新处理进度,自然在编码上比水平对话框会简化一些,可是用Java来显示圆圈进度对话框,依旧需要下列的五行代码:

    ProgressDialog dialog = new ProgressDialog(this);
    dialog.setTitle("请稍候");
    dialog.setMessage("正在努力加载页面");
    dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    dialog.show();

 

如果用Kotlin实现该对话框的话,有了水平进度对话框的的先例,不出意料只需以下的两行Kotlin代码就行了:

    val dialog = indeterminateProgressDialog("正在努力加载页面", "请稍候")
    dialog.show()

 

注意到上面的Kotlin函数采取了前缀indeterminate,该单词意思是“模糊的、不定的”,表示这种对话框的处理进度是不确定的,不像水平进度对话框可以明确指定当前进度,据此开发者能够将progressDialog与indeterminateProgressDialog两个函数区分开。由于该函数同样来自于Anko库,因此不要忘了在用到的代码文件头部加入下面这行语句:

import org.jetbrains.anko.indeterminateProgressDialog

 

Kotlin实现的圆圈进度对话框,转圈效果等同于Java实现的效果,具体的对话框界面如下图所示。

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇使用git将Android源码上传到github 下一篇喜闻乐见-Android应用的生命周期

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目