登录主布局
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);
}
}