Compare commits

...

5 Commits

@ -0,0 +1,147 @@
package com.grassroots.booktracker.activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import com.grassroots.booktracker.R;
import com.grassroots.booktracker.utils.MD5Utils;
public class LoginActivity extends AppCompatActivity {
private TextView tv_register;//返回键,显示的注册
private Button btn_login;//登录按钮
private String username, password, spPsw;//获取的用户名,密码,加密密码
private EditText etUserName, etPassword;//编辑框
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
//设置此界面为竖屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
init();
}
//获取界面控件
private void init() {
Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setNavigationIcon(R.drawable.ic_back);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//登录界面销毁
finish();
}
});
//从activity_login.xml中获取的
tv_register = findViewById(R.id.tv_register);
btn_login = findViewById(R.id.btn_login);
etUserName = findViewById(R.id.et_username);
etPassword = findViewById(R.id.et_password);
//立即注册控件的点击事件
tv_register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 为了跳转到注册界面,并实现注册功能
Intent intent = new Intent(LoginActivity.this, RegisterActivity.class);
startActivity(intent);
}
});
//登录按钮的点击事件
btn_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//开始登录,获取用户名和密码 getText().toString().trim();
username = etUserName.getText().toString().trim();
password = etPassword.getText().toString().trim();
//对当前用户输入的密码进行MD5加密再进行比对判断, MD5Utils.md5( ); psw 进行加密判断是否一致
String md5Psw = MD5Utils.md5(password);
// md5Psw ; spPsw 为 根据从SharedPreferences中用户名读取密码
// 定义方法 readPsw为了读取用户名得到密码
spPsw = readPsw(username);
// TextUtils.isEmpty
if (TextUtils.isEmpty(username)) {
Toast.makeText(LoginActivity.this, "请输入用户名", Toast.LENGTH_SHORT).show();
} else if (TextUtils.isEmpty(password)) {
Toast.makeText(LoginActivity.this, "请输入密码", Toast.LENGTH_SHORT).show();
// md5Psw.equals(); 判断输入的密码加密后是否与保存在SharedPreferences中一致
} else if (md5Psw.equals(spPsw)) {
//一致登录成功
Toast.makeText(LoginActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
//保存登录状态,在界面保存登录的用户名 定义个方法 saveLoginStatus boolean 状态 , userName 用户名;
saveLoginStatus(true, username);
//登录成功后关闭此页面进入主页
Intent data = new Intent();
//datad.putExtra( ); name , value ;
data.putExtra("isLogin", true);
//RESULT_OK为Activity系统常量状态码为-1
// 表示此页面下的内容操作成功将data返回到上一页面如果是用back返回过去的则不存在用setResult传递data值
setResult(RESULT_OK, data);
//销毁登录界面
LoginActivity.this.finish();
// 跳转到主界面,登录成功的状态传递到 ClassificationActivity 中
startActivity(new Intent(LoginActivity.this, NavActivity.class));
} else if ((spPsw != null && !TextUtils.isEmpty(spPsw) && !md5Psw.equals(spPsw))) {
Toast.makeText(LoginActivity.this, "输入的用户名和密码不一致", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(LoginActivity.this, "此用户名不存在", Toast.LENGTH_SHORT).show();
}
}
});
}
private String readPsw(String userName) {
//getSharedPreferences("loginInfo",MODE_PRIVATE);
//"loginInfo",mode_private; MODE_PRIVATE表示可以继续写入
SharedPreferences sp = getSharedPreferences("loginInfo", MODE_PRIVATE);
//sp.getString() userName, "";
return sp.getString(userName, "");
}
private void saveLoginStatus(boolean status, String userName) {
//saveLoginStatus(true, userName);
//loginInfo表示文件名 SharedPreferences sp=getSharedPreferences("loginInfo", MODE_PRIVATE);
SharedPreferences sp = getSharedPreferences("loginInfo", MODE_PRIVATE);
//获取编辑器
SharedPreferences.Editor editor = sp.edit();
//存入boolean类型的登录状态
editor.putBoolean("isLogin", status);
//存入登录状态时的用户名
editor.putString("loginUserName", userName);
//提交修改
editor.commit();
}
/**
*
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (data != null) {
//是获取注册界面回传过来的用户名
// getExtra().getString("***");
String userName = data.getStringExtra("userName");
if (!TextUtils.isEmpty(userName)) {
//设置用户名到 et_user_name 控件
etUserName.setText(userName);
//et_user_name控件的setSelection()方法来设置光标位置
etUserName.setSelection(userName.length());
}
}
}
}

@ -0,0 +1,32 @@
package com.grassroots.booktracker.activity;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.grassroots.booktracker.R;
public class MainActivity extends AppCompatActivity {
private Button homeButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化
homeButton= (Button) findViewById(R.id.button);
//注册事件
homeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//创建Intent 对象
Intent intent=new Intent(MainActivity.this,LoginActivity.class);
//启动Activity
startActivity(intent);
}
});
}
}

@ -0,0 +1,72 @@
package com.grassroots.booktracker.activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.grassroots.booktracker.R;
public class NavActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_nav);
TextView tvBack = findViewById(R.id.tv_back);
tvBack.setVisibility(View.GONE);
TextView tvTitle = findViewById(R.id.tv_main_title);
tvTitle.setText("页面导航");
Button btnUserInfo = findViewById(R.id.btn_user_info);
btnUserInfo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//创建Intent 对象
Intent intent = new Intent(NavActivity.this, UserActivity.class);
//启动Activity
startActivity(intent);
}
});
Button btnBookRecommend = findViewById(R.id.btn_book_recommend);
btnBookRecommend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//创建Intent 对象
Intent intent = new Intent(NavActivity.this, SuggestActivity.class);
//启动Activity
startActivity(intent);
}
});
Button btnNoticeRemind = findViewById(R.id.btn_notice_remind);
btnNoticeRemind.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(NavActivity.this, "功能开发中", Toast.LENGTH_SHORT).show();
}
});
Button btnPermissionManage = findViewById(R.id.btn_permission_manage);
btnPermissionManage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(NavActivity.this, "功能开发中", Toast.LENGTH_SHORT).show();
}
});
Button btnLogout = findViewById(R.id.btn_logout);
btnLogout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//创建Intent 对象
Intent intent = new Intent(NavActivity.this, LoginActivity.class);
//启动Activity
startActivity(intent);
finish();
}
});
}
}

@ -0,0 +1,144 @@
package com.grassroots.booktracker.activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.graphics.Color;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.grassroots.booktracker.R;
import com.grassroots.booktracker.utils.MD5Utils;
public class RegisterActivity extends AppCompatActivity {
private TextView tv_main_title;//标题
private TextView tv_back;//返回按钮
private Button btn_register;//注册按钮
//用户名,密码,再次输入的密码的控件
private EditText et_user_name, et_psw, et_psw_again;
//用户名,密码,再次输入的密码的控件的获取值
private String userName, psw, pswAgain;
//标题布局
private RelativeLayout rl_title_bar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置页面布局 ,注册界面
setContentView(R.layout.activity_register);
//设置此界面为竖屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
init();
}
private void init() {
//从main_title_bar.xml 页面布局中获取对应的UI控件
tv_main_title = findViewById(R.id.tv_main_title);
tv_main_title.setText("注册");
tv_back = findViewById(R.id.tv_back);
//布局根元素
rl_title_bar = findViewById(R.id.title_bar);
rl_title_bar.setBackgroundColor(Color.TRANSPARENT);
//从activity_register.xml 页面中获取对应的UI控件
btn_register = findViewById(R.id.btn_register);
et_user_name = findViewById(R.id.et_user_name);
et_psw = findViewById(R.id.et_psw);
et_psw_again = findViewById(R.id.et_psw_again);
tv_back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//返回键
RegisterActivity.this.finish();
}
});
//注册按钮
btn_register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//获取输入在相应控件中的字符串
getEditString();
//判断输入框内容
if (TextUtils.isEmpty(userName)) {
Toast.makeText(RegisterActivity.this, "请输入用户名", Toast.LENGTH_SHORT).show();
} else if (TextUtils.isEmpty(psw)) {
Toast.makeText(RegisterActivity.this, "请输入密码", Toast.LENGTH_SHORT).show();
} else if (TextUtils.isEmpty(pswAgain)) {
Toast.makeText(RegisterActivity.this, "请再次输入密码", Toast.LENGTH_SHORT).show();
} else if (!psw.equals(pswAgain)) {
Toast.makeText(RegisterActivity.this, "输入两次的密码不一样", Toast.LENGTH_SHORT).show();
/**
*SharedPreferencesSharedPreferences
*/
} else if (isExistUserName(userName)) {
Toast.makeText(RegisterActivity.this, "此账户名已经存在", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(RegisterActivity.this, "注册成功", Toast.LENGTH_SHORT).show();
//把账号、密码和账号标识保存到sp里面
/**
* SharedPreferences
*/
saveRegisterInfo(userName, psw);
//注册成功后把账号传递到LoginActivity.java中
// 返回值到loginActivity显示
Intent data = new Intent();
data.putExtra("userName", userName);
setResult(RESULT_OK, data);
//RESULT_OK为Activity系统常量状态码为-1
// 表示此页面下的内容操作成功将data返回到上一页面如果是用back返回过去的则不存在用setResult传递data值
RegisterActivity.this.finish();
}
}
});
}
/**
*
*/
private void getEditString() {
userName = et_user_name.getText().toString().trim();
psw = et_psw.getText().toString().trim();
pswAgain = et_psw_again.getText().toString().trim();
}
/**
* SharedPreferencesSharedPreferences
*/
private boolean isExistUserName(String userName) {
boolean has_userName = false;
//mode_private SharedPreferences sp = getSharedPreferences( );
// "loginInfo", MODE_PRIVATE
SharedPreferences sp = getSharedPreferences("loginInfo", MODE_PRIVATE);
//获取密码
String spPsw = sp.getString(userName, "");//传入用户名获取密码
//如果密码不为空则确实保存过这个用户名
if (!TextUtils.isEmpty(spPsw)) {
has_userName = true;
}
return has_userName;
}
/**
* SharedPreferencesSharedPreferences
*/
private void saveRegisterInfo(String userName, String psw) {
String md5Psw = MD5Utils.md5(psw);//把密码用MD5加密
//loginInfo表示文件名, mode_private SharedPreferences sp = getSharedPreferences( );
SharedPreferences sp = getSharedPreferences("loginInfo", MODE_PRIVATE);
//获取编辑器, SharedPreferences.Editor editor -> sp.edit();
SharedPreferences.Editor editor = sp.edit();
//以用户名为key密码为value保存在SharedPreferences中
//key,value,如键值对editor.putString(用户名,密码);
editor.putString(userName, md5Psw);
//提交修改 editor.commit();
editor.commit();
}
}

