郑州建设厅网站,南昌网站建设搜q.479185700,搜狗站长平台打不开,公司网站建设设计服务先放效果图#xff1a; 第一张是登录页面效果图。用户输入登录名和密码#xff0c;经过后台的非空验证和固定值验证#xff0c;跳转到首页
第二张是首页效果图。用户点击 “update” 显示用户名和密码
这里的用户名和密码是后台设置的固定值#xff0c;整体的登录逻辑特别…先放效果图 第一张是登录页面效果图。用户输入登录名和密码经过后台的非空验证和固定值验证跳转到首页
第二张是首页效果图。用户点击 “update” 显示用户名和密码
这里的用户名和密码是后台设置的固定值整体的登录逻辑特别简单就是想通过登录来练手学习mvc模式。
首先创建相应的模型、视图和控制器类。
Model (User.kt) data class User(var username: String, var password: String)View (LoginActivity.kt) class LoginActivity : AppCompatActivity() {private lateinit var binding: ActivityLoginBindingprivate val loginController LoginController()override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)binding ActivityLoginBinding.inflate(layoutInflater)setContentView(binding.root)//初始化initData()}fun initData() {binding.loginBtnLogin.setOnClickListener {val userName binding.loginEtName.text.toString()val passwd binding.loginEtPwd.text.toString()if (loginController.validateCredentials(userName, passwd)) {Toast.makeText(this, 登录成功~, Toast.LENGTH_SHORT).show()val intent Intent(this, MainActivity::class.java).apply {putExtra(input_text, userName)putExtra(input_pwd,passwd)}startActivity(intent)finish()} else {Toast.makeText(this, 登录失败~, Toast.LENGTH_SHORT).show()}}}
} Controller (LoginController.kt) class LoginController {companion object {const val FIXED_USERNAME adminconst val FIXED_PASSWORD 123123}fun validateCredentials(username: String, password: String): Boolean {val isNotEmpty username.isNotEmpty() password.isNotEmpty()//验证用户名和密码是否为空val isFixedValue username FIXED_USERNAME password FIXED_PASSWORD//验证用户名和密码是否为固定值return isNotEmpty isFixedValue}
} 布局文件 (activity_login.xml) ?xml version1.0 encodingutf-8?
androidx.constraintlayout.widget.ConstraintLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.LoginActivityImageViewandroid:idid/login_imvandroid:layout_width88dpandroid:layout_height88dpandroid:layout_marginTop100dpandroid:srcdrawable/login_logoapp:layout_constraintLeft_toLeftOfparentapp:layout_constraintRight_toRightOfparentapp:layout_constraintTop_toTopOfparent /EditTextandroid:idid/login_et_nameandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:gravitycenterandroid:hint请输入账号android:minWidth200dpapp:layout_constraintLeft_toLeftOfparentapp:layout_constraintRight_toRightOfparentapp:layout_constraintTop_toBottomOfid/login_imv /EditTextandroid:idid/login_et_pwdandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:gravitycenterandroid:hint请输入密码android:inputTypetextPasswordandroid:minWidth200dpapp:layout_constraintLeft_toLeftOfparentapp:layout_constraintRight_toRightOfparentapp:layout_constraintTop_toBottomOfid/login_et_name /Buttonandroid:idid/login_btn_loginandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text登录app:layout_constraintLeft_toLeftOfparentapp:layout_constraintRight_toRightOfparentapp:layout_constraintTop_toBottomOfid/login_et_pwd //androidx.constraintlayout.widget.ConstraintLayout 在 EditText 控件中如果你想要在用户输入密码时隐藏内容你可以使用 android:inputTypetextPassword 属性。这会让输入的内容以点或星号的形式显示而不是实际输入的字符。 下面简单写一下MainActivity.java 页面 class MainActivity : AppCompatActivity() {private lateinit var binding: ActivityMainBindingprivate lateinit var user: Useroverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)binding ActivityMainBinding.inflate(layoutInflater)setContentView(binding.root)initData()}fun initData() {//初始化模型user User(嘎嘎嘎, gagaga)//设置按钮点击事件binding.btnUpdate.setOnClickListener {//更新模型user.name intent.getStringExtra(input_text).toString()user.password intent.getStringExtra(input_pwd).toString()//更新视图updateView()}}fun updateView() {binding.tvName.text user.namebinding.tvEmail.text user.password}
} activity_main.xml ?xml version1.0 encodingutf-8?
androidx.constraintlayout.widget.ConstraintLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivityandroid:orientationverticalTextViewandroid:idid/tv_nameandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentapp:layout_constraintTop_toTopOfparentapp:layout_constraintBottom_toBottomOfparentapp:layout_constraintLeft_toLeftOfparentapp:layout_constraintRight_toRightOfparent/TextViewandroid:idid/tv_emailandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentapp:layout_constraintLeft_toLeftOfparentapp:layout_constraintRight_toRightOfparentapp:layout_constraintTop_toBottomOfid/tv_name /Buttonandroid:idid/btn_updateandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentapp:layout_constraintLeft_toLeftOfparentapp:layout_constraintRight_toRightOfparentapp:layout_constraintTop_toBottomOfid/tv_emailandroid:textUpdate //androidx.constraintlayout.widget.ConstraintLayout 以上代码实现了一个简单的 MVC 模式的登录页面。用户在登录页面输入用户名和密码然后通过 LoginController 进行验证。如果验证成功用户将被重定向到主页面。如果验证失败则会显示错误提示。效果如图 注意我的代码里面没有使用R.id.…… 而是用 ViewBinding 代替主页有文章介绍了ViewBinding 感兴趣的小伙伴可以去主页看看。 下一篇文章我们讲述《ImageView控件怎么设置圆角和圆形》