登录页面(保存账号密码)点击登录跳转主页面

例:

登录页面(保存账号密码)点击登录跳转主页面


1) 完成登录页面效果

2) 输入用户名(手机号)和密码,并做合法性校验,当手机号格式不正确时,提示“请输入合法的手机号”

3) 完成记住密码和自动登录的选中状态切换

4) 当选择自动登录时,自动选中记住密码,当取消选中记住密码时,自动取消选中自动登录

5) 当只选中记住密码时,下次进入应用时进入登录页(图一)并且自动填充用户名和密码。当选中自动登录时,下次进入应用进入首页(图二)

6) 点击登录按钮,调用登录接口完成登录请求(下附登录接口),仅当用户名为13800138000且密码为123456时,登录成功,其他情况分别提示服务器返回的消息

7) 使用MVP框架搭建,分包明确,解决内存泄漏,并封装网络请求工具类

8) 登录成功后跳转到主页面并将用户名("name”字段)传递到主页面(图二)



MainActivity主页面

public class MainActivity extends AppCompatActivity {
    private Button btn;//登录按钮
    private CheckBox checkBox;//是否保存密码的选择框
    private EditText edit_name, edit_psd;//用户名和密码的文本输入框

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }
    /**
     * 初始化数据
     */
    private void initView() {
        btn = (Button) findViewById(R.id.btn_login);
        checkBox = (CheckBox) findViewById(R.id.istrue);
        edit_name = (EditText) findViewById(R.id.name);
        edit_psd = (EditText) findViewById(R.id.password);
        output();//刚进入就先取一次,看看当然状态
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//随便设置初始帐号和密码分别为    "abc"    "123456"
                if (edit_name.getText().toString().equals("13800138000") && edit_psd.getText().toString().equals("123456")) {
                    input();//登录成功就把数据存起来
                    Intent intent = new Intent(MainActivity.this, SuccessActivity.class);
                    startActivity(intent);
                    finish();
                } else {
                    Toast.makeText(MainActivity.this, "用户名或密码错误", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
    /**
     *      */
    private void output() {
//第一个参数是文件名,第二个参数是模式(不明白可以去补习一下SharedPreferences的知识)
        SharedPreferences shared = getSharedPreferences("mypsd", MODE_PRIVATE);
        //第一个参数就是关键字,第二个参数为默认值,意思是说如果没找到值就用默认值代替
        String name1 = shared.getString("name", "");//同上,若没找到就让它为空""
        String psd1 = shared.getString("psd", "");
        boolean ischecked1 = shared.getBoolean("isChecked", false);
        edit_name.setText(name1);
        edit_psd.setText(psd1);
        checkBox.setChecked(ischecked1);
    }
    /**
     * 存到SD卡,判断选中获取缓存账号密码
     */
    private void input() {
//第一个参数是文件名,第二个参数是模式(不明白可以去补习一下SharedPreferences的知识)
        SharedPreferences.Editor edit = getSharedPreferences("mypsd", MODE_PRIVATE).edit();
        //判断选择框的状态   被选中isChecked……
        if (checkBox.isChecked()) {
            edit.putString("name", edit_name.getText().toString());
            edit.putString("psd", edit_psd.getText().toString());
            edit.putBoolean("isChecked", true);
        } else {
//            edit.clear();              //若选择全部清除就保留这行代码,注释以下三行
            edit.putString("name", edit_name.getText().toString());//只存用户名
            edit.putString("psd", "");
            edit.putBoolean("isChecked", false);
        }
        edit.commit();
    }
}

activity_main.xml

<?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"
    tools:context=".View.MainActivity">
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/name"
        android:hint="请输入手机号" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/password"
        android:hint="请输入密码" />
    <CheckBox
        android:id="@+id/istrue"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="记住密码" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="登录"
        android:layout_gravity="center_horizontal"
        android:id="@+id/btn_login" />
    <TextView
        android:id="@+id/login_zhuce"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="新用户注册" />
</LinearLayout>