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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 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 用户注册功能:如果用户没有访问该系统的权限,可以通过注册功能注册用户账号密码,用户通过输入需要注册的账号密码并点击同意协议便可完成注册,注册成功后跳转登陆页面。若用户有账号和密码可以点击“已有账号”跳转登录页面进行登录。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
Java Android开发 Swift
安卓与iOS开发对比:平台选择对项目成功的影响
【10月更文挑战第4天】在移动应用开发的世界中,选择合适的平台是至关重要的。本文将深入探讨安卓和iOS两大主流平台的开发环境、用户基础、市场份额和开发成本等方面的差异,并分析这些差异如何影响项目的最终成果。通过比较这两个平台的优势与挑战,开发者可以更好地决定哪个平台更适合他们的项目需求。
109 1
|
1月前
|
前端开发 JavaScript 测试技术
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
93 2
|
1月前
|
XML Java 数据库
安卓项目:app注册/登录界面设计
本文介绍了如何设计一个Android应用的注册/登录界面,包括布局文件的创建、登录和注册逻辑的实现,以及运行效果的展示。
138 0
安卓项目:app注册/登录界面设计
|
2月前
|
IDE Android开发 iOS开发
探索Android与iOS开发的差异:平台选择对项目成功的影响
【9月更文挑战第27天】在移动应用开发的世界中,Android和iOS是两个主要的操作系统平台。每个系统都有其独特的开发环境、工具和用户群体。本文将深入探讨这两个平台的关键差异点,并分析这些差异如何影响应用的性能、用户体验和最终的市场表现。通过对比分析,我们将揭示选择正确的开发平台对于确保项目成功的重要作用。
|
11天前
|
前端开发 JavaScript 测试技术
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
在 Android 开发中,选择合适的架构模式对于构建中大型项目至关重要。常见的架构模式有 MVVM、MVP、MVI、Clean Architecture 和 Flux/Redux。每种模式都有其优缺点和适用场景,例如 MVVM 适用于复杂 UI 状态和频繁更新,而 Clean Architecture 适合大型项目和多平台开发。选择合适的架构应考虑项目需求、团队熟悉度和可维护性。
39 6
|
21天前
|
前端开发 JavaScript 测试技术
Android适合构建中大型项目的架构模式全面对比
Android适合构建中大型项目的架构模式全面对比
39 2
|
2月前
|
Java Maven 开发工具
第一个安卓项目 | 中国象棋demo学习
本文是作者关于其第一个安卓项目——中国象棋demo的学习记录,展示了demo的运行结果、爬坑记录以及参考资料,包括解决Android Studio和maven相关问题的方法。
第一个安卓项目 | 中国象棋demo学习
|
28天前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
187 3
|
1月前
|
编译器 Android开发
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
|
1月前
|
缓存 开发框架 移动开发
uni-app:下载使用uni&创建项目&和小程序链接&数据缓存&小程序打包 (一)
uni-app 是一个跨平台的开发框架,它允许开发者使用 Vue.js 来构建应用程序,并能够同时发布到多个平台,如微信小程序、支付宝小程序、H5、App(通过DCloud的打包服务)等。uni-app 的目标是通过统一的代码库,简化多平台开发过程,提高开发效率。 在这一部分中,我们将逐步介绍如何下载和使用uni-app、创建一个新的项目、如何将项目链接到小程序,以及实现数据缓存的基本方法。

热门文章

最新文章