什么是KTX(Kotlin扩展库),为什么它在android开发中越来越受欢迎

时间:2018-02-07 04:34:03

标签: android kotlin kotlin-android-extensions android-ktx

如何开始使用KTX for android?

3 个答案:

答案 0 :(得分:6)

Android KTX - 一组扩展程序,旨在使Android编写Kotlin代码更简洁,惯用且令人愉快。 Android KTX在Android框架和支持库之上提供了一个很好的API层,使您的Kotlin代码编写更加自然。

例如,

在Kotlin中解析String到URI(传统方式)

我们

val uri = Uri.parse(myUriString)

通过使用KTX,我们可以将上面的代码简化为

val uri = myUriString.toUri()

您可以参考此博客了解更多详情

https://android-developers.googleblog.com/2018/02/introducing-android-ktx-even-sweeter.html?m=1

由于锅炉板代码较少,我认为它会越来越受欢迎。

答案 1 :(得分:4)

  

What is KTX (From developer blog)

Android KTX - 一组扩展程序,旨在使Android编写Kotlin代码更简洁,惯用且令人愉快。 Android KTX在Android框架和支持库之上提供了一个很好的API层,使您的Kotlin代码编写更加自然。

Android KTX中涵盖Android框架的部分现已在GitHub repo中提供。我们邀请您试一试,向我们提供您的反馈和贡献。涵盖Android支持库的Android KTX的其他部分将在即将发布的支持库版本中提供。 Packages details)功能

观看Introducing Android KTX: Even Sweeter Kotlin Development for Android

  

为何获得人气

作为开发人员,在不牺牲性能,稳定性或控制的情况下,能够编写更短且更易读的代码几乎总是可取的。虽然Kotlin的语法和语言功能使其非常适合Android,但它仍然不是专为Android设计的,因此有很多平台特定的模式需要大量的样板代码。为此,发布了一个名为Android KTX的新扩展库。

例如

enter image description here

值得注意的是,这仍然是一个预览版,谷歌的博客文章指出,API可能会在库离开预览状态之前发生变化。换句话说,小心在项目中使用它,因为它们可能会随着API的变化而中断。然而,如果您找到改进库或新扩展建议的方法,那么尝试并向团队提供反馈可能会很有趣。如果您想试用Android KTX,请查看官方博客文章,了解更多示例和设置说明。

答案 2 :(得分:2)

function sendNotification (data) {
    if (data == undefined || !data) { return false }
    var title = (data.title === undefined) ? 'Notification' : data.title
    var clickCallback = data.clickCallback
    var message = (data.message === undefined) ? 'null' : data.message
    var icon = (data.icon === undefined) ? 'https://cdn2.iconfinder.com/data/icons/mixed-rounded-flat-icon/512/megaphone-64.png' : data.icon
    var sendNotification = function (){
        var notification = new Notification(title, {
            icon: icon,
            body: message
        })
        if (clickCallback !== undefined) {
            notification.onclick = function () {
                clickCallback()
                notification.close()
            }
        }
    }

    if (!window.Notification) {
        return false
    } else {
        if (Notification.permission === 'default') {
            Notification.requestPermission(function (p) {
                if (p !== 'denied') {
                    sendNotification()
                }
            })
        } else {
            sendNotification()
        }
    }
}