【Android基础】第一行代码-kotlin应用
求N个数的最大最小值
vararg关键字,它允许方法接收任意多个同 等类型的参数,正好满足我们这里的需求。以新建一个Max.kt文件,并在其中自 定义一个max()函数。


Java中规定,所有类型的数字都是可比较的,因此必须实现Comparable接口,这个规则在 Kotlin中也同样成立。那么我们就可以借助泛型,将max()函数修改成接收任意多个实现 Comparable接口的参数。

将泛型T的上界指定成了Comparable,那么参数T就必然是 Comparable的子类型了

简化Toast
可以给String类和Int类各添加一个扩展函数,并在里面封装弹出Toast的具体逻 辑。这样以后每次想要弹出Toast提示时,只需要调用它们的扩展函数就可以了。新建一个Toast.kt文件,并在其中编写如下代码:

![]()
![]()
这里分别给String类和Int类新增了一个showToast()函数,并让它们都接收一个Context 参数。然后在函数的内部,我们仍然使用了Toast原生API用法,只是将弹出的内容改成了 this,另外将Toast的显示时长固定设置成Toast.LENGTH_SHORT。
这种写法其实还存在一个问题,就是Toast的显示时长被固定了,如果我现在想要使用 Toast.LENGTH_LONG类型的显示时长该怎么办呢?

这样我们之前所使用的showToast()函数的写法将完全不受影响,默认会使用 Toast.LENGTH_SHORT类型的显示时长。而如果你想要使用Toast.LENGTH_LONG的显示时 长,只需要这样写就可以了:
![]()
简化Snackbar

Snackbar还可以调用setAction()方法来设置一个额外的点 击事件。除了这些区别之外,Snackbar和Toast的其他用法都是相似的。
新建一个Snackbar.kt文件

和刚才的showToast()函数比较相似。只是我们将扩展函数添 加到了View类当中,并在参数列表上声明了Snackbar要显示的内容以及显示的时长。另外, Snackbar和Toast类似,显示的内容也是支持传入字符串和字符串资源id两种类型的,因此这 里我们给showSnackbar()函数进行了两种参数类型的函数重载。
我们可以让showSnackbar()函数再额外接 收一个函数类型参数,以此来实现Snackbar的完整功能支持。

增加了 一个用于传递给setAction()方法的字符串或字符串资源id。这里我们需要将新增的两个参数 都设置成可为空的类型,并将默认值都设置成空,然后只有当两个参数都不为空的时候,我们 才去调用Snackbar的setAction()方法来设置额外的点击事件。如果触发了点击事件,只需 要调用函数类型参数将事件传递给外部的Lambda表达式即可。

更多推荐



所有评论(0)