MVP+登录注册

登录布局

<?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="#4f4"
    android:orientation="vertical"
    tools:context=".view.MainActivity">

    <EditText
        android:id="@+id/et1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
        android:layout_marginTop="130dp"
        android:hint="请输入电话号"
        android:padding="18dp"
        android:background="#dddddd"/>

    <EditText
        android:id="@+id/et2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
        android:layout_marginTop="30dp"
        android:hint="请输入密码"
        android:padding="18dp"
        android:background="#dddddd"/>

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

        <CheckBox
            android:id="@+id/cb1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="25sp"
            android:layout_marginTop="10dp"
            android:layout_marginLeft="30dp"
            android:textColor="#ffffff"
            android:text="记住密码"/>

        <Button
            android:id="@+id/bt1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="25sp"
            android:layout_marginTop="10dp"
            android:textColor="#ffffff"
            android:background="#00dddddd"
            android:layout_marginLeft="200dp"
            android:text="快速注册"/>

    </LinearLayout>

     <Button
         android:id="@+id/bt2"
         android:layout_width="300dp"
         android:layout_height="wrap_content"
         android:layout_marginTop="10dp"
         android:layout_gravity="center"
         android:textSize="30dp"
         android:text="登录"/>

    <Button
        android:id="@+id/bt3"
         android:layout_width="300dp"
         android:layout_height="wrap_content"
         android:layout_marginTop="10dp"
         android:layout_gravity="center"
         android:textSize="30dp"
         android:text="QQ登录"/>
        
</LinearLayout>

CallBack

package com.bawei.xiejiaqi0227.interfaces;

public interface CallBack {

    public void  Success(String result);

    public void  Error(String msg);
}

OkHttp

package com.bawei.xiejiaqi0227.util;

import android.os.Handler;
import android.os.Message;
import android.util.Log;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;

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

public class OkHttpUtil {

    static String info = "";

    private static OkHttpUtil okHttpUtil = null;

    private OkHttpUtil(){

    };

    private static OkHttpUtil getInstance(){
        if (okHttpUtil == null){
            okHttpUtil = new OkHttpUtil();
        }else{
            return okHttpUtil;
        }
        return okHttpUtil;
    }

    public  static  void doPost(final Handler handler, int tag, String phone, String pwd){
        String url = "";
        if (tag == 0){
            url = "http://172.17.8.100/small/user/v1/login";
        }else{
            url = "http://172.17.8.100/small/user/v1/register";
        }
        OkHttpClient client = new OkHttpClient();
            RequestBody body = new FormBody.Builder()
                .add("phone",phone)
                .add("pwd",pwd)
                .build();
        Request request = new Request.Builder()
                .url(url)
                .post(body)
                .build();
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                info = "请求失败";
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String string = response.body().string();
                try {
                    JSONObject jsonObject = new JSONObject(string);
                    info = jsonObject.getString("message");
                    Log.e("tag",info);
                    Message message = new Message();
                    message.obj = info;
                    handler.sendMessage(message);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        });
    }
}

Modle接口

package com.bawei.xiejiaqi0227.modle;

import com.bawei.xiejiaqi0227.interfaces.CallBack;

public interface IModle {

    void getCa(CallBack callBack,int tag,String phone,String pwd);
}

Modle实现类

package com.bawei.xiejiaqi0227.modle;

import android.os.Handler;
import android.os.Message;

import com.bawei.xiejiaqi0227.interfaces.CallBack;
import com.bawei.xiejiaqi0227.util.OkHttpUtil;

public class MainModle implements IModle{

    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            String s = (String) msg.obj;
            if (s.contains("成功")){
                  callBack.Success(s);
            }else{
                callBack.Error(s);
            }
        }
    };

    private CallBack callBack;

    @Override
    public void getCa(CallBack callBack, int tag, String phone, String pwd) {
      this.callBack = callBack;
        OkHttpUtil.doPost(handler,tag,phone,pwd);
    }
}

Presenter接口

package com.bawei.xiejiaqi0227.presenter;

public interface IPresenter {

    void getLogin(int tag,String phone,String pwd);

}

Presenter的实现类

package com.bawei.xiejiaqi0227.presenter;

import com.bawei.xiejiaqi0227.interfaces.CallBack;
import com.bawei.xiejiaqi0227.modle.MainModle;
import com.bawei.xiejiaqi0227.view.IView;

public class MainPresenter implements IPresenter{
    private MainModle mainModle;
    private IView iView;
    public MainPresenter(IView iView) {
        mainModle = new MainModle();
        this.iView = iView;
    }

    @Override
    public void getLogin(final int tag, String phone, String pwd) {
           mainModle.getCa(new CallBack() {
               @Override
               public void Success(String result) {
                   iView.getShow(result,tag);
               }

               @Override
               public void Error(String msg) {
                   iView.getShow(msg,tag);
               }
           },tag,phone,pwd);
    }
    public void onDestory(){
        if (mainModle != null){
             mainModle = null;
        }else if (iView != null){
            iView = null;
        }
    }
}

View的接口

package com.bawei.xiejiaqi0227.view;

public interface IView {

    void getShow(String info,int tag);

}

