我们在写项目的过程中都会遇到登录页面,很多新手都不会写登录页面的逻辑,今天给大家带来一个简单的登录页面
不废话直接上代码
第一步,布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
android:orientation="vertical"
tools:context=".LoginActivity">
<TextView
android:id="@+id/text_title"
android:layout_width="match_parent"
android:layout_height="44dp"
android:background="#FFF8F8F8"
android:gravity="center"
android:text="登录"
android:textColor="#9C101010"
android:textSize="18dp" />
<ImageView
android:id="@+id/iv_icon"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center"
android:layout_marginTop="56dp"
android:background="@color/colorPrimary" />
<Spinner
android:id="@+id/sp_choose"
android:layout_width="200dp"
android:layout_height="30dp"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:background="@drawable/spinner_border"
android:entries="@array/professionals"
android:spinnerMode="dialog" />
<EditText
android:id="@+id/ed_name"
android:layout_width="255dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:layout_marginTop="19dp"
android:background="@drawable/ed_background"
android:hint="请输入账号"
android:paddingLeft="15dp"
android:textSize="16dp" />
<EditText
android:id="@+id/ed_password"
android:layout_width="255dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:layout_marginTop="38dp"
android:background="@drawable/ed_background"
android:hint="请输入密码"
android:paddingLeft="15dp"
android:password="true"
android:textSize="16dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal">
<CheckBox
android:id="@+id/cbx_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="75dp"
android:text="记住密码" />
<TextView
android:id="@+id/text_registered"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="105dp"
android:text="注册账号"
android:textColor="#9C0A97F7"
android:textSize="14dp" />
</LinearLayout>
<Button
android:id="@+id/button_login"
android:layout_width="100dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:layout_marginTop="19dp"
android:background="@drawable/button_radius"
android:text="登录"
android:textColor="#9CFFFFFF"
android:textSize="16dp" />
</LinearLayout>
在drawable文件下创建一个ed_background的一个xml文件用来画EdText的边框
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="5dp"/>
<stroke android:width="1dp" android:color="#9CBBBBBB"/>
</shape>
在drawable文件下创建一个spinner_border的一个xml文件用来画Spinner的边框
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!-- <corners android:radius="5dp"/>-->
<stroke android:width="1dp" android:color="#9CBBBBBB"/>
</shape>
在value下创建一个arrays,里面写我们的下拉菜单中中的内容
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="professionals">
<item>学员</item>
<item>教练</item>
<item>队医</item>
<item>领导</item>
</string-array>
</resources>
第二步通过我们通过布局中对控件给出的id,在Activiy中进行找控件,然后写逻辑
package com.example.androoid;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import java.util.regex.Pattern;
public class LoginActivity extends AppCompatActivity {
private Spinner sp_choose;
private EditText ed_name;
private EditText ed_passwprd;
private CheckBox cbx_password;
private TextView text_registered;
private Button button_login;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
sp_choose = findViewById(R.id.sp_choose);
ed_name = findViewById(R.id.ed_name);
ed_passwprd = findViewById(R.id.ed_password);
cbx_password = findViewById(R.id.cbx_password);
text_registered = findViewById(R.id.text_registered);
button_login = findViewById(R.id.button_login);
}
}
然后在onCreate中写一个initOnckick()用来写我们的按钮逻辑完整代码如下
package com.example.androoid;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import java.util.regex.Pattern;
public class LoginActivity extends AppCompatActivity {
private Spinner sp_choose;
private EditText ed_name;
private EditText ed_passwprd;
private CheckBox cbx_password;
private TextView text_registered;
private Button button_login;
/**
* 正则表达式:验证用户名
*/
public static final String REGEX_USERNAME = "^[a-zA-Z0-9]{6,20}$";
/**
* 必须包含小写字母,数字,可以是字母数字下划线组成并且长度是6到16
*/
public static final String REGEX_PASSWORD = "\"^(?=.*?[a-z])(?=.*?[0-9])[a-zA-Z0-9_]{6,16}$\"";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
sp_choose = findViewById(R.id.sp_choose);
ed_name = findViewById(R.id.ed_name);
ed_passwprd = findViewById(R.id.ed_password);
cbx_password = findViewById(R.id.cbx_password);
text_registered = findViewById(R.id.text_registered);
button_login = findViewById(R.id.button_login);
initOnckick();
}
/**
* 校验用户名
*
* @return 校验通过返回true,否则返回false
*/
public static boolean isUsername(String username) {
return Pattern.matches(REGEX_USERNAME, username);
}
/**
* 校验密码
*
* @return 校验通过返回true,否则返回false
*/
public static boolean isPassword(String password) {
return Pattern.matches(REGEX_PASSWORD, password);
}
private void initOnckick() {
final String name = ed_name.getText().toString();
final String passwprd =ed_passwprd.getText().toString();
/**
* 注册跳转
*/
text_registered.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(LoginActivity.this, RegisteredActivity.class);
startActivity(intent);
}
});
/**
* 登录跳转
*
*/
button_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!isUsername(name) && !isPassword(passwprd)){
Toast.makeText(LoginActivity.this, "用户名或密码格式不对", Toast.LENGTH_SHORT).show();
}else {
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
}
}
});
}
}
这个就是一个简单的登录页面的逻辑
|