效果
model类中的接口和方法
自定义接口
package com.example.mvp_denglu.model.loginModel;
import com.example.mvp_denglu.model.bean.UserBean;
public interface LoginModel {
UserBean getUserBeanData(String username, String password);
//非空
boolean submit(UserBean userBean);
//给定值
boolean isflag(UserBean userBean);
}
方法
package com.example.mvp_denglu.model.loginModel;
import android.text.TextUtils;
import com.example.mvp_denglu.model.bean.UserBean;
public class LoginModelImp implements LoginModel {
//获取数据,封装UserBean
@Override
public UserBean getUserBeanData(String username, String password) {
UserBean userBean = new UserBean();
userBean.setUsername(username);
userBean.setPassword(password);
return userBean;
}
//判断非空
@Override
public boolean submit(UserBean userBean) {
if(TextUtils.isEmpty(userBean.getUsername()) && TextUtils.isEmpty(userBean.getPassword())){
return false;
}
return true;
}
//给定值
@Override
public boolean isflag(UserBean userBean) {
if("jbk".equals(userBean.getUsername()) && "123".equals(userBean.getPassword())){
return true;
}
return false;
}
}
数据类
package com.example.mvp_denglu.model.bean;
public class UserBean {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
presenter类中的借口和方法
接口
package com.example.mvp_denglu.presenter;
public interface LoginPresenter {
void login();
}
方法
package com.example.mvp_denglu.presenter;
import android.os.SystemClock;
import com.example.mvp_denglu.model.bean.UserBean;
import com.example.mvp_denglu.model.loginModel.LoginModelImp;
import com.example.mvp_denglu.view.MainActivity;
import com.example.mvp_denglu.view.inter.LoginView;
public class LoginPresenterImp implements LoginPresenter{
private LoginView loginView;
private final LoginModelImp loginModelImp;
public LoginPresenterImp(MainActivity loginView) {
this.loginView = loginView;
loginModelImp = new LoginModelImp();
}
@Override
public void login() {
String useranme = loginView.getUseranme();
String password = loginView.getPassword();
final UserBean userBeanData = loginModelImp.getUserBeanData(useranme, password);
if(loginModelImp.submit(userBeanData)){
//显示进度条对话框
loginView.showProgressDialog();
new Thread(){
@Override
public void run() {
SystemClock.sleep(2000);
//关闭进度条对话框
loginView.closeProgressDialog();
if(loginModelImp.isflag(userBeanData)){
loginView.showToast("欢迎回来!!!");
}else {
loginView.showToast("您的信息有误,请重新填写!!!");
}
}
}.start();
}else{
loginView.showToast("输入不能为空!!!");
}
}
}
view类中的接口和方法
接口
package com.example.mvp_denglu.view.inter;
public interface LoginView {
String getUseranme();
String getPassword();
void showProgressDialog();
void closeProgressDialog();
void showToast(String str);
}
主页面方法
package com.example.mvp_denglu.view;
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.LinearLayout;
import android.widget.Toast;
import com.example.mvp_denglu.R;
import com.example.mvp_denglu.presenter.LoginPresenterImp;
import com.example.mvp_denglu.view.inter.LoginView;
public class MainActivity extends AppCompatActivity implements LoginView, View.OnClickListener {
private EditText mUsername;
private EditText mPassword;
/**
* 登录
*/
private Button mLogin;
private LinearLayout progressBar;
private LoginPresenterImp loginPresenterImp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
loginPresenterImp = new LoginPresenterImp(this);
loginPresenterImp.login();
}
private void initView() {
mUsername = (EditText) findViewById(R.id.username);
mPassword = (EditText) findViewById(R.id.password);
mLogin = (Button) findViewById(R.id.login);
progressBar = findViewById(R.id.progressBar);
mLogin.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
default:
break;
case R.id.login:
loginPresenterImp.login();
break;
}
}
//获取输入的用户名
@Override
public String getUseranme() {
return mUsername.getText().toString();
}
//获取输入的密码
@Override
public String getPassword() {
return mPassword.getText().toString();
}
//打开进度条
@Override
public void showProgressDialog() {
progressBar.setVisibility(View.VISIBLE);
}
//关闭进度条
@Override
public void closeProgressDialog() {
runOnUiThread(new Runnable() {
@Override
public void run() {
progressBar.setVisibility(View.GONE);
}
});
}
//Toast
@Override
public void showToast(final String str) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
}
});
}
}
布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="40dp"
android:paddingLeft="40dp"
android:paddingRight="40dp"
android:paddingTop="40dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="用户名" />
<EditText
android:id="@+id/username"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="4"
android:padding="5dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:layout_marginTop="20dp"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="密码" />
<EditText
android:id="@+id/password"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="4"
android:padding="5dp" />
</LinearLayout>
<Button
android:id="@+id/login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:text="登录" />
</LinearLayout>
<LinearLayout
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#99888888"
android:visibility="gone">
<ProgressBar
android:id="@android:id/progress"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:max="10000" />
</LinearLayout>
</RelativeLayout>