使用MVP实现登录注册

/**
* 描述:  网络请求接口回调
*/

public interface HttpCallBack {

    void onNetSuccess(String result);//成功
    void onNetFailed(String errorMsg);//失败

}

/**
 * 描述:  接口
 */
public interface Constant {
    String APP_CONFIG = "app_config";//sp文件名字
    String IS_LOGIN = "is_login";//判断是否登录

}
/**
 * 描述: V层
 */
public interface LoginView {

    void onLoginSuccess(String result);
    void onLoginFailed(String errorMsg);

}
/**
 * 描述: p层
 */
public class LoginPresenter {
    private LoginView loginView;
    private LoginModel loginModel;

    public LoginPresenter(LoginView loginView) {
        this.loginView = loginView;
        loginModel = new LoginModel();
    }

    public void login(String mobile, String password) {
        loginModel.login(mobile, password, new HttpCallBack() {
            @Override
            public void onNetSuccess(String result) {
                loginView.onLoginSuccess(result);
            }

            @Override
            public void onNetFailed(String errorMsg) {
                loginView.onLoginFailed(errorMsg);
            }
        });
    }
}
/**
 * 描述: m层
 */
public class LoginModel{


    public void login(String mobile, String password, final HttpCallBack callBack){
        final String loginUrl = "https://www.zhaoapi.cn/user/login";
        new Thread(){
            @Override
            public void run() {
                super.run();
                new HttpUtils(new HttpUtils.HttpLinear() {
                    @Override
                    public void success(String data) {
                        Gson gson = new Gson();
                        LoginBean loginBean = gson.fromJson(data, LoginBean.class);
                        if (loginBean.getCode() == 0){
                            callBack.onNetSuccess(loginBean.getData());
                        }else {
                            callBack.onNetFailed(loginBean.getMsg());
                        }
                    }
                    @Override
                    public void fail() {

                    }
                }).get(loginUrl);

            }
        }.start();
        try {
            Thread.sleep(5000);
            if (!mobile.equals("") && !password.equals("")){
                callBack.onNetSuccess("登录成功");
            }else {
                callBack.onNetFailed("登录失败");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
/**
 *      登录页面
 */
public class LoginActivity extends AppCompatActivity implements LoginView {

    /**
     * 请输入用户名……
     */
    private EditText mEdName;
    /**
     * 请输入密码……
     */
    private EditText mEdPwd;
    /**
     * 登录
     */
    private Button mBtnLogin;
    /**
     * 注册
     */
    private Button mBtnReg;
    private LoginPresenter loginPresenter;
    ProgressDialog loginProgressDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        //初始化控件
        initView();

        initViewListener();

        loginPresenter = new LoginPresenter(LoginActivity.this);



    }

    private void initViewListener() {
        //跳转到主页面
        mBtnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO: 2018/11/9 点击登录
                String mobile = mEdName.getText().toString().trim();
                String password = mEdPwd.getText().toString().trim();
                if (TextUtils.isEmpty(mobile) || TextUtils.isEmpty(password)) {
                    Toast.makeText(LoginActivity.this, "账号或密码不能为空!!!", Toast.LENGTH_SHORT).show();
                    return;
                }
                loginProgressDialog = ProgressDialog.show(LoginActivity.this, "登录", "正在登录......");
                loginProgressDialog.dismiss();
                loginPresenter.login(mobile,password);

            }
        });

        //跳转到注册页面
        mBtnReg.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(LoginActivity.this,RegActivity.class));
                finish();
            }
        });
    }
    //初始化控件
    private void initView() {
        mEdName = (EditText) findViewById(R.id.ed_name);
        mEdPwd = (EditText) findViewById(R.id.ed_pwd);
        mBtnLogin = (Button) findViewById(R.id.btn_login);
        mBtnReg = (Button) findViewById(R.id.btn_reg);
    }


    @Override
    public void onLoginSuccess(String result) {
        SharedPreferences sp = getSharedPreferences(Constant.APP_CONFIG, Context.MODE_PRIVATE);
        SharedPreferences.Editor edit = sp.edit();
        edit.putBoolean(Constant.IS_LOGIN,true);
        edit.commit();
        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
        finish();
        Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onLoginFailed(final String errorMsg) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(LoginActivity.this, errorMsg, Toast.LENGTH_SHORT).show();
            }
        });
    }
}
/**
 * 描述:   bean   登录返回
 */
public class LoginResponse implements Serializable {
    private String age;

    private String appkey;

    private String appsecret;

    private String createtime;

    private String email;

    private String fans;

    private String follow;

    private String gender;

    private String icon;

    private String latitude;

    private String longitude;

    private String mobile;

    private String money;

    private String nickname;

    private String password;

    private String praiseNum;

    private String token;

    private int uid;

    private String userId;

    private String username;
}
/**
 * 描述: bean
 */
public class LoginBean implements Serializable {

   

