登录页面(保存账号密码)点击登录跳转主页面
例:
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>