登录 注册

登录主布局
package com.example.dimension_business;

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

import com.example.dimension_business.core.LoginView;
import com.example.dimension_business.http.Utiles;
import com.example.dimension_business.presenter.LoginPresenter;

import java.util.HashMap;
import java.util.Map;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

/**

  • 步骤

  • 1.初始化控件

  • 2.设置输入的密码为点点129是点点 127是显示密码

  • 3.监听记住密码复选框和跳转注册页面 bindEvent();

  • a.

  • 4.记住密码 rememberThePassword();

  • a.

  • 5.调用P层

  • 6.点击登录按钮 获取输入密码 存入Map集合便于管理

  • 7.把输入的密码添加到Map集合 起个名字

  • 8.调用P层的方法 向P层传值
    */
    public class LoginActivity extends AppCompatActivity implements LoginView {

    @BindView(R.id.et_mobile)
    EditText etMobile;
    @BindView(R.id.et_password)
    EditText etPassword;
    @BindView(R.id.cb_remPwd)
    CheckBox cbRemPwd;
    @BindView(R.id.ks_register)
    TextView ksRegister;
    @BindView(R.id.bt_dl)
    Button btDl;
    private SharedPreferences mSharedPreferences;
    private LoginPresenter mLoginPresenter;
    private String phone;
    private String password;
    private Map<String, String> mLoginMap;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_login);
         ButterKnife.bind(this);
         mSharedPreferences = getSharedPreferences("hy", MODE_PRIVATE);
         //调用p层
         mLoginPresenter = new LoginPresenter(this);
     }
    
     @OnClick({R.id.cb_remPwd, R.id.ks_register, R.id.bt_dl})
     public void onViewClicked(View view) {
         switch (view.getId()) {
             case R.id.cb_remPwd://记住密码
                 //记住密码选中撞他
                 cbRemPwd.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                     @Override
                     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                         if (isChecked) {
                             mSharedPreferences.edit().putBoolean("rememberPassword", true).commit();
                         } else {
                             mSharedPreferences.edit().putBoolean("rememberPassword", false).commit();
                         }
                     }
                 });
                 //判断记住密码复选框是否选中
                 if (mSharedPreferences.getBoolean("rememberPassword", false)) {
                     cbRemPwd.setChecked(true);
                     etMobile.setText(mSharedPreferences.getString("phone", ""));
                     etPassword.setText(mSharedPreferences.getString("pwd", ""));
                 }
                 break;
             case R.id.ks_register://注册按钮点击
                 Intent intent = new Intent(this, ReginActivity.class);
                 startActivity(intent);
                 break;
             case R.id.bt_dl:///登陆按钮
                 //获取输入的账号和密码
                 phone = etMobile.getText().toString().trim();
                 password = etPassword.getText().toString().trim();
                 //存入HashMap集合便于管理
                 mLoginMap = new HashMap<>();
                 mLoginMap.put("phone", phone);
                 mLoginMap.put("pwd", password);
                 //向P层传值  上下文 路径  Map集合
                 mLoginPresenter.onSuccess(Utiles.USER_LOGIN_URL, mLoginMap);
         }
     }
    
     @Override
     public void onSuccess(String data) {
         Toast.makeText(this, data, Toast.LENGTH_SHORT).show();
         if (data.equals("登录成功")) {
             SharedPreferences.Editor edit = mSharedPreferences.edit();
             edit.putString("phone", phone);
             edit.putString("pwd", password);
             edit.commit();
             startActivity(new Intent(LoginActivity.this, ShowActivity.class));
         }
    
     }
    
     //xh
     @Override
     protected void onDestroy() {
         super.onDestroy();
         if (mLoginPresenter != null) {
             mLoginPresenter = null;
         }
     }
    

}
登录p层
package com.example.dimension_business.presenter;

import com.example.dimension_business.bean.BeanLogin;
import com.example.dimension_business.core.LoginView;
import com.example.dimension_business.model.LoginModel;
import com.example.dimension_business.utils.OkHttpUtils;
import com.google.gson.Gson;

import java.util.Map;

public class LoginPresenter {
private LoginModel mLoginModel;
private LoginView mLoginView;

public LoginPresenter(LoginView loginView) {
    //View的有参构造  重现new Model层
    mLoginView = loginView;
    mLoginModel = new LoginModel();
}

public void onSuccess(String userLoginUrl, Map<String, String> mLoginMap) {
    //调用Model的方法
    mLoginModel.onSuccess(userLoginUrl, mLoginMap, new OkHttpUtils.OkHttpUtilsInterface() {
        @Override
        public void success(String result) {
            if (result != null) {
                //Gson解析
                BeanLogin beanLogin = new Gson().fromJson(result, BeanLogin.class);
                //获取他的信息
                String message = beanLogin.getMessage();
                mLoginView.onSuccess(message);
            }
        }

        @Override
        public void failed(Exception e) {

        }
    });


}

}
登录model
package com.example.dimension_business.model;

import com.example.dimension_business.http.Utiles;
import com.example.dimension_business.utils.OkHttpUtils;
import com.google.gson.Gson;

import java.util.Map;

public class LoginModel {

public void onSuccess(String url, Map<String, String> map, OkHttpUtils.OkHttpUtilsInterface okHttpUtilsInterface) {
    //获取OkHttpUtils的post方法  传入参数  路径 map集合  接口
    OkHttpUtils.getInstance().doPost(url, map, okHttpUtilsInterface);

}

}
登录注册 接口
package com.example.dimension_business.http;

