Kotlin实现登录界面的密码显示与隐藏

1布局的设计,密码的显示和隐藏

<?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:layout_gravity="center"
    android:background="#B50A35"
    >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >
        <EditText
            android:id="@+id/textOfName"
            android:layout_marginTop="100dp"
            android:layout_width="300dp"
            android:layout_height="40dp"
            android:layout_gravity="center"
            android:hint="请输入用户名"
            android:background="@color/white"
            android:drawableLeft="@drawable/ic_baseline_group_24"
            android:drawablePadding="10dp"
            android:singleLine="true"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginTop="10dp"
        android:gravity="center"
        >
        <EditText
            android:id="@+id/textOfPassWord"
            android:layout_width="278dp"
            android:layout_height="40dp"
            android:layout_gravity="center"
            android:background="@color/white"
            android:drawableLeft="@drawable/ic_baseline_lock_24"
            android:drawablePadding="10dp"
            android:hint="请输入密码"
            android:inputType="textPassword"
            />

        <ImageView
            android:id="@+id/showPassword"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:src="@drawable/ic_baseline_visibility_off_24"
            android:background="@color/white"
            android:onClick="showPassword"
            />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:gravity="center"
        android:layout_gravity="center"
    >
        <TextView
            android:id="@+id/mess"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#DDC91F"
            android:gravity="center"
            />

        <TextView
            android:id="@+id/forgetPW"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#DDC91F"
            android:onClick="forgetPassWord"
            android:gravity="center"
            />
        <TextView
            android:id="@+id/register"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#DDC91F"
            android:text="第一次登录?点击注册"
            android:onClick="register"
            android:gravity="center"
            />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center">

        <Button
            android:id="@+id/surbtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="sureBtn1"
            android:text="确认"/>

        <Button
            android:id="@+id/btnCan"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="50dp"
            android:text="取消"/>
    </LinearLayout>

</LinearLayout>

2主程序的监听事件的绑定



import android.content.Intent
import android.graphics.drawable.Drawable
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.text.method.HideReturnsTransformationMethod
import android.text.method.PasswordTransformationMethod
import android.view.View
import android.widget.EditText
import android.widget.ImageView

import android.widget.TextView


class MainActivity : AppCompatActivity() {
    
    
        var count = 0;
        var showPassword = false
        //private lateinit var password:EditText
        lateinit var name:EditText
        override fun onCreate(savedInstanceState: Bundle?) {
    
    
                super.onCreate(savedInstanceState)
                setContentView(R.layout.activity_main)

                name =findViewById<EditText>(R.id.textOfName)
                name.setText(intent?.getStringExtra("username"))
        }

        fun sureBtn1(view: View) {
    
    
                var name =findViewById<TextView>(R.id.textOfName)
                var password = findViewById<EditText>(R.id.textOfPassWord)
                var message = findViewById<TextView>(R.id.mess)
                var forgetPW=findViewById<TextView>(R.id.forgetPW)
                /*
                * 需要变化的资源,希望从一个锁定的状态变成一个解锁的状态,然后又可以点击后面的眼睛按钮,使密码进行显示
                * */
                var lockOpen = getDrawable(R.drawable.ic_baseline_lock_open_24)

                var text = "${name.text}"
                var text1 = "${password.text}"
                if ("user" == text && "12345" == text1) {
    
    
                        // message.setText("密码或用户名为$text+$text1")
                        //设置显示的位置,前面两个参数是左上角的位置,后面两个参数是右上角的位置
                        lockOpen?.setBounds(0, 0, 40, 40)
                        password.setCompoundDrawables(lockOpen, null, null, null)
                        var intent = Intent(this@MainActivity, ThanksActivity::class.java)
                        intent.putExtra("name", text)
                        //传递参数到另一个界面上
                        startActivity(intent)
                } else {
    
    
                        count++
                        if (count < 10) {
    
    
                                message.setText("密码或用户名有误,你还有${10 - count}次机会")
                                password.setText("")
                                forgetPW.setText("忘记密码?点击找回")
                        } else {
    
    
                                message.setText("已锁定,请在10分钟后重试")
                        }
                }
        }

        fun forgetPassWord(view: View) {
    
    
                var intent=Intent(this,ThankAgain::class.java)
                startActivity(intent)
        }

        fun showPassword(view: View) {
    
    
                var password = findViewById<EditText>(R.id.textOfPassWord)

                var eye = getDrawable(R.drawable.ic_baseline_remove_red_eye_24)
                var close = getDrawable(R.drawable.ic_baseline_visibility_off_24)

                var eyeSet=findViewById<ImageView>(R.id.showPassword)
                showPassword = !showPassword
                if (showPassword) {
    
    

                        password.transformationMethod = HideReturnsTransformationMethod.getInstance()
                        password.setSelection(password.text.length)
                        eyeSet.setImageDrawable(eye)
                        //message.setText("点击一下,此时被点击是要显示明文")
                } else {
    
    
                        password.transformationMethod =PasswordTransformationMethod.getInstance()
                        //message.setText("有点击一下,需要显示密文")
                        password.setSelection(password.text.length)
                        eyeSet.setImageDrawable(close)
                }
        }


        //此处是第一次登录进行注册的界面跳转
        fun register(view: View) {
    
    
                startActivity(Intent(this,RegisterActivity::class.java))
        }


}

猜你喜欢

转载自blog.csdn.net/m0_56184347/article/details/125602519