网上的android登录记住密码有很多,刚开始做现在这个项目的时候就是参照网上做的。现在做个总结,以免以后忘记。
由于懒,第一次写技术博客。。。
先上登录页面的效果图:
项目工程结构:
java代码就3个类,登录页面、登录后主页面、注册页面,主要功能代码就在LoginActivity里了:
1、注册按钮监听:
点击登录页面上的注册按钮,跳转到注册页面,其实就是实现一个简单的activity间的跳转。
/**
* 注册按钮监听事件
*/
private OnClickListener mRegisterOnClickListener = new OnClickListener() {
public void onClick(View v) {
Intent registerIntent = new Intent(LoginActivity.this,RegisterActivity.class);
startActivity(registerIntent);
}
};
2、更多点击监听:
“更多”是一个线性布局,它响应的事件其实就是控制初始时隐藏的布局的显示或隐藏。根据记录的当前隐藏布局的状态值来判断是执行展开显示该布局,还是收缩隐藏该布局。
/**
* 更多按钮监听事件
*/
private OnClickListener viewMoreOnClickListener = new OnClickListener() {
public void onClick(View v) {
//判断更多选项展开或收起的状态
if(moreStatus == 0){
//将其展开
moreMenuLayout.setVisibility(View.VISIBLE);
moreStatus = 1;
moreImg.setImageResource(R.drawable.login_more);
}else{
//将其收起
moreMenuLayout.setVisibility(View.GONE);
moreStatus = 0;
moreImg.setImageResource(R.drawable.login_more_up);
}
}
};
3、记住密码勾选框监听
savePwChb是控件勾选框,isChecked值表示是否勾选;sp是SharedPreferences的实例,用于存储一些键值对。
CHECKED_TAG键值对中的key,用于存储是否需要记住密码。
/**
* 记住密码监听事件
*/
private OnCheckedChangeListener mSaveCheckBoxChangeListener = new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonVew, boolean isChecked) {
// TODO Auto-generated method stub
if (savePwChb.isChecked()) {
Log.i(TAG, "记住密码已选中");
sp.edit().putBoolean(CHECKED_TAG, true).commit();
}else {
Log.i(TAG, "记住密码没有选中");
sp.edit().putBoolean(CHECKED_TAG, false).commit();
}
}
4、登录按钮监听:
为了方便测试,本例将用户名密码设为“123”或“456”,真实项目中应当从数据库中读取判断。若用户名、密码正确,先判断是否需要记住密码,若选择记住密码则向SharedPreferences中存入用户名、密码的值,并将CHECKED_TAG的值改为true。最后跳转到主界面,并通过Toast提示登录成功。
/**
* 登陆按钮监听事件
*/
private OnClickListener mLoginOnClickListener = new OnClickListener() {
public void onClick(View v) {
//获取输入框值
userValue = userEdit.getText().toString();
pwValue = pwEdit.getText().toString();
//判断用户名密码是否正确
if((userValue.equals("123")&&pwValue.equals("123"))||(userValue.equals("456")&&pwValue.equals("456"))){
//判断是否需要记住密码
if(savePwChb.isChecked()){
//向记录密码的sp写入用户名、密码
Editor editor = sp.edit();
editor.putString(USER_TAG, userValue);
editor.putString(PASSWORD_TAG, pwValue);
editor.putBoolean(CHECKED_TAG, true);
editor.commit();//提交,记录密码成功
}
//跳转到主界面
Intent loginIntent = new Intent(LoginActivity.this,MainActivity.class);
startActivity(loginIntent);
Toast.makeText(LoginActivity.this, "登录成功", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(LoginActivity.this, "用户名或密码错误", Toast.LENGTH_LONG).show();
}
}
};
主要功能代码就是这些了。
记住密码登录示例的工程文件下载地址:http://download.csdn.net/detail/jackq28/6852571点击打开链接