public class Utiles {
    //登录
    public final static String USER_LOGIN_URL = "http://mobile.bwstudent.com/small/user/v1/login?";
    //注册
    public final static String USER_REGISTER_URL = "http://mobile.bwstudent.com/small/user/v1/register?";

}
ok请求
package com.example.dimension_business.utils;

import android.os.Handler;
import android.os.Looper;

import java.io.IOException;
import java.util.Map;
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 OkHttpUtils {
private final Handler mHandler;
private final OkHttpClient mOkHttpClient;
private static OkHttpUtils sOkHttpUtils;
private Call mCall;

private OkHttpUtils() {
    //创建Handler
    mHandler = new Handler(Looper.getMainLooper());
    //拦截器
    mOkHttpClient = new OkHttpClient.Builder()
            .connectTimeout(3000, TimeUnit.MILLISECONDS)
            .readTimeout(3000, TimeUnit.MILLISECONDS)
            .writeTimeout(3000, TimeUnit.MILLISECONDS)
            .build();
}

//双重锁模式单例
public static OkHttpUtils getInstance() {
    if (sOkHttpUtils == null) {
        synchronized (OkHttpUtils.class) {
            if (sOkHttpUtils == null) {
                return sOkHttpUtils = new OkHttpUtils();
            }
        }
    }
    return sOkHttpUtils;
}

//接口回调
public interface OkHttpUtilsInterface {
    void success(String result);

    void failed(Exception e);
}

//get
public void doGet(String url, final OkHttpUtilsInterface okHttpUtilsInterface) {
    //创建request
    Request request = new Request.Builder()
            .url(url)
            .build();
    mCall = mOkHttpClient.newCall(request);
    mCall.enqueue(new Callback() {
        @Override
        public void onFailure(final Call call, final IOException e) {
            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    if (okHttpUtilsInterface != null) {
                        okHttpUtilsInterface.failed(e);
                    }
                }
            });
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            final String result = response.body().string();
            if (result != null) {
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        //判断接口是否为空
                        if (okHttpUtilsInterface != null) {
                            okHttpUtilsInterface.success(result);
                        }
                    }
                });
            }
        }
    });
}

//POST
public void doPost(String url, Map<String, String> map, final OkHttpUtilsInterface okHttpUtilsInterface) {
    FormBody.Builder builder = new FormBody.Builder();
    for (String key : map.keySet()) {
        builder.add(key, map.get(key));
    }
    FormBody formBody = builder.build();
    //创建request对象
    Request request = new Request.Builder()
            .post(formBody)
            .url(url)
            .build();
    Call call = mOkHttpClient.newCall(request);
    call.enqueue(new Callback() {
        @Override
        public void onFailure(Call call, final IOException e) {
            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    //判断接口是否为空
                    if (okHttpUtilsInterface != null) {
                        okHttpUtilsInterface.failed(e);
                    }
                }
            });
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            final String result = response.body().string();
            if (result != null) {
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        //判断接口是否为空
                        if (okHttpUtilsInterface != null) {
                            okHttpUtilsInterface.success(result);
                        }
                    }
                });
            }
        }
    });
}

/**
 * 销毁
 */
public void onDestroy() {
    if (mCall != null) {
        mCall = null;
    }
    mHandler.removeCallbacksAndMessages(null);
}

}
注册主页
package com.example.dimension_business;

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.TextView;
import android.widget.Toast;

import com.example.dimension_business.core.LoginView;
import com.example.dimension_business.http.Utiles;
import com.example.dimension_business.presenter.LoginPresenter;
import com.example.dimension_business.presenter.RegisterPresenter;

import java.util.HashMap;
import java.util.Map;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class ReginActivity extends AppCompatActivity implements LoginView {
@BindView(R.id.et_mobile)
EditText etMobile;
@BindView(R.id.et_password)
EditText etPassword;
@BindView(R.id.tv_ljdl)
TextView tvLjdl;
@BindView(R.id.bt_register)
Button btRegister;
private RegisterPresenter presenter = new RegisterPresenter(this);
private String mPhone;
private String mPassword;
private Map<String, String> mLoginMap;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_regin);
    ButterKnife.bind(this);
    //点击登录  跳转到登录的页面
    tvLjdl.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(ReginActivity.this, LoginActivity.class);
            startActivity(intent);

        }
    });
}

//注册成功
@Override
public void onSuccess(String data) {
    Toast.makeText(this, data, Toast.LENGTH_SHORT).show();
}

@OnClick(R.id.bt_register)
public void onViewClicked() {
    mPhone = etMobile.getText().toString().trim();
    mPassword = etPassword.getText().toString().trim();
    //存入HashMap集合便于管理
    // Map<String,String> loginMap = new HashMap<>();
    mLoginMap = new HashMap<>();
    mLoginMap.put("phone", mPhone);
    mLoginMap.put("pwd", mPassword);
    //创建P层
    LoginPresenter loginPresenter = new LoginPresenter(this);
    loginPresenter.onSuccess(Utiles.USER_REGISTER_URL, mLoginMap);

}

}

猜你喜欢

转载自blog.csdn.net/qq_42805722/article/details/86553065