使用MVP架构 实现本地登录

先来一波布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="用户名"/>

        <EditText
            android:id="@+id/username"
            android:layout_width="200dp"
            android:layout_height="wrap_content"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="密码"/>

        <EditText
            android:id="@+id/password"
            android:layout_width="200dp"
            android:layout_height="wrap_content"/>

    </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>

接下来瞅一瞅MainActivity

package com.mvp.mvplogin;


import android.app.ProgressDialog;
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.Toast;

import com.mvp.mvplogin.presenter.Presenter;

public class MainActivity extends AppCompatActivity implements View.OnClickListener, Presenter.mvpLogin {

    private EditText mUsername;
    private EditText mPassword;
    private Button login;
    private ProgressDialog mProgressDialog;
    private Presenter mPresenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        mUsername = (EditText) findViewById(R.id.username);
        mPassword = (EditText) findViewById(R.id.password);
        login = (Button) findViewById(R.id.login);

        login.setOnClickListener(this);
        //动态创建进度条
        mProgressDialog = new ProgressDialog(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.login:

                //获取账号与密码
                final String username = mUsername.getText().toString().trim();
                final String password = mPassword.getText().toString().trim();

                mPresenter = new Presenter(this);
                boolean login = mPresenter.noNullLogin(username, password);
                //显示进度条
                mProgressDialog.show();
                if (login){
                    mPresenter.login();
                }else{
                    mProgressDialog.dismiss();
                    Toast.makeText(MainActivity.this, "输入不能为null,么么哒", Toast.LENGTH_SHORT).show();
                }
                break;
        }
    }

    @Override
    public void success() {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                mProgressDialog.dismiss();
                Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    public void failed() {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                mProgressDialog.dismiss();
                Toast.makeText(MainActivity.this, "登录失败", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

封装工具类

package com.mvp.mvplogin.net;


import com.mvp.mvplogin.User;

/**
 * date:2018/11/8
 * author:李壮(HUAWEI)
 * function:
 */
public class LoginNet {

    public boolean login(User user) {
        if ("lz".equals(user.username) && "lz".equals(user.password)){
            return true;

        }else {
            return false;
        }

    }
}

创建Bean类

package com.mvp.mvplogin;

/**
 * date:2018/11/8
 * author:李壮(HUAWEI)
 * function:
 */
public class User {
    public String username;
    public String password;
}

封装presenter

package com.mvp.mvplogin.presenter;

import android.text.TextUtils;

import com.mvp.mvplogin.User;
import com.mvp.mvplogin.net.LoginNet;

/**
 * date:2018/11/8
 * author:李壮(HUAWEI)
 * function:
 */
public class Presenter {

    private User mUser;

    public Presenter(mvpLogin mvpLogin) {
        mMvpLogin = mvpLogin;
    }

    public boolean noNullLogin(String username, String password){
        //创建Bean类 把数据设置到Bean类
        mUser = new User();
        mUser.username = username;
        mUser.password = password;

        if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password)){
            return false;
        }

        return true;

    }

  public void login(){
      new Thread(new Runnable() {
          @Override
          public void run() {
              LoginNet net = new LoginNet();
              boolean result = net.login(mUser);
              //判断账号密码是否在正确
              if (result){
               mMvpLogin.success();
              }else {
               mMvpLogin.failed();
              }
          }
      }).start();
  }


  ////////////使用接口回调///////////
    public interface mvpLogin{
        //成功
        void success();
      //失败
      void failed();
  }

  private mvpLogin mMvpLogin;

    public void setMvpLogin(mvpLogin mvpLogin){
        mMvpLogin = mvpLogin;
    }

}

猜你喜欢

转载自blog.csdn.net/LZ0419/article/details/83863954