    private String msg;
    private int code;
    private String data;

    public String getMsg() {
        return msg;
    }

    public int getCode() {
        return code;
    }

    public String getData() {
        return data;
    }
}

/**

* 描述:    登录布局

*/

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/p"
    tools:context=".main.LoginActivity">

    <LinearLayout
        android:layout_marginTop="100dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <EditText
            android:id="@+id/ed_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="40dp"
            android:hint="请输入用户名……"
            android:textSize="24sp" />

        <EditText
            android:id="@+id/ed_pwd"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="40dp"
            android:hint="请输入密码……"
            android:textSize="24sp" />
    </LinearLayout>

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

        <Button
            android:id="@+id/btn_login"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="登录"
            android:layout_margin="20dp"
            android:textSize="24sp" />


        <Button
            android:layout_margin="20dp"
            android:id="@+id/btn_reg"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="注册"
            android:textSize="24sp" />
    </LinearLayout>


</LinearLayout>
/**
 *      欢迎页面
 */
public class WelcomeActivity extends AppCompatActivity {

    private ViewPager mVP;


    private RadioButton mBtn1;
    private RadioButton mBtn2;
    private RadioButton mBtn3;
    private RadioButton mBtn4;
    private RadioButton mBtn5;
    private RadioButton mBtn6;
    private RadioButton mBtn7;
    private RadioGroup mRadioGroup;
    private ArrayList<Integer> imgIconArrayList;
    private MyPagerAdapter mMyPagerAdapter;
    private Button mBtnTiao;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_welcome);
        //初始化控件
        initView();
        //创建页面的集合
        imgIconArrayList = new ArrayList<>();
        imgIconArrayList.add(R.drawable.yi);
        imgIconArrayList.add(R.drawable.er);
        imgIconArrayList.add(R.drawable.san);
 /*       imgIconArrayList.add(R.drawable.si);
        imgIconArrayList.add(R.drawable.wu);
        imgIconArrayList.add(R.drawable.liu);
        imgIconArrayList.add(R.drawable.ri);*/

        //设置适配器
        mMyPagerAdapter = new MyPagerAdapter(imgIconArrayList, this);
        mVP.setAdapter(mMyPagerAdapter);
        //切换页面、RadioButton跟着切换
        mVP.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                mRadioGroup.check(mRadioGroup.getChildAt(position % imgIconArrayList.size()).getId());
                if (position == imgIconArrayList.size()-1) {
                    mBtnTiao.setVisibility(View.VISIBLE);
                }else {
                    mBtnTiao.setVisibility(View.GONE);
                }
            }

            @Override
            public void onPageSelected(int position) {

            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
        //跳转
        mBtnTiao.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(WelcomeActivity.this,LoginActivity.class));
                finish();
            }
        });
    }

    //初始化控件
    private void initView() {
        mVP = (ViewPager) findViewById(R.id.v_p);
        mBtn1 = (RadioButton) findViewById(R.id.btn_1);
        mBtn2 = (RadioButton) findViewById(R.id.btn_2);
        mBtn3 = (RadioButton) findViewById(R.id.btn_3);
/*        mBtn4 = (RadioButton) findViewById(R.id.btn_4);
        mBtn5 = (RadioButton) findViewById(R.id.btn_5);
        mBtn6 = (RadioButton) findViewById(R.id.btn_6);
        mBtn7 = (RadioButton) findViewById(R.id.btn_7);*/
        mBtnTiao = (Button) findViewById(R.id.btn_tiao);
        mRadioGroup = (RadioGroup) findViewById(R.id.radio_group);
    }
}
/**
 * 描述:  PagerAdapter
 */
public class MyPagerAdapter extends PagerAdapter {


    private List<Integer> list;
    private Context context;
    public MyPagerAdapter(List<Integer> list, Context context) {
        super();
        this.list = list;
        this.context = context;
    }


    @Override
    public int getCount() {
        return Integer.MAX_VALUE;
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view == object;
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        ImageView imageView = new ImageView(context);
        imageView.setImageResource(list.get(position%list.size()));
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
        container.addView(imageView);
        return imageView;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {

        container.removeView((View) object);
    }
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".main.WelcomeActivity">

    <android.support.v4.view.ViewPager
        android:id="@+id/v_p"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    <RadioGroup
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/radio_group"
        android:orientation="horizontal"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="10dp"
        android:paddingBottom="10dp"
        >
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/btn_1"
            />
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/btn_2"
            />
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/btn_3"
            />
        <!--<RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/btn_4"
            />
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/btn_5"
            />
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/btn_6"
            />
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/btn_7"
            />-->
    </RadioGroup>

    <Button
        android:id="@+id/btn_tiao"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="72dp"
        android:visibility="gone"
        android:text="立即体验"
        android:textSize="24sp" />

</RelativeLayout>

猜你喜欢

转载自blog.csdn.net/fangShiKang/article/details/83962492