将准备秋招,开始复习一下安卓的基础知识
MVC
M:model模型,数据层,管理数据,比如网络请求,返回的Bean类。
V:view视图,主要是ui相关,给用户的呈现,比如xml,以及Activity中的显示。
C:controller控制器,负责业务逻辑,建立ui和数据的桥梁,比如用户的点击事件,获取数据,再传递给view进行显示。
缺点:耦合度高,Activity既有view,又有controller,也就是最传统的开发模式
示例代码:将实现一个输入账号密码,点击后登录页面;xml部分ui如下
Model层:
一个java bean类
data class User(
val username: String,
val password: String
)
View层:
xml文件,传统原生安卓画ui的地方
Controller:
我们的Activity,可以看到其负责业务逻辑,当输入账号密码后,点击登录按钮,通过对登录按钮的监听进一步实现登录的行为,耦合度太高了。如果我们需要动态的实现xml控件的隐藏和显示,也需在Activity里面进行操作,太繁琐。
/**
* @Author: tian7
* @Email: 253493510@qq.com
* @Date: on 2024/6/26: 00: 04
* @Description: 描述
*/
class MvcActivity : AppCompatActivity() {
private lateinit var etUsername: EditText
private lateinit var etPassword: EditText
private lateinit var loginButton: Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_mvc)
etUsername = findViewById(R.id.et_username)
etPassword = findViewById(R.id.et_password)
loginButton = findViewById(R.id.btn_login)
loginButton.setOnClickListener{
val username = etUsername.text?.toString() ?: ""
val password = etPassword.text?.toString() ?: ""
login(username, password)
}
}
private fun login(username: String, password: String) {
if (username.isNullOrEmpty() || password.isNullOrEmpty()){
return
}
val user = User(username,password)
if (username.equals("tian") && password.equals("666")){
Toast.makeText(
this,
"${user.username}登录成功",
Toast.LENGTH_SHORT
).show()
}else{
Toast.makeText(
this,
"用户名或密码错误",
Toast.LENGTH_SHORT
).show()
}
}
}