布局,主要有输入账号和密码的输入框以及记住密码的复选框,和点击登录的按钮即可
<?xml version="1.0" encoding="utf-8"?>
接下来用MVP实现主要功能了
view层
public interface LoginView {
void onLoginSeccess(String result);
void onLoginFailed(String msg);
}
model层
public class LoginModel {
public boolean onPostExecute(String name,String pwd){
if (name.equals(“Baway”) && pwd.equals(“123”)){
return true;
}else {
return false;
}
}
}
presenter层
public class LoginPresenter {
public LoginPresenter(LoginPresenterInterface loginPresenterInterface) {
mLoginPresenterInterface = loginPresenterInterface;
}
public void login(String name, String pwd){
LoginModel model = new LoginModel();
boolean b = model.onPostExecute(name, pwd);
if (b){
mLoginPresenterInterface.seccess(name,pwd);
}else {
mLoginPresenterInterface.failed();
}
}
public interface LoginPresenterInterface{
void seccess(String name,String pwd);
void failed();
}
private LoginPresenterInterface mLoginPresenterInterface;
}
Actvity层
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity implements View.OnClickListener, LoginPresenter.LoginPresenterInterface {
private EditText etUsername;
private EditText etPassword;
private Button btnLogin;
private CheckBox cb;
private String username;
private String password;
private LoginPresenter loginPresenter;
private SharedPreferences sp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
initView();
//初始化记住密码
aaa();
}
private void aaa() {
if (sp.getBoolean("jz",false)){
cb.setChecked(true);
etUsername.setText(sp.getString("username",""));
etPassword.setText(sp.getString("password",""));
}
cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){
sp.edit().putBoolean("jz",true).commit();
}else {
sp.edit().putBoolean("jz",false).commit();
}
}
});
}
private void initView() {
etUsername = findViewById(R.id.et_username);
etPassword = findViewById(R.id.et_password);
cb = findViewById(R.id.cb);
btnLogin = findViewById(R.id.btn_login);
btnLogin.setOnClickListener(this);
loginPresenter = new LoginPresenter(this);//这里的this和LoginPresenter中的连个方法是连接的,刚开始会报错,引入两个方法就好了,例如下面的seccess和failed主要是登录成功与失败的方法
sp = getSharedPreferences("qianjiu",MODE_PRIVATE);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_login:
username = etUsername.getText().toString().trim();
password = etPassword.getText().toString();
if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password)){
return;
}else {
loginPresenter.login(username,password);
}
break;
}
}
@Override
public void seccess(String name, String pwd) {
SharedPreferences.Editor edit = sp.edit();
edit.putString("username",username);
edit.putString("password",password);
edit.commit();
Toast.makeText(this, "恭喜"+username+"登陆成功", Toast.LENGTH_SHORT).show();
startActivity(new Intent(this,ShowActivity.class));
}
@Override
public void failed() {
Toast.makeText(this, "很抱歉,登录失败", Toast.LENGTH_SHORT).show();
}
}