1. 程式人生 > >Android——XUtils3實現登入和註冊頁面校驗

Android——XUtils3實現登入和註冊頁面校驗

本篇是實現app登入和註冊校驗的操作

案例圖:


介面地址:

1. 登入介面

請求引數:

mobile手機號  必傳引數

password密碼  必傳引數

2. 註冊介面 

請求引數:

mobile手機號  必傳引數

password密碼  必傳引數

案例:實現登入註冊功能

1. 新建Android Studio專案,實現登入和註冊頁面效果

1) 點選登入按鈕實現登入介面,登陸成功後跳轉到商品列表頁面

2) 點選註冊按鈕跳轉到註冊頁面

2. 整合xUtils,並用xUtils請求資料

3. 實現如圖註冊頁面邏輯

1) 本地使用正則表示式校驗手機號為合法手機號

2) 本地校驗密碼不能少於六位數

3) 點選左上角返回按鈕,跳轉到登入頁面

4) 實現註冊介面,註冊成功後,toast提示“註冊成功”並跳轉到登入頁面

5) 如果手機號已經被註冊,提示手機號已經被註冊

4. 實現登入頁面邏輯

1) 使用正則表示式校驗手機號為合法手機號

2) 校驗密碼不能少於六位數

3) 實現登入介面,登入成功,toast提示“登入成功”,如果使用者名稱或密碼錯誤,toast提示“使用者名稱或密碼錯誤”

程式碼:

MainActivity

package com.bawei.com.myapplication;

import android.content.Intent;
import android.os.Bundle
; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.google.gson.Gson; import org.xutils.common.Callback; import org.xutils.http.RequestParams; import org.xutils.x; import
java.util.regex.Matcher; import java.util.regex.Pattern; public class MainActivity extends AppCompatActivity { private Button btn_login; private Button btn_regist; private EditText et_mobile; private EditText et_password; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //查詢控制元件 btn_login = findViewById(R.id.btn_login); btn_regist = findViewById(R.id.btn_regist); et_mobile = findViewById(R.id.et_mobile); et_password = findViewById(R.id.et_password); btn_regist.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this,Main2Activity.class); startActivity(intent); } }); btn_login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String mobile = et_mobile.getText().toString().trim(); String password = et_password.getText().toString().trim(); //判斷輸入的內容是否為phone boolean b = isPhoneNumber(mobile); if (mobile.isEmpty() || password.isEmpty()) { Toast.makeText(MainActivity.this, "使用者名稱/密碼不能為空", Toast.LENGTH_SHORT).show(); } else if (!b) { Toast.makeText(MainActivity.this, "手機號不合法", Toast.LENGTH_SHORT).show(); } else if (password.length() < 6) { Toast.makeText(MainActivity.this, "密碼不能少於六位數", Toast.LENGTH_SHORT).show(); } else { login(mobile, password); } } }); } private boolean isPhoneNumber(String phoneStr) { //定義電話格式的正則表示式 String regex = "^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$"; //設定檢視模式 Pattern p = Pattern.compile(regex); //判斷Str是否匹配,返回匹配結果 Matcher m = p.matcher(phoneStr); return m.find(); } private void login(String mobile,String password){ RequestParams params = new RequestParams("http://120.27.23.105/user/login"); params.addQueryStringParameter("mobile",mobile); params.addQueryStringParameter("password",password); x.http().get(params, new Callback.CacheCallback<String>() { @Override public void onSuccess(String result) { //成功 Gson gson = new Gson(); LoginBean loginBean = gson.fromJson(result, LoginBean.class); Toast.makeText(MainActivity.this,loginBean.getMsg(), Toast.LENGTH_SHORT).show(); if (loginBean.getCode().equals("0")){ Intent intent = new Intent(MainActivity.this, Main3Activity.class); startActivity(intent); } } @Override public void onError(Throwable ex, boolean isOnCallback) { } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { } @Override public boolean onCache(String result) { return false; } }); } }
Main2Activity
package com.bawei.com.myapplication;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.gson.Gson;

import org.xutils.common.Callback;
import org.xutils.http.RequestParams;
import org.xutils.x;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main2Activity extends AppCompatActivity {

    private EditText et_mobile;
    private EditText et_password;
    private Button btn_regist;
    @Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        Intent intent = getIntent();
        et_mobile = findViewById(R.id.et_mobile);
        et_password = findViewById(R.id.et_password);
        btn_regist = findViewById(R.id.btn_regist);
        btn_regist.setOnClickListener(new View.OnClickListener() {
            @Override
public void onClick(View view) {
                String mobile = et_mobile.getText().toString().trim();
                String password = et_password.getText().toString().trim();
                //判斷輸入的內容是否為phone
boolean b = isPhoneNumber(mobile);
                if (mobile.isEmpty() || password.isEmpty()) {
                    Toast.makeText(Main2Activity.this, "使用者名稱/密碼不能為空", Toast.LENGTH_SHORT).show();
                } else if (!b) {
                    Toast.makeText(Main2Activity.this, "手機號不合法", Toast.LENGTH_SHORT).show();
                } else if (password.length() < 6) {
                    Toast.makeText(Main2Activity.this, "密碼不能少於六位數", Toast.LENGTH_SHORT).show();
                } else {
                    register(mobile, password);
                }
            }
        });
    }
    private boolean isPhoneNumber(String phoneStr) {
        //定義電話格式的正則表示式
String regex = "^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$";
        //設定檢視模式
Pattern p = Pattern.compile(regex);
        //判斷Str是否匹配,返回匹配結果
Matcher m = p.matcher(phoneStr);
        return m.find();
    }
    private void register(String mobile,String password){
        RequestParams params = new RequestParams("http://120.27.23.105/user/reg");
        params.addQueryStringParameter("mobile",mobile);
        params.addQueryStringParameter("password",password);
        x.http().get(params, new Callback.CacheCallback<String>() {
            @Override
public void onSuccess(String result) {
                //成功
Gson gson = new Gson();
                RegistBean registBean = gson.fromJson(result, RegistBean.class);

                //如果註冊成功就返回登入頁面
Toast.makeText(Main2Activity.this,registBean.getMsg(), Toast.LENGTH_SHORT).show();
                if (registBean.getCode().equals("0")){
                    finish();
                }
            }


            @Override
public void onError(Throwable ex, boolean isOnCallback) {

            }

            @Override
public void onCancelled(CancelledException cex) {

            }

            @Override
public void onFinished() {

            }

            @Override
public boolean onCache(String result) {
                return false;
            }
        });
    }
}
建立Application
package com.bawei.com.myapplication;

