原生登录注册(MVP框架实现)+记住密码+自动登录+圆角shape

本文介绍了使用MVP框架实现原生登录注册功能,并详细讲解了如何实现记住密码和自动登录。在实现过程中,还涵盖了view层的回调方法,以及view层中如何处理记住密码的逻辑。此外,还提到了通过shape标签创建圆角按钮的方法。
摘要由CSDN通过智能技术生成

布局我就不展示了,主要代码如下:
第一步:登录和注册的契约类:

 /**
     * p层
     */
    abstract class LoginPresenter{
        public abstract void register(HashMap<String,String> params);
        public abstract void login(HashMap<String,String> params);
    }
    /**
     * m层
     */
    interface LoginModel{
        void register(HashMap<String,String> params, model.LoginModel.ModelCallBack modelCallBack);
        void login(HashMap<String,String> params, model.LoginModel.ModelCallBack modelCallBack);
    }
    /**
     * v层
     */
    interface LoginView{
        void MobileError(String error);
        void success(String result);
        void Fail(String msg);
    }

第二步:model层的请求数据(略)p层的正则验证如下:

//判断手机号
        String phone = params.get("phone");
        if(!ValidatorUtil.isMobile(phone)){
            if(loginView != null){
                loginView.MobileError("手机号不合法");
            }
            return;
        }

第三步:view层,执行成功的回调方法

LoginBean loginBean = new Gson().fromJson(result,LoginBean.class);
        Toast.makeText(MainActivity.this,loginBean.getMessage(),Toast.LENGTH_SHORT).show();
        if(loginBean.getMessage().equals("登录成功")){
            Intent intent = new Intent(MainActivity.this,Main2Activity.class);
            startActivity(intent);
        }

第四步:view层的记住密码

//点击登录监听
        login_but.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //获取输入框输入的值
                String login_phone = login_edit_phone.getText().toString();
                String login_pwd = login_edit_pwd.getText().toString();
                HashMap<String,String> params = new HashMap<>();
                params.put("phone",login_phone);
                params.put("pwd",login_pwd);

                if(presenter != null){
                    presenter.login(params);
                }
				//判断记住密码是否选中
                if(login_remeber.isChecked()){

                        editor.putBoolean("ischecked",true);
                        editor.putString("phone",login_phone);
                        editor.putString("pwd",login_pwd);
                        editor.commit();
                }
                //判断自动登录是否选中
                if(login_zd.isChecked()){
                    editor.putBoolean("ischecked_zd",true);
                    editor.commit();
                }
	                //选中自动登录跳转------只选中记住密码不执行
	        boolean ischecked_zd = sharedPreferences.getBoolean("ischecked_zd", false);
			        if(ischecked_zd){
			        -------------把得到的用户id和sessionid存入sharedPrefece数据库---------
			            editor.putString("userId",loginBean.getResult().getUserId()+"");
			            editor.putString("sessionId",loginBean.getResult().getSessionId());
			            editor.commit();
			            Intent intent = new Intent(MainActivity.this,Main2Activity.class);
			            startActivity(intent);
			            finish();
			        }
			        /**
		             * 记住密码的跳转---当选中自动登录的时候不执行
		             */
			            if(loginBean.getMessage().equals("登录成功")){
			                Toast.makeText(MainActivity.this,loginBean.getMessage(),Toast.LENGTH_SHORT).show();
			                Intent intent = new Intent(MainActivity.this,Main2Activity.class);
			                startActivity(intent);
			            }
            }
        });

记住密码处理

        getSupportActionBar().hide();//隐藏标题栏

          sharedPreferences = getSharedPreferences("user",MODE_PRIVATE);
          editor = sharedPreferences.edit();
        boolean ischecked = sharedPreferences.getBoolean("ischecked", false);
        if(ischecked){
            String phone = sharedPreferences.getString("phone", null);
            String pwd = sharedPreferences.getString("pwd", null);
            login_remeber.setChecked(true);//设置下次登录时,记住密码选中
            login_zd.setChecked(true);//设置下次登录时,自动登录选中
            login_edit_phone.setText(phone);
            login_edit_pwd.setText(pwd);
            }
            
            //点击自动登录自动选中记住密码
        login_zd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (ischecked){
                    login_remeber.setChecked(true);
                }
            }
        })
        

shape标签按钮圆角处理-------新建一个xml文件,创建的时候设置为shape

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ffffff"></solid>
    <corners android:radius="8dp"></corners>
    <size android:height="40dp"
        android:width="280dp"></size>
</shape>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值