View的实现类

package com.bawei.xiejiaqi0227.view;

import android.Manifest;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;

import com.bawei.xiejiaqi0227.R;
import com.bawei.xiejiaqi0227.presenter.MainPresenter;

public class MainActivity extends AppCompatActivity implements IView,View.OnClickListener{

    private EditText et1,et2;
    private CheckBox cb1;
    private Button bt1,bt2,bt3;
    private MainPresenter presenter;
    private SharedPreferences sp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        et1 = findViewById(R.id.et1);
        et2 = findViewById(R.id.et2);
        cb1 = findViewById(R.id.cb1);
        bt1 = findViewById(R.id.bt1);
        bt2 = findViewById(R.id.bt2);
        bt3 = findViewById(R.id.bt3);

        bt1.setOnClickListener(this);
        bt2.setOnClickListener(this);

        presenter = new MainPresenter(this);

        sp = getSharedPreferences("bt2", Context.MODE_PRIVATE);

        if (sp.getBoolean("remober",false)){
            String phone = sp.getString("phone", "");
            String pwd = sp.getString("pwd", "");
            et1.setText(phone);
            et2.setText(pwd);
            cb1.setChecked(false);
        }
/*
        if(Build.VERSION.SDK_INT>=23){//QQ需要申请写入权限
            String[] mPermissionList = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.CALL_PHONE,Manifest.permission.READ_LOGS,Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.SET_DEBUG_APP,Manifest.permission.SYSTEM_ALERT_WINDOW,Manifest.permission.GET_ACCOUNTS,Manifest.permission.WRITE_APN_SETTINGS};
            ActivityCompat.requestPermissions(this,mPermissionList,123);
        }
*/

    }

    @Override
    public void onClick(View v) {
          switch (v.getId()){
              case R.id.bt2:
                  String phone1 = et1.getText().toString();
                  String pwd1 = et2.getText().toString();
                  presenter.getLogin(0,phone1,pwd1);
                  SharedPreferences.Editor edit = sp.edit();
                  edit.putBoolean("remober",cb1.isChecked());
                  edit.putString("phone",phone1);
                  edit.putString("pwd",pwd1);
                  edit.commit();
                  break;
              case R.id.bt1:
                  Intent intent = new Intent(MainActivity.this, RegisterActivity.class);
                  finish();
                  startActivity(intent);
                  break;
          }
    }

    @Override
    public void getShow(String info, int tag) {
       if (info.equals("登录成功")){
           Toast.makeText(MainActivity.this,info,Toast.LENGTH_SHORT).show();
           startActivity(new Intent(MainActivity.this,HomeActivity.class));
       }else{
           Toast.makeText(MainActivity.this,info,Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        presenter.onDestory();
    }
}

注册的布局

<?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:orientation="vertical"
    android:background="#f4f"
    tools:context=".view.RegisterActivity">

    <EditText
        android:id="@+id/set1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
        android:layout_marginTop="30dp"
        android:hint="请输入电话号"
        android:padding="18dp"
        android:background="#dddddd"/>

    <EditText
        android:id="@+id/set2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
        android:layout_marginTop="30dp"
        android:hint="请输入密码"
        android:padding="18dp"
        android:background="#dddddd"/>
    <EditText
        android:id="@+id/set3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
        android:layout_marginTop="30dp"
        android:hint="请输入验证码"
        android:padding="18dp"
        android:background="#dddddd"/>

    <Button
        android:id="@+id/sbt1"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="100dp"
        android:background="#00dddddd"
        android:textSize="23dp"
        android:text="已有账户?立即登录"/>

    <Button
        android:id="@+id/sbt2"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_gravity="center"
        android:textSize="30dp"
        android:text="注册"/>


</LinearLayout>

注册的类

package com.bawei.xiejiaqi0227.view;

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

import com.bawei.xiejiaqi0227.R;
import com.bawei.xiejiaqi0227.presenter.MainPresenter;

public class RegisterActivity extends AppCompatActivity implements View.OnClickListener,IView{

    private EditText set1,set2;
    private Button sbt1,sbt2;
    private MainPresenter presenter;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register2);

        set1 = findViewById(R.id.set1);
        set2 = findViewById(R.id.set2);
        sbt1 = findViewById(R.id.sbt1);
        sbt2 = findViewById(R.id.sbt2);

        sbt1.setOnClickListener(this);
        sbt2.setOnClickListener(this);

        presenter = new MainPresenter(this);

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.sbt2:
                String phone = set1.getText().toString();
                String pwd = set2.getText().toString();
                presenter.getLogin(1,phone,pwd);
                break;
            case R.id.sbt1:
                Intent intent = new Intent(RegisterActivity.this, MainActivity.class);
                finish();
                startActivity(intent);
                break;
        }
    }

    @Override
    public void getShow(String info, int tag) {
        if (info.equals("注册成功")){
            Toast.makeText(RegisterActivity.this,info,Toast.LENGTH_SHORT).show();
            Intent intent1 = new Intent(RegisterActivity.this, MainActivity.class);
            finish();
            startActivity(intent1);
        }else{
            Toast.makeText(RegisterActivity.this,info,Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        presenter.onDestory();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值