Android小白,实现本次项目,参照了很多大佬的代码。其中有些不足的地方请指点交流。
一、项目实现内容:
1.实现登录页面:
1.1 注册用户
1.2 登录用户
1.3 注销用户
1.4 更改密码
2.淘宝界面:
登录之后淘宝界面视频:
视频
二、运行结果与代码实现:
《数据库文件请看Dome》
1.进入app
1.1布局设计:
布局文件名:activity_main.xml
1.2 MainActivity.java内容:
1.找到自己需要的使用的按钮:
Button but_login = (Button) findViewById(R.id.M_but1);
Button but_register = (Button) findViewById(R.id.M_but2);
2.注册按钮点击事件:
` but_login.setOnClickListener(mListener);
but_register.setOnClickListener(mListener);`
3.使用switch语句getId()方法进行控件配对:
public void onClick(View v) {
switch (v.getId()) {
case R.id.M_but1:
Intent intent_login = new Intent(MainActivity.this,UserLogin.class);
startActivity(intent_login);
finish();
break;
case R.id.M_but2:
register();
break;
}
}
4.使用Intent意图实现页面跳转:
//跳转至登录界面:
Intent intent_login = new Intent(MainActivity.this,UserLogin.class);
startActivity(intent_login);
finish();
//跳转至注册界面:
Intent intent_login = new Intent(MainActivity.this,UserRegster.class);
startActivity(intent_login);
finish();
注意事项:使用intent实现页面跳转需要在AndroidManifest.xml文件里面注册,
如下:
<activity
android:name="com.example.tangbeibei.UserLogin"
android:label="登陆界面" >
</activity>
<activity
android:name="com.example.tangbeibei.UserRegister"
android:label="注册页面">
</activity>
2.登入页面:
2.1布局设计:
布局文件名:u_login.xml
2.2 UserLogin.java内容:
1.点击记住密码
使用SharedPreferences存储并记住密码
private SharedPreferences login_sp;
private UserDataManager mUserDataManager;
获取用户账户与密码
String name = login_sp.getString("USER_NAME","");
String pwd = login_sp.getString("PASSWORD", "");
设置没有勾选为false用于if语句判断
boolean choseRemember = login_sp.getBoolean("mRememberCheck", false);
if (choseRemember) {
edit_name.setText(name);
edit_pwd.setText(pwd);
che_autlogin.setChecked(true);
}
调用数据库UserManager.java的中的findUserByNameAndPwd方法,获取数据库中的信息。
int result = mUserDataManager.findUserByNameAndPwd(userName,
userPwd);
//判断是否勾选了记住密码选项:
if (che_autpwd.isChecked()) {
editor.putBoolean("mRememberCheck", true);
} else {
editor.putBoolean("mRememberCheck", false);
}
2.登录成功的实现:
2.1判断改用户是否输入账户与密码:
定义一个isUserNameAndPwdValid()的方法,使用getText获取用户输入的信息,并使用equals进行判断。使用Toast输入提示信息。Trim()的作用是去空格。
private boolean isUserNameAndPwdValid() {
if (edit_name.getText().toString().trim().equals("")) {
Toast.makeText(this, "请输入账号", Toast.LENGTH_SHORT).show();
return false;
} else if (edit_pwd.getText().toString().trim().equals("")) {
Toast.makeText(this, "请输入密码", Toast.LENGTH_SHORT).show();
return false;
}
return true;
}
2.1配对数据库中的账户与密码:
使用findUserByNameAndPwd获数据库中的账号密码,使用if语句判断。
int result = mUserDataManager.findUserByNameAndPwd(userName,
userPwd);
if (result == 1) { // 返回1说明用户名和密码均正确
// 保存用户名和密码
editor.putString("USER_NAME", userName);
editor.putString("PASSWORD", userPwd);
// 是否记住密码
if (che_autpwd.isChecked()) {
editor.putBoolean("mRememberCheck", true);
} else {
editor.putBoolean("mRememberCheck", false);
}
editor.commit();
// 登录成功跳转至UserSucLogin页面
Intent intent = new Intent(UserLogin.this, UserSucLogin.class);
startActivity(intent);
finish();
Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();// 登录成功提示
} else if (result == 0) {
Toast.makeText(this, "登录失败", Toast.LENGTH_SHORT).show(); // 登录失败提示
}
}
}
2.3 连接数据库:
//打开数据库
@Override
protected void onResume() {
if (mUserDataManager == null) {
mUserDataManager = new UserDataManager(this);
mUserDataManager.openDataBase();
}
super.onResume();
}
//释放资源
@Override
protected void onDestroy() {
super.onDestroy();
}
//关闭数据库
@Override
protected void onPause() {
if (mUserDataManager != null) {
mUserDataManager.closeDataBase();
mUserDataManager = null;
}
super.onPause();
}
2.1注销账户:
首先调用isUserNameAndPwdValid()方法对账户秘密进行判断。正确后,获取账号与密码,使用setText(””);将账户用于密码设置为空字串。从而实现注销密码。
public void cancel() { // 注销
if (isUserNameAndPwdValid()) {
String userName = edit_name.getText().toString().trim(); // 获取当前输入的用户名和密码信息
String userPwd = edit_pwd.getText().toString().trim();
int result = mUserDataManager.findUserByNameAndPwd(userName,
userPwd);
if (result == 1) { // 返回1说明用户名和密码均正确
Toast.makeText(this, "注销成功", Toast.LENGTH_SHORT).show();
edit_name.setText("");
edit_pwd.setText("");
mUserDataManager.deleteUserDatabyname(userName);
} else if (result == 0) {
Toast.makeText(this, "注销失败", Toast.LENGTH_SHORT).show(); // 注销失败提示
}
}
}
3.注册页面:
3.1布局设计:
布局文件:UserRegister.xml
3.2 UsesrRegister.java
1.创建本地数据库
if (mUserDataManager == null) {
mUserDataManager = new UserDataManager(this);
// 创建本地数据库
mUserDataManager.openDataBase();
}
}
2.打开数据库,进行用户存储
UserDatabase mUser = new UserDatabase(userName, userPwd);
mUserDataManager.openDataBase();
long flag = mUserDataManager.insertUserData(mUser);
4.更新密码页面:
4.1页面设计:
布局文件:u_upudata.xml
4.2 UserUpdatPwd.java内容
注释写的很详细:
public class UserUpdatePwd extends Activity {
private EditText mName;
private EditText mPwd_new;
private EditText mPwd_old;
private EditText mCheckPwd;
private Button but_determine;
private Button but_Off;
private UserDataManager mUserDataManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.u_upadate);
mName = (EditText) findViewById(R.id.Up_edit1);
mPwd_new = (EditText) findViewById(R.id.Up_edit3);
mPwd_old = (EditText) findViewById(R.id.Up_edit2);
mCheckPwd = (EditText) findViewById(R.id.Up_edit4);
but_determine = (Button) findViewById(R.id.Up_but1);
but_Off = (Button) findViewById(R.id.Up_but2);
but_determine.setOnClickListener(m_resetpwd_Listener); // 注册界面两个按钮的监听事件
but_Off.setOnClickListener(m_resetpwd_Listener);
if (mUserDataManager == null) {
mUserDataManager = new UserDataManager(this);
mUserDataManager.openDataBase(); // 建立本地数据库
}
}
OnClickListener m_resetpwd_Listener = new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.Up_but1: // 确认按钮的监听事件
resetpwd_check();
break;
case R.id.Up_but2: // 取消按钮的监听事件,由注册界面返回登录界面
Intent intent_Resetpwd_to_Login = new Intent(
UserUpdatePwd.this, UserLogin.class); // 切换Resetpwd
// Activity至Login
// Activity
startActivity(intent_Resetpwd_to_Login);
finish();
break;
}
}
};
private void resetpwd_check() {
if (isUserNameAndPwdValid()) {
String userName = mName.getText().toString().trim();
String userPwd_old = mPwd_old.getText().toString().trim();
String userPwd_new = mPwd_new.getText().toString().trim();
String userPwdCheck = mCheckPwd.getText().toString().trim();
int result=mUserDataManager.findUserByNameAndPwd(userName, userPwd_old);
if(result==1){ //返回1说明用户名和密码均正确,继续后续操作
if(userPwd_new.equals(userPwdCheck)==false){ //两次密码输入不一样
Toast.makeText(this, "",Toast.LENGTH_SHORT).show();
return ;
} else {
UserDatabase mUser = new UserDatabase(userName, userPwd_new);
mUserDataManager.openDataBase();
boolean flag = mUserDataManager.updateUserData(mUser);
if (flag == false) {
Toast.makeText(this, "更改密码成功",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(this, "更改密码失败",Toast.LENGTH_SHORT).show();
mUser.pwdresetFlag=1;
Intent intent_Register_to_Login = new Intent(UserUpdatePwd.this,UserLogin.class) ; //切换User Activity至Login Activity
startActivity(intent_Register_to_Login);
finish();
}
}
}else if(result==0){ //返回0说明用户名和密码不匹配,重新输入
Toast.makeText(this, "用户名和密码不匹配,重新输入",Toast.LENGTH_SHORT).show();
return;
}
}
}
public boolean isUserNameAndPwdValid() {
String userName = mName.getText().toString().trim();
//检查用户是否存在
int count=mUserDataManager.findUserByName(userName);
//用户不存在时返回,给出提示文字
if(count<=0){
Toast.makeText(this,"此用户不存在",Toast.LENGTH_SHORT).show();
return false;
}
if (mName.getText().toString().trim().equals("")) {
Toast.makeText(this, "请输入账号",Toast.LENGTH_SHORT).show();
return false;
} else if (mPwd_old.getText().toString().trim().equals("")) {
Toast.makeText(this, "请输入旧密码",Toast.LENGTH_SHORT).show();
return false;
} else if (mPwd_new.getText().toString().trim().equals("")) {
Toast.makeText(this, "请输入新密码",Toast.LENGTH_SHORT).show();
return false;
}else if(mCheckPwd.getText().toString().trim().equals("")) {
Toast.makeText(this, "请再次确认密码",Toast.LENGTH_SHORT).show();
return false;
}
return true;
}
}
6.登录成功界面
布局设计: