注册登录(MVP)

首先第一步导入OKhttp的依赖

implementation 'com.squareup.okhttp3:okhttp:3.6.0'
implementation 'com.squareup.okio:okio:1.11.0'

然后创建mvp框架

1.view层

package com.example.lianxi5.mvp;

public interface Iview {
    void showSuccess(String msg);
    void showError(String msg);
    void login_success(String msg);
}

2.presenter层

package com.example.lianxi5.mvp;

public class Ipresender {
    private Iview view;
    private Imoder moder;

    public Ipresender (Iview view){
        this.view=view;
        moder=new Imoder();
    }
    public void reg(String name,String password){
        moder.reg(name, password, new Imoder.AccountCallach() {
            @Override
            public void onError(String string) {
                view.showError("注册录失败");
            }
            @Override
            public void onSuccess(String msg) {
                view.showSuccess(msg);
            }
        });
    }
    public void login(String name,String password){
        moder.login(name, password, new Imoder.AccountCallach() {
            @Override
            public void onError(String msg) {
                view.showError("登录失败");

            }
            @Override
            public void onSuccess(String msg) {
                view.login_success(msg);
            }
        });
    }
}

3.moder层

package com.example.lianxi5.mvp;

import com.example.lianxi5.bean.User;
import com.google.gson.Gson;

import java.io.IOException;
import java.util.concurrent.TimeUnit;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class Imoder {

    private final OkHttpClient client;

    public Imoder(){
        client = new OkHttpClient
                .Builder()
                .connectTimeout(30, TimeUnit.SECONDS)
                .writeTimeout(30,TimeUnit.SECONDS)
                .readTimeout(30,TimeUnit.SECONDS)
                .build();
    }
    //注册
    public void reg(String name, String password, final AccountCallach callach){
        FormBody formBody=new FormBody
                .Builder()
                .add("mobile",name)
                .add("password",password)
                .build();
        Request builder=new Request
                .Builder()
                .url("https://www.zhaoapi.cn/user/reg")
                .post(formBody)
                .build();
        client.newCall(builder).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                callach.onError(e.getMessage());
            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                callach.onSuccess(response.body().string());
            }
        });
    }
    //登录
    public void login(String name, String password, final AccountCallach callach){
        FormBody formBody=new FormBody
                .Builder()
                .add("mobile",name)
                .add("password",password)
                .build();
        Request builder=new Request
                .Builder()
                .url("https://www.zhaoapi.cn/user/login")
                .post(formBody)
                .build();
            client.newCall(builder).enqueue(new Callback() {
                @Override
                public void onFailure(Call call, IOException e) {
                    callach.onError(e.getMessage());
                }

                @Override
                public void onResponse(Call call, Response response) throws IOException {
                    if (response.code()==200){
                        String result=response.body().string();
                        Gson gson = new Gson();
                        User user = gson.fromJson(result, User.class);
                        String code = user.getCode();
                        callach.onSuccess(code);
                    }
                }
            });
    }
    public interface AccountCallach {
        void onError(String message);
        void onSuccess(String string);
    }
}

4.在mainactivity里面继承view

在main里面登录和注册分别添加了正规

账号:输入正确的手机格式

密码:密码不少于8位字母和数字组合

 
package com.example.lianxi5;

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

import com.example.lianxi5.mvp.Ipresender;
import com.example.lianxi5.mvp.Iview;

public class MainActivity extends AppCompatActivity implements Iview {

    private EditText ediname;
    private EditText edipwd;
    private Button btn_login;
    private Button btn_ren;
    private Ipresender ipresender;
    private String mName;
    private String mPassword;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ediname = findViewById(R.id.ediname);
        edipwd = findViewById(R.id.edipwd);
        btn_login = findViewById(R.id.btn_login);
        btn_ren = findViewById(R.id.btn_ren);
        ipresender = new Ipresender(this);

        //注册
        btn_ren.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                rendnamepassword();
                //正规
                if (mName.matches("^((13[0-9])|(14[5,7,9])|(15[^4])|(18[0-9])|(17[0,1,3,5,6,7,8]))\\d{8}$")){
                    if (mPassword.matches("^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$")){
                        ipresender.reg(mName,mPassword);
                    }else{
                        Toast.makeText(MainActivity.this,"密码不能少于八位的数字字母的组合",Toast.LENGTH_SHORT).show();
                    }
                }else{
                    Toast.makeText(MainActivity.this,"请输入正确的手机格式",Toast.LENGTH_SHORT).show();
                }
            }
        });
        //登录
        btn_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                rendnamepassword();
                if (mName.matches("^((13[0-9])|(14[5,7,9])|(15[^4])|(18[0-9])|(17[0,1,3,5,6,7,8]))\\d{8}$")){
                    if (mPassword.matches("^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$")){
                        ipresender.login(mName,mPassword);
                    }else{
                        Toast.makeText(MainActivity.this,"密码不能少于八位的数字字母的组合",Toast.LENGTH_SHORT).show();
                    }
                }else{
                    Toast.makeText(MainActivity.this,"请输入正确的手机格式",Toast.LENGTH_SHORT).show();
                }
            }
        });

    }
    private void rendnamepassword() {
        mName = ediname.getText().toString();
        mPassword = edipwd.getText().toString();
    }

    @Override
    public void showSuccess(final String msg) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(MainActivity.this,msg,Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    public void showError(final String msg) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(MainActivity.this,msg,Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    public void login_success(String msg) {
        if (msg.equals("1")){
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(MainActivity.this,"手机号或者密码错误",Toast.LENGTH_SHORT).show();
                }
            });
        }else{
            Intent intent=new Intent(MainActivity.this,ShowActivity.class);
            startActivity(intent);
        }


    }
}

注册和登录的布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <EditText
    android:id="@+id/ediname"
    android:hint="请输入用户名"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
    <EditText
        android:id="@+id/edipwd"
        android:hint="请输入密码"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <Button
            android:id="@+id/btn_ren"
            android:text="注册"
            android:layout_weight="5"
            android:layout_width="0dp"
            android:layout_height="wrap_content" />
        <Button
            android:id="@+id/btn_login"
            android:text="登录"
            android:layout_weight="5"
            android:layout_width="0dp"
            android:layout_height="wrap_content" />
    </LinearLayout>
</LinearLayout>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值