Android之SqliteDatabase(MVP模式)实现用户登录注册功能
用户登录以及注册功能的普遍使用就不用我说了,任何一款应用软件基本都具有登录和注册功能,今天通过前面的学习,我写了一个小demo,就是使用MVP模式写一个用户登录和注册的功能。有关MVP模式我就不做讲解了,通常来说很多实现的登录或者注册功能都是使用MVC的模式来实现的,今天我将采用MVP模式来实现这个小demo,主要是为了巩固数据库部分的知识点,然后让大家熟悉MVP这种模式,看看MVP模式的优势在哪里(其实MVP最主要的就是达到完全解耦,不同的层实现不同的功能,互不影响)。
案例的主要功能:
1. 用户登录
2. 用户注册
模拟场景:当用户点击登录按钮时,模式了一个延时3秒的操作,相当于从服务器获取用户登录信息,3秒后返回登录结果。注册也是一样
程序整体结构图:
老样子,主要功能在程序中注释
view层:
ViewInter.java
/**
* view层所有的功能
*/
public interface ViewInter {
//获取用户名
String getName();
//获取用户密码
String getPass();
//清除界面中编辑框里的名字
void clearUserName();
//清除界面中编辑框里的密码
void clearUserPass();
//显示进度条
void showLoading();
//隐藏进度条
void hideLoading();
/**
* 提示用户登录或注册成功后的状态
* @param user 用户信息
* @param tag 表示登录或注册提示
*/
void successHint(User user, String tag);
/**
* 提示用户登录或注册失败后的状态
* @param user 用户信息
* @param tag 表示登录或注册提示
*/
void failHint(User user, String tag);
}
Login.java
public class Login extends AppCompatActivity implements ViewInter{
private EditText mUserName;//用户名控件
private EditText mUserPwd;//用户密码控件
private Button mBtnLogin;//登录按钮
private Button mBtnClear;//清除按钮
private ProgressBar mProBar;//进度条
private TextView mRegister;//点我注册控件
private Presenter presenter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
//初始化控件
initView();
//初始化事件
event();
//建立与presenter层的关系,创建presenter对象
presenter = new Presenter(this, Login.this);
}
private void initView() {
mUserName = (EditText) findViewById(R.id.user_name);
mUserPwd = (EditText) findViewById(R.id.user_pwd);
mBtnLogin = (Button) findViewById(R.id.btn_login);
mBtnClear = (Button) findViewById(R.id.btn_clear);
mProBar = (ProgressBar) findViewById(R.id.progressBar);
mRegister = (TextView) findViewById(R.id.mRegister);
}
private void event() {
/**
* 登录响应事件
*/
mBtnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//告诉presenter层,我需要登录操作
presenter.login();
}
});
/**
* 清除响应事件
*/
mBtnClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//告诉presenter层,我需要清除操作
presenter.clear();
}
});
/**
* 点击注册响应事件,跳转到注册界面
*/
mRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Login.this,Register.class);
startActivity(intent);
finish();
}
});
}
@Override
public String getName() {
return mUserName.getText().toString();
}
@Override
public String getPass() {
return mUserPwd.getText().toString();
}
@Override
public void clearUserName() {
mUserName.setText("");
}
@Override
public void clearUserPass() {
mUserPwd.setText("");
}
@Override
public void showLoading() {
mProBar.setVisibility(View.VISIBLE);
}
@Override
public void hideLoading() {
mProBar.setVisibility(View.GONE);
}
@Override
public void successHint(User user,String tag) {
Toast.makeText(this,"用户" + user.getUserName() + tag + "成功",Toast.LENGTH_SHORT).show();
}
@Overrid