一、简介
布局中使用了LinearLayout与RelativeLayout增加友好性使用了ToggleButton来控制显示与隐藏密码二、效果图
三、核心代码
1. activity_login.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".LoginActivity">
<TextView
android:id="@+id/sign"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="用户登录"
android:gravity="center"
android:textStyle="bold"
android:textSize="20sp"
/>
<RelativeLayout
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/userLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/userLabel"
android:layout_alignBaseline="@id/userNameText"
android:text="用户名:"
android:textSize="20sp"/>
<EditText
android:id="@+id/userNameText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/userLabel"
android:textSize="20sp"
android:hint="请输入用户名"/>
<TextView
android:id="@+id/pswLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/userNameText"
android:layout_alignBaseline="@id/passwordText"
android:textSize="20sp"
android:text="密 码:"/>
<EditText
android:id="@+id/passwordText"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_below="@id/userNameText"
android:layout_toRightOf="@id/pswLabel"
android:layout_alignLeft="@id/userNameText"
android:inputType="textPassword"
android:textSize="20sp"
android:hint="请输入密码"/>
<ToggleButton
android:id="@+id/showPwd"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_toRightOf="@id/passwordText"
android:layout_below="@id/userNameText"
android:layout_alignBaseline="@id/passwordText"
android:background="@drawable/close"
android:textOn=""
android:textOff=""/>
<TextView
android:id="@+id/register"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/passwordText"
android:layout_alignBaseline="@id/loginBtn"
android:textSize="15sp"
android:layout_marginLeft="20dp"
android:text="注册"
android:clickable="true"/>
<Button
android:id="@+id/resetBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="重置"
android:layout_below="@id/passwordText"
android:layout_toRightOf="@id/register"
android:layout_marginLeft="100dp"
android:textSize="20sp"
android:textStyle="bold"/>
<Button
android:id="@+id/loginBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/passwordText"
android:layout_toRightOf="@id/resetBtn"
android:layout_alignRight="@id/passwordText"
android:textSize="20sp"
android:textStyle="bold"
android:text="登录"/>
</RelativeLayout>
</LinearLayout>
2. LoginActivity.java
package com.kjgym.demologin01;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.method.HideReturnsTransformationMethod;
import android.text.method.PasswordTransformationMethod;
import android.view.View;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;
public class LoginActivity extends AppCompatActivity {
private Button resetBtn;
private Button loginBtn;
private TextView register;
private EditText userNameText;
private EditText passwordText;
private ToggleButton showPwd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
init();
}
public void init(){
resetBtn = findViewById(R.id.resetBtn);
loginBtn = findViewById(R.id.loginBtn);
register = findViewById(R.id.register);
userNameText = findViewById(R.id.userNameText);
passwordText = findViewById(R.id.passwordText);
showPwd = findViewById(R.id.showPwd);
showPwd.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
showPwd.setBackgroundResource(R.drawable.open);
passwordText.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
passwordText.setSelection(passwordText.getText().toString().length());
}else{
showPwd.setBackgroundResource(R.drawable.close);
passwordText.setTransformationMethod(PasswordTransformationMethod.getInstance());
passwordText.setSelection(passwordText.getText().toString().length());
}
}
});
loginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(),"登录功能尚未实现",Toast.LENGTH_LONG).show();
}
});
register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(),"注册功能尚未实现",Toast.LENGTH_LONG).show();
}
});
resetBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
userNameText.setText("");
passwordText.setText("");
showPwd.setBackgroundResource(R.drawable.close);
}
});
}
}