布局我就不展示了,主要代码如下:
第一步:登录和注册的契约类:
/**
* p层
*/
abstract class LoginPresenter{
public abstract void register(HashMap<String,String> params);
public abstract void login(HashMap<String,String> params);
}
/**
* m层
*/
interface LoginModel{
void register(HashMap<String,String> params, model.LoginModel.ModelCallBack modelCallBack);
void login(HashMap<String,String> params, model.LoginModel.ModelCallBack modelCallBack);
}
/**
* v层
*/
interface LoginView{
void MobileError(String error);
void success(String result);
void Fail(String msg);
}
第二步:model层的请求数据(略)p层的正则验证如下:
//判断手机号
String phone = params.get("phone");
if(!ValidatorUtil.isMobile(phone)){
if(loginView != null){
loginView.MobileError("手机号不合法");
}
return;
}
第三步:view层,执行成功的回调方法
LoginBean loginBean = new Gson().fromJson(result,LoginBean.class);
Toast.makeText(MainActivity.this,loginBean.getMessage(),Toast.LENGTH_SHORT).show();
if(loginBean.getMessage().equals("登录成功")){
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
}
第四步:view层的记住密码
//点击登录监听
login_but.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//获取输入框输入的值
String login_phone = login_edit_phone.getText().toString();
String login_pwd = login_edit_pwd.getText().toString();
HashMap<String,String> params = new HashMap<>();
params.put("phone",login_phone);
params.put("pwd",login_pwd);
if(presenter != null){
presenter.login(params);
}
//判断记住密码是否选中
if(login_remeber.isChecked()){
editor.putBoolean("ischecked",true);
editor.putString("phone",login_phone);
editor.putString("pwd",login_pwd);
editor.commit();
}
//判断自动登录是否选中
if(login_zd.isChecked()){
editor.putBoolean("ischecked_zd",true);
editor.commit();
}
//选中自动登录跳转------只选中记住密码不执行
boolean ischecked_zd = sharedPreferences.getBoolean("ischecked_zd", false);
if(ischecked_zd){
-------------把得到的用户id和sessionid存入sharedPrefece数据库---------
editor.putString("userId",loginBean.getResult().getUserId()+"");
editor.putString("sessionId",loginBean.getResult().getSessionId());
editor.commit();
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
finish();
}
/**
* 记住密码的跳转---当选中自动登录的时候不执行
*/
if(loginBean.getMessage().equals("登录成功")){
Toast.makeText(MainActivity.this,loginBean.getMessage(),Toast.LENGTH_SHORT).show();
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
}
}
});
记住密码处理
getSupportActionBar().hide();//隐藏标题栏
sharedPreferences = getSharedPreferences("user",MODE_PRIVATE);
editor = sharedPreferences.edit();
boolean ischecked = sharedPreferences.getBoolean("ischecked", false);
if(ischecked){
String phone = sharedPreferences.getString("phone", null);
String pwd = sharedPreferences.getString("pwd", null);
login_remeber.setChecked(true);//设置下次登录时,记住密码选中
login_zd.setChecked(true);//设置下次登录时,自动登录选中
login_edit_phone.setText(phone);
login_edit_pwd.setText(pwd);
}
//点击自动登录自动选中记住密码
login_zd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (ischecked){
login_remeber.setChecked(true);
}
}
})
shape标签按钮圆角处理-------新建一个xml文件,创建的时候设置为shape
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ffffff"></solid>
<corners android:radius="8dp"></corners>
<size android:height="40dp"
android:width="280dp"></size>
</shape>