Kotlin练手,以登录为例,Anko简单使用

简介: Kotlin练手,以登录为例,Anko简单使用

image.png


在Kotlin还不是正房的时候就听说过了,除了Java之外也能开发Android APP的一种语言,小众到鲜为人知,甚至介绍都不多。但是在谷歌大会宣布kotlin为官方语言之后,铺天盖地的都是关于kotlin的介绍和语法简介,出身豪门等等。

后来,J神也离开了Square去了Google,而且是Kotlin项目组。

到最近Kotlin1.2版本发布又是一波大范围的推送,而且在GitHub的排名也不断上升。

Google一系列的动作都在加快Kotlin在Android领域取代Java的速度。甚至还有跨平台的骚操作。。


Kotlin官方文档(英文版)

Kotlin官方文档(中文版)

Anko——JetBrains开发的一个强大的库


以登录为例,小小练手

package com.yechaoa.kotlinforlogin
import android.content.Intent
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.text.TextUtils
import android.util.Log
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_login.*
import org.jetbrains.anko.*
// : 表示继承,类型声明等
class LoginActivity : AppCompatActivity(), AnkoLogger {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_login)
        //不需要分号
        //apply plugin: 'kotlin-android-extensions'
        //添加插件可以直接拿xml文件中的id
        btn_login.setOnClickListener {
            //字符串拼接
            Log.i("tag", "${getUsername()}+${getPassword()}")
            if ("123" == (getUsername()) && "123" == (getPassword()))
                showDialog()
            else
                Toast.makeText(this, "账号或密码错误", Toast.LENGTH_SHORT).show()
        }
    }
    private fun showDialog() {
        alert("登录成功", "提示") {
            yesButton {
                //this指向是谁, ::class.java加载java文件
                startActivity(Intent(this@LoginActivity, MainActivity::class.java))
            }
            noButton {}
        }.show()
    }
    //自定义函数
    private fun getUsername(): String {
        //定义变量,? 表示可空
        val username = til_username.editText?.text.toString().trim()
        return if (TextUtils.isEmpty(username))
            ""
        else
            username
    }
    private fun getPassword(): String {
        val password = til_password.editText?.text.toString().trim()
        return if (TextUtils.isEmpty(password))
            ""
        else
            password
    }
    override fun onDestroy() {
        super.onDestroy()
        //AnkoLogger
        info("onDestroy")
    }
}


另外,Anko支持动态生成视图,语法简单,结构清晰,但是不能预览,预览插件:

https://github.com/Kotlin/anko/wiki/Anko-Layouts#anko-support-plugin



Java 代码转换为 Kotlin


ctrl +alt + shift + k



GitHub:https://github.com/yechaoa/KotlinForLogin

目录
相关文章
|
Java 数据库 数据库管理
kotlin学习笔记——sqlite(anko)
Anko提供了很多强大的SQLiteOpenHelper来可以大量简化代码,首先需要依赖anko的sqlite模块: compile "org.jetbrains.anko:anko-sqlite:$anko_version"
669 0
|
存储 JSON 测试技术
kotlin框架Anko的使用及常用的项目配置
kotlin框架Anko的使用及常用的项目配置 之前的几篇文章重复的讲了一些项目的基础配置,这一节就让我们把之前的那些抽取出来,单独的写一篇短文,之后的文章我们就直接使用这个配置就可以啦 创建我们的项目,命名为BaseProject,勾选kotl...
1460 0
|
XML Java 数据库
《Kotin 极简教程》第13章 使用 Kotlin 和 Anko 的Android 开发
第13章 使用 Kotlin 和 Anko 的Android 开发 《Kotlin极简教程》正式上架: 点击这里 > 去京东商城购买阅读 点击这里 > 去天猫商城购买阅读 非常感谢您亲爱的读者,大家请多支持!!!有任何问题,欢迎随时与我交流~ 13.1 什么是 Anko? Anko (https://github.com/Kotlin/anko) 是一个用 Kotlin 写的Android DSL (Domain-Specific Language)。
1470 0
|
XML Java Android开发
[Android]使用Kotlin+Anko开发Android(一)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4800656.html    Kotlin是由JetBrains开发并且开源的静态类型JVM语言。
1014 0
|
1月前
|
JSON 调度 数据库
Android面试之5个Kotlin深度面试题:协程、密封类和高阶函数
本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点。文章详细解析了Kotlin中的协程、扩展函数、高阶函数、密封类及`inline`和`reified`关键字在Android开发中的应用,帮助读者更好地理解和使用这些特性。
20 1
|
2月前
|
Android开发 开发者 Kotlin
告别AsyncTask:一招教你用Kotlin协程重构Android应用,流畅度飙升的秘密武器
【9月更文挑战第13天】随着Android应用复杂度的增加,有效管理异步任务成为关键。Kotlin协程提供了一种优雅的并发操作处理方式,使异步编程更简单直观。本文通过具体示例介绍如何使用Kotlin协程优化Android应用性能,包括网络数据加载和UI更新。首先需在`build.gradle`中添加coroutines依赖。接着,通过定义挂起函数执行网络请求,并在`ViewModel`中使用`viewModelScope`启动协程,结合`Dispatchers.Main`更新UI,避免内存泄漏。使用协程不仅简化代码,还提升了程序健壮性。
77 1
|
3月前
|
调度 Android开发 开发者
【颠覆传统!】Kotlin协程魔法:解锁Android应用极速体验,带你领略多线程优化的无限魅力!
【8月更文挑战第12天】多线程对现代Android应用至关重要,能显著提升性能与体验。本文探讨Kotlin中的高效多线程实践。首先,理解主线程(UI线程)的角色,避免阻塞它。Kotlin协程作为轻量级线程,简化异步编程。示例展示了如何使用`kotlinx.coroutines`库创建协程,执行后台任务而不影响UI。此外,通过协程与Retrofit结合,实现了网络数据的异步加载,并安全地更新UI。协程不仅提高代码可读性,还能确保程序高效运行,不阻塞主线程,是构建高性能Android应用的关键。
61 4
|
4月前
|
安全 Android开发 Kotlin
Android经典面试题之Kotlin延迟初始化的by lazy和lateinit有什么区别?
**Kotlin中的`by lazy`和`lateinit`都是延迟初始化技术。`by lazy`用于只读属性,线程安全,首次访问时初始化;`lateinit`用于可变属性,需手动初始化,非线程安全。`by lazy`支持线程安全模式选择,而`lateinit`适用于构造函数后初始化。选择依赖于属性特性和使用场景。**
154 5
Android经典面试题之Kotlin延迟初始化的by lazy和lateinit有什么区别?
|
4月前
|
安全 Android开发 Kotlin
Android经典面试题之Kotlin中常见作用域函数
**Kotlin作用域函数概览**: `let`, `run`, `with`, `apply`, `also`. `let`安全调用并返回结果; `run`在上下文中执行代码并返回结果; `with`执行代码块,返回结果; `apply`配置对象后返回自身; `also`附加操作后返回自身
59 8