@ -0,0 +1,58 @@
package com.grassroots.booktracker.activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.grassroots.booktracker.R;
import com.grassroots.booktracker.adapter.Suggest;
import com.grassroots.booktracker.adapter.SuggestAdapter;
import java.util.ArrayList;
import java.util.List;
public class SuggestActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_suggest);
TextView tvTitle = findViewById(R.id.tv_main_title);
tvTitle.setText("图书推荐");
TextView tvBack = findViewById(R.id.tv_back);
tvBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SuggestActivity.this.finish();
}
});
RecyclerView rvSuggest = findViewById(R.id.rv_suggest);
SuggestAdapter suggestAdapter = new SuggestAdapter();
rvSuggest.setAdapter(suggestAdapter);
rvSuggest.setLayoutManager(new LinearLayoutManager(this));
List<Suggest> suggestList = new ArrayList<>();
suggestList.add(new Suggest(R.mipmap.book1, "梭罗著外国经典名著小说文学书籍八年级书目外国小说文学作品集名家名译 原著原版全中文完整版图书课外阅读知识读物"));
suggestList.add(new Suggest(R.mipmap.book2, "人性的弱点全集全本无删减版卡耐基著优点人生哲理书籍"));
suggestList.add(new Suggest(R.mipmap.book3, "厚黑学李宗吾著文学大师林语堂先生鼎力推荐说话的艺术成功学 成功励志高情商"));
suggestList.add(new Suggest(R.mipmap.book4, "彩图版中国历史书籍中华上下五千年全套古代史时间简史资治通鉴史记故事青少年成人历史书籍朝代故事"));
suggestList.add(new Suggest(R.mipmap.book1, "梭罗著外国经典名著小说文学书籍八年级书目外国小说文学作品集名家名译 原著原版全中文完整版图书课外阅读知识读物"));
suggestList.add(new Suggest(R.mipmap.book2, "人性的弱点全集全本无删减版卡耐基著优点人生哲理书籍"));
suggestList.add(new Suggest(R.mipmap.book3, "厚黑学李宗吾著文学大师林语堂先生鼎力推荐说话的艺术成功学 成功励志高情商"));
suggestList.add(new Suggest(R.mipmap.book4, "彩图版中国历史书籍中华上下五千年全套古代史时间简史资治通鉴史记故事青少年成人历史书籍朝代故事"));
suggestList.add(new Suggest(R.mipmap.book1, "梭罗著外国经典名著小说文学书籍八年级书目外国小说文学作品集名家名译 原著原版全中文完整版图书课外阅读知识读物"));
suggestList.add(new Suggest(R.mipmap.book2, "人性的弱点全集全本无删减版卡耐基著优点人生哲理书籍"));
suggestList.add(new Suggest(R.mipmap.book3, "厚黑学李宗吾著文学大师林语堂先生鼎力推荐说话的艺术成功学 成功励志高情商"));
suggestList.add(new Suggest(R.mipmap.book4, "彩图版中国历史书籍中华上下五千年全套古代史时间简史资治通鉴史记故事青少年成人历史书籍朝代故事"));
suggestList.add(new Suggest(R.mipmap.book1, "梭罗著外国经典名著小说文学书籍八年级书目外国小说文学作品集名家名译 原著原版全中文完整版图书课外阅读知识读物"));
suggestList.add(new Suggest(R.mipmap.book2, "人性的弱点全集全本无删减版卡耐基著优点人生哲理书籍"));
suggestList.add(new Suggest(R.mipmap.book3, "厚黑学李宗吾著文学大师林语堂先生鼎力推荐说话的艺术成功学 成功励志高情商"));
suggestList.add(new Suggest(R.mipmap.book4, "彩图版中国历史书籍中华上下五千年全套古代史时间简史资治通鉴史记故事青少年成人历史书籍朝代故事"));
suggestAdapter.setSuggestList(suggestList);
}
}
Loading…
Cancel
Save