Android期末项目 新闻APP的设计与实现(一)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Android期末项目 新闻APP的设计与实现

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 用户注册功能:如果用户没有访问该系统的权限,可以通过注册功能注册用户账号密码,用户通过输入需要注册的账号密码并点击同意协议便可完成注册,注册成功后跳转登陆页面。若用户有账号和密码可以点击“已有账号”跳转登录页面进行登录。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
9小时前
|
Android开发
Android 分享机顶盒项目的封装类《GridView》(二)(转)
Android 分享机顶盒项目的封装类《GridView》(二)(转)
14 2
|
9小时前
|
移动开发 jenkins 持续交付
jenkins编译H5做的android端编译卫士app记录
jenkins编译H5做的android端编译卫士app记录
|
9小时前
|
XML Java Android开发
Android 分享机顶盒项目的封装类《GridView》(三)(转)
Android 分享机顶盒项目的封装类《GridView》(三)(转)
11 2
|
9小时前
|
存储 JavaScript 前端开发
uni-app 从vue3项目创建到Pinia管理数据全局使用 持久化存储数据 详细教程
uni-app 从vue3项目创建到Pinia管理数据全局使用 持久化存储数据 详细教程
|
9小时前
|
Android开发
Android APP 隐藏系统软键盘的方法
Android APP 隐藏系统软键盘的方法
18 0
|
9小时前
|
Android开发
Android修改默认system/bin/下可执行程序拥有者和权限,使用实例,只有root和系统app权限才能执行某个命令。
Android修改默认system/bin/下可执行程序拥有者和权限,使用实例,只有root和系统app权限才能执行某个命令。
13 0
|
9小时前
|
XML Java Android开发
Android系统 添加动态控制屏幕方向、强制APP横竖屏方向
Android系统 添加动态控制屏幕方向、强制APP横竖屏方向
37 1
|
9小时前
|
存储 安全 Android开发
安卓应用开发:构建一个高效的用户登录系统
【5月更文挑战第3天】在移动应用开发中,用户登录系统的设计与实现是至关重要的一环。对于安卓平台而言,一个高效、安全且用户体验友好的登录系统能够显著提升应用的用户留存率和市场竞争力。本文将探讨在安卓平台上实现用户登录系统的最佳实践,包括对最新身份验证技术的应用、安全性考量以及性能优化策略。
|
9小时前
|
前端开发 Android开发 iOS开发
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比
【4月更文挑战第30天】Flutter 框架实现跨平台移动应用,通过一致的 UI 渲染(Skia 引擎)、热重载功能和响应式框架提高开发效率和用户体验。然而,Android 和 iOS 的系统差异、渲染机制及编译过程影响性能。性能对比显示,iOS 可能因硬件优化提供更流畅体验,而 Android 更具灵活性和广泛硬件支持。开发者可采用代码、资源优化和特定平台优化策略,利用性能分析工具提升应用性能。
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比
|
9小时前
|
Java Android开发
Android开发--Intent-filter属性详解
Android开发--Intent-filter属性详解
10 0