1 项目基本信息
1.1 项目名称
好好学习新闻APP的设计与实现
1.2 开发运行环境
Android Studio 2022
Android SDK 7.0
SQLite 5.4.1
Gradle 7.5
JDK 1.8.0
虚拟机 Pixel 2 API 30 2
1.3 使用的核心类及组件
Activity:Android系统中的四大组件之一,它是一种应用程序组件,用于提供用户交互界面和对用户输入的处理,每个Activity都会占用一个窗口来展示它的界面。
AppCompatActivity:支持Fragment的管理和兼容,在处理多个Fragment时,可以方便地使用FragmentTransaction等API进行管理和切换。
ViewPager:是Android中的一个控件,它是一个可以滑动切换子视图的容器,通常用于实现Tab切换、引导页面和轮播图等。
ListView:通过使用Adapter机制来绑定数据和视图,Adapter需要提供数据和视图,并根据数据创建对应的视图展示在ListView中。
Fragment:它可以让开发者在一个Activity中管理多个界面片段,使得界面的组合更加灵活。这些Fragment可以被添加到或移除出Activity中,而不影响其他Fragment以及整个Activity。
SQLiteOpenHelper:封装了SQLite数据库的一些底层操作,可以更加便捷地进行数据的存储和查询。同时,该类还提供了一些常用的API,如insert()、update()、delete()和query()等方法,分别用于执行插入、更新、删除和查询等数据操作。
2 项目需求分析
2.1 APP前台部分
(1)用户登录:如果用户想查看“好好学习新闻APP”的内容,首先必须使用账号和密码进行登录,也可点击记住密码,账号密码验证成功后可进入访问。
(2)用户注册:如果用户没有账号和密码,可以点击注册通过注册获取账号和密码,输入想要注册的账号和密码同意协议后点击注册可完成注册。
(3)用户浏览:用户通过账号密码登录成功后可以浏览新闻,用户可以选择推荐、要闻、思想、综合模块进行新闻浏览。
(4)用户查看:用户通过选择推荐、要闻、思想、综合这四个模块进行新闻查看,若遇到感兴趣的标题可以点进去查看全文。
3 项目开发过程
3.1 APP功能模块
3.1.1 用户登录功能:用户通过账号密码登录成功后可以进入系统内访问或者阅读当前新闻内容。
3.1.2 用户注册功能:如果用户没有访问该系统的权限,可以通过注册功能注册用户账号密码,注册成功后跳转登陆页面。
3.1.3页面浏览功能:用户注册并登录成功后,可以进入系统浏览推荐、要闻、思想、综合这四个新闻页面。
3.1.4 新闻查看功能:如果用户发现非常感兴趣的新闻标题或图片,可以点击该新闻进入详情页面进行阅读。
APP功能模块图
3.2 数据库设计
本APP在设计数据库时需要使用User表来实现。
用户表
字段 |
数据类型 |
主键 |
外键 |
是否为空 |
说明 |
Uid |
char(32) |
是 |
否 |
否 |
用户Id |
Account |
varchar(50) |
否 |
否 |
否 |
用户账号 |
Pass |
varchar(50) |
否 |
否 |
否 |
用户密码 |
用户表实体图
3.3具体实现
3.1.1 用户登录功能:用户通过账号密码登录成功后可以进入系统内访问或者阅读当前新闻内容,如果用户经常忘记密码也可以点击记住密码选项。用户若没有账号密码可以点击右下角“还没有账号”跳转注册页面进行注册。
部分代码:
1. public class LoginActivity extends AppCompatActivity { 2. private Button btnLogin; 3. private EditText etAccount, etPassword; 4. private TextView toReg; 5. private CheckBox cb_Remember; 6. private MySQLiteOpenHelper mySQLiteOpenHelper; 7. @Override 8. protected void onCreate(@Nullable Bundle savedInstanceState) { 9. super.onCreate(savedInstanceState); 10. setContentView(R.layout.activity_login); 11. initView(); 12. initData(); 13. //设置点击监听按钮 14. btnLogin.setOnClickListener(new View.OnClickListener() { 15. @Override 16. public void onClick(View view) { 17. String account = etAccount.getText().toString(); 18. String password = etPassword.getText().toString(); 19. List<User> userList = mySQLiteOpenHelper.selectByAccountAndPass(account,password); 20. System.out.println(userList); 21. if(!userList.isEmpty()){ //说明查到了 22. Toast.makeText(LoginActivity.this,"登录成功!",Toast.LENGTH_LONG).show(); 23. if(cb_Remember.isChecked()){ 24. SharedPreferences spf = getSharedPreferences("spfRecorid",MODE_PRIVATE); 25. SharedPreferences.Editor edit = spf.edit(); 26. edit.putString("account", account); 27. edit.putString("password",password); 28. edit.putBoolean("isRemember",true); 29. edit.apply(); 30. }else{ 31. SharedPreferences spf = getSharedPreferences("spfRecorid",MODE_PRIVATE); 32. SharedPreferences.Editor edit = spf.edit(); 33. edit.putBoolean("isRemember",false); 34. edit.apply(); 35. } 36. Intent intent = new Intent(LoginActivity.this,FragmentMain.class); 37. startActivity(intent); 38. }else{ 39. Toast.makeText(LoginActivity.this,"账号或密码错误!",Toast.LENGTH_LONG).show(); 40. } 41. } 42. }); 43. toReg = findViewById(R.id.toReg); 44. toReg.setOnClickListener(new View.OnClickListener() { 45. @Override 46. public void onClick(View view) { 47. Intent intent = new Intent(LoginActivity.this,RegisterActivity.class); 48. startActivity(intent); 49. } 50. }); 51. } 52. private void initView(){ 53. btnLogin = findViewById(R.id.btn_login); 54. etAccount = findViewById(R.id.et_account); 55. etPassword = findViewById(R.id.et_password); 56. mySQLiteOpenHelper = new MySQLiteOpenHelper(this); 57. cb_Remember = findViewById(R.id.cb_Remember); 58. } 59. // 记住密码初始化功能 60. private void initData(){ 61. SharedPreferences spf = getSharedPreferences("spfRecorid",MODE_PRIVATE); 62. boolean isRem = spf.getBoolean("isRemember",false); 63. String account = spf.getString("account",""); 64. String password = spf.getString("password",""); 65. if(isRem){ 66. etAccount.setText(account); 67. etPassword.setText(password); 68. cb_Remember.setChecked(true); 69. } 70. } 71. }
3.1.2 用户注册功能:如果用户没有访问该系统的权限,可以通过注册功能注册用户账号密码,用户通过输入需要注册的账号密码并点击同意协议便可完成注册,注册成功后跳转登陆页面。若用户有账号和密码可以点击“已有账号”跳转登录页面进行登录。