创建一个基础的登录界面布局
在Android开发中,使用Kotlin语言搭配Jetpack组件可以快速构建现代化的用户界面。假设你正在为公司开发一款内部使用的考勤App,第一步就是让用户登录。我们从最基础的XML布局开始,设计一个包含用户名和密码输入框的界面。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
android:gravity="center">
<EditText
android:id="@+id/etUsername"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入用户名"
android:inputType="text"
android:layout_marginBottom="16dp" />
<EditText
android:id="@+id/etPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入密码"
android:inputType="textPassword"
android:layout_marginBottom="24dp" />
<Button
android:id="@+id/btnLogin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="登录" />
</LinearLayout>
用Kotlin处理登录逻辑
布局写好了,接下来在Activity中用Kotlin代码绑定控件并设置点击事件。比如,用户输入完账号密码后,点击“登录”按钮,程序会检查是否为空,并弹出提示。
class LoginActivity : AppCompatActivity() {
private lateinit var etUsername: EditText
private lateinit var etPassword: EditText
private lateinit var btnLogin: Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
etUsername = findViewById(R.id.etUsername)
etPassword = findViewById(R.id.etPassword)
btnLogin = findViewById(R.id.btnLogin)
btnLogin.setOnClickListener {
val username = etUsername.text.toString().trim()
val password = etPassword.text.toString()
if (username.isEmpty() || password.isEmpty()) {
Toast.makeText(this, "用户名或密码不能为空", Toast.LENGTH_SHORT).show()
} else {
// 模拟登录成功跳转
startActivity(Intent(this, MainActivity::class.java))
finish()
}
}
}
}
加入简单的验证逻辑更贴近实际场景
在真实项目中,登录往往需要对接后台API。但即便只是本地验证,也可以加点规则。比如规定密码至少6位,用户名不能全是数字。这种小细节能让体验更真实。
private fun isValidPassword(password: String): Boolean {
return password.length >= 6
}
private fun isNumeric(username: String): Boolean {
return username.toLongOrNull() != null
}
然后在点击事件里调用这些方法做判断。如果用户名输成了纯数字,就提示“用户名不能为纯数字”,比直接说“格式错误”更友好。
使用View Binding让代码更清晰
Kotlin推荐使用View Binding来替代findViewById。它能避免空指针异常,也让代码更简洁。先在build.gradle中启用viewBinding:
android {
viewBinding true
}
然后修改Activity中的写法:
class LoginActivity : AppCompatActivity() {
private lateinit var binding: ActivityLoginBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityLoginBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.btnLogin.setOnClickListener {
val username = binding.etUsername.text.toString().trim()
val password = binding.etPassword.text.toString()
if (username.isEmpty() || password.isEmpty()) {
Toast.makeText(this, "请填写完整信息", Toast.LENGTH_SHORT).show()
} else if (isNumeric(username)) {
Toast.makeText(this, "用户名不能为纯数字", Toast.LENGTH_SHORT).show()
} else if (!isValidPassword(password)) {
Toast.makeText(this, "密码至少6位", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show()
startActivity(Intent(this, MainActivity::class.java))
finish()
}
}
}
}
这样写起来更顺,也不用担心ID写错导致崩溃。每天写代码少踩几个坑,心情自然好。