import android.app.Application;

import org.xutils.x;

/**
 * Created by Wangrx on 2017/10/31.
 */
public class RegistApplication extends Application{
    public void onCreate() {
        super.onCreate();
x.Ext.init(this);
x.Ext.setDebug(BuildConfig.DEBUG);
}} activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
tools:context="com.bawei.com.myapplication.MainActivity">

    <EditText
android:id="@+id/et_mobile"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="64dp"
android:hint="請輸入手機號"
android:inputType="number" />

    <EditText
android:id="@+id/et_password"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_below="@id/et_mobile"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:hint="請輸入密碼"
android:inputType="textPassword" />
    <Button
android:id="@+id/btn_login"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="登入"
android:layout_below="@id/et_password"
android:layout_marginLeft="70dp"
/>
    <Button
android:id="@+id/btn_regist"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="註冊"
android:layout_below="@id/et_password"
android:layout_toRightOf="@id/btn_login"
/>
</RelativeLayout>
activity_main2.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
tools:context="com.bawei.com.myapplication.Main2Activity">
    <EditText
android:id="@+id/et_mobile"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="64dp"
android:hint="請輸入手機號"
android:inputType="number" />

    <EditText
android:id="@+id/et_password"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_below="@id/et_mobile"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:hint="請輸入密碼"
android:inputType="textPassword" />
    <Button
android:id="@+id/btn_regist"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:text="立即註冊"
android:textColor="@color/colorPrimary"
android:layout_below="@id/et_password"
android:layout_centerHorizontal="true"
/>
</RelativeLayout>
新增許可權:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
新增依賴:
implementation 'com.google.code.gson:gson:2.8.2'
implementation 'org.xutils:xutils:3.5.0'