网络资源模板--Android Studio 实现简易新闻App
目录
一、项目演示
二、项目测试环境
三、项目详情
四、完整的项目源码
一、项目演示
网络资源模板--基于Android studio 实现的简易新闻App
二、项目测试环境

三、项目详情
登录页

-
用户输入:
- 提供账号和密码输入框,用户可以输入登录信息。
- 支持“记住账号”功能,通过复选框保存用户的输入。
-
记住账号功能:
- 如果用户选择记住账号,登录信息会保存在本地(使用类)。
-
登录逻辑:
- 在用户点击登录按钮后,首先检查输入的账号和密码是否为空。
- 调用数据库检查输入的账号和密码是否匹配。
- 登录成功后,跳转到主界面
MainActivity,并结束当前活动;登录失败时,显示提示信息。
-
注册跳转:
- 用户可以通过点击“注册”链接跳转到注册界面
RegisterActivity。
- 用户可以通过点击“注册”链接跳转到注册界面
-
UI 交互:
- 复选框状态改变时,更新文本颜色。
- 提供友好的错误提示(如账号或密码为空、登录失败等)。
private void init() {// 找到 UI 组件this.mAccount = (EditText) findViewById(R.id.edit_login_phone);this.mPassword = (EditText) findViewById(R.id.edit_login_password);this.mRemember = (CheckBox) findViewById(R.id.check_login_remember);// 加载记住的账号和密码if (SharePreferenceUtils.getRemember(this)) {this.mRemember.setChecked(true);if (SharePreferenceUtils.getPhone(this) != null) {this.mAccount.setText(SharePreferenceUtils.getPhone(this));}if (SharePreferenceUtils.getPassword(this) != null) {this.mPassword.setText(SharePreferenceUtils.getPassword(this));}}// 设置复选框的改变监听器this.mRemember.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {// 根据复选框状态改变文本颜色if (isChecked) {LoginActivity.this.mRemember.setTextColor(ContextCompat.getColor(LoginActivity.this, R.color.colorPrimary));} else {LoginActivity.this.mRemember.setTextColor(ContextCompat.getColor(LoginActivity.this, R.color.color_word1));}}});// 设置点击事件监听器findViewById(R.id.tv_login).setOnClickListener(this);findViewById(R.id.tv_login_goRegister).setOnClickListener(this);}
注册页

-
用户输入:
- 提供账号、密码和确认密码的输入框,用户可以输入注册信息。
-
输入验证:
- 验证用户输入的手机号、密码是否为空。
- 检查确认密码与输入密码是否一致。
- 确认账号是否已被注册。
-
注册逻辑:
- 如果验证通过,将用户信息(账号和密码)插入数据库。
- 注册成功后,显示成功提示并跳转到主界面
MainActivity,同时结束登录活动和当前注册活动。 - 也会在本地保存用户手机号。
-
数据库操作:
- 使用
MyDBHelper类管理 SQLite 数据库。 - 通过
Cursor检查账号是否已存在于数据库中。
- 使用
-
界面交互:
- 使用
Toast显示各类提示信息(如输入错误、注册成功等)。 - 支持返回操作,结束当前活动。
- 使用
public boolean CheckIsDataAlreadyInDBorNot(String str) {Cursor rawQuery = this.dbHelper.getWritableDatabase().rawQuery("Select * from userData where name =?", new String[]{str});if (rawQuery.getCount() > 0) {rawQuery.close(); // 关闭游标return true; // 账号已存在}rawQuery.close(); // 关闭游标return false; // 账号不存在}
首页

-
输入转换:
- 根据给定的标题字符串,返回对应的整型常量,表示不同类型的新闻。
-
类型映射:
- 每个特定的标题(如“社会新闻”、“科技新闻”等)映射到一个预定义的常量(如
ITEM_SOCIETY、ITEM_TECHNOLOGY等)。
- 每个特定的标题(如“社会新闻”、“科技新闻”等)映射到一个预定义的常量(如
-
默认返回值:
- 如果输入标题不匹配任何预定义选项,默认返回
ITEM_SOCIETY。
- 如果输入标题不匹配任何预定义选项,默认返回
// 将标题转换为对应的类型private int parseString(String title) {switch (title) {case "社会新闻":return ITEM_SOCIETY;case "国内新闻":return ITEM_COUNTY;case "国际新闻":return ITEM_INTERNATION;case "娱乐新闻":return ITEM_FUN;case "体育新闻":return ITEM_SPORT;case "NBA新闻":return ITEM_NBA;case "足球新闻":return ITEM_FOOTBALL;case "科技新闻":return ITEM_TECHNOLOGY;case "创业新闻":return ITEM_WORK;case "苹果新闻":return ITEM_APPLE;case "军事新闻":return 11;case "移动互联":return 12;case "旅游资讯":return 13;case "健康知识":return ITEM_HEALTH;case "奇闻异事":return ITEM_STRANGE;case "美女图片":return ITEM_LOOKER;case "VR科技":return ITEM_VR;case "IT资讯":return ITEM_IT;default:return ITEM_SOCIETY;}}
我的页面

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="180.0dip"android:background="@color/colorPrimary"android:padding="10.0dip"><de.hdodenhof.circleimageview.CircleImageViewandroid:id="@+id/icon_image"android:layout_width="80.0dip"android:layout_height="80.0dip"android:layout_centerInParent="true"android:scaleX="0.9"android:scaleY="0.9"android:src="@drawable/graph" /><TextViewandroid:id="@+id/username"android:layout_width="384.0dip"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_marginBottom="7.0dip"android:textColor="@color/white"android:textSize="14.0sp" /><TextViewandroid:id="@+id/mail"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_above="@id/username"android:layout_marginEnd="38.0dip"android:layout_marginBottom="2.0dip"android:layout_toStartOf="@id/icon_image"android:textColor="@color/white"android:textSize="14.0sp" />
</RelativeLayout>
新闻详情页

-
界面设置:
- 设置自定义工具栏(
Toolbar)并启用返回按钮。
- 设置自定义工具栏(
-
WebView 初始化:
- 创建并配置
WebView,启用 JavaScript 支持。 - 设置
WebViewClient,使网页在应用内加载,而非外部浏览器。
- 创建并配置
-
接收数据:
- 从意图(
Intent)中获取要加载的 URL 和标题。
- 从意图(
-
加载网页:
- 使用
WebView加载指定的 URL,并在工具栏中显示网页标题。
- 使用
-
返回操作:
- 实现返回按钮的点击事件,结束当前活动并返回到前一个活动。
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="@color/color_White"><com.google.android.material.appbar.AppBarLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"><androidx.appcompat.widget.Toolbarandroid:id="@id/tool_bar"android:layout_width="fill_parent"android:layout_height="?actionBarSize"app:layout_scrollFlags="enterAlways|scroll|snap"app:theme="@style/ThemeOverlay.AppCompat.Light"app:titleTextColor="@color/color_White" /></com.google.android.material.appbar.AppBarLayout><WebViewandroid:id="@+id/web_view"android:layout_width="fill_parent"android:layout_height="fill_parent"app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
四、完整的项目源码
👇👇👇👇👇快捷获取方式👇👇👇👇👇
相关文章:
网络资源模板--Android Studio 实现简易新闻App
目录 一、项目演示 二、项目测试环境 三、项目详情 四、完整的项目源码 一、项目演示 网络资源模板--基于Android studio 实现的简易新闻App 二、项目测试环境 三、项目详情 登录页 用户输入: 提供账号和密码输入框,用户可以输入登录信息。支持“记…...
LabVIEW提高开发效率技巧----离线调试
离线调试是LabVIEW开发中一项重要的技巧,通过使用Simulate Signal Express VI生成虚拟数据,开发者能够有效减少对实际硬件的依赖,加速开发过程。这种方法不仅可以提高开发效率,还能降低成本,增强系统的灵活性。 离…...
6N137S1取反电路图
文章目录 一、前言二、6N137S1性能介绍三、应用电路图 一、前言 在硬件电路设计中需要用到隔离电路,但此引脚输出为WS2812的信号,频率有840khz,所以需要使用逻辑光耦,选用6N137S1光耦,速率能达到10Mhz,能满…...
Nullinux:一款针对Linux操作系统的安全检测工具
关于Nullinux Nullinux是一款针对Linux操作系统的安全检测工具,广大研究人员可以利用该工具针对Linux目标设备执行网络侦查和安全检测。 该工具可以通过SMB枚举目标设备的安全状况信息,其中包括操作系统信息、域信息、共享信息、目录信息和用户信息。如…...
学会这 5 个 AI 神器做字体设计,保证让你私单接到爆!
最近我在浏览 AI 绘画的相关内容时,发现不少图像都是与字体相关的,而且其中一些呈现出的艺术特效很是让人眼前一亮。 放在之前,我们需要掌握一些专业技能、并花费大量时间才能设计出精致酷炫的艺术字,但是现在却可以轻松用文本直…...
《Vue3 踩坑》expose 和 defineExpose 暴露属性或方法注意事项
选项式写法 使用 选项式API - 状态选项 - expose 一定要注意: 接下来,进一步看示例说明: 设置 expose 仅显示列出的属性/方法才能被父组件调用;代码第 2 行,父组件可访问属性 a 和 方法 myFunc01,不可访…...
10.13论文阅读
通过联合学习检测和描述关键点增强可变形局部特征 摘要 局部特征提取是计算机视觉中处理图像匹配和检索等关键任务的常用方法。大多数方法的核心理念是图像经历仿射变换,忽略了诸如非刚性形变等更复杂的效果。此外,针对非刚性对应的新兴工作仍然依赖于…...
六西格玛黑带项目:TBX-02无人机飞行稳定性提升——张驰咨询
一、项目背景与问题定义 TBX-02是该公司最新发布的消费级无人机,面向摄影爱好者和户外探险者。产品上市后,通过客户反馈和实际测试数据发现,该无人机在复杂飞行环境中,如强风或快速移动时,存在明显的飞行抖动和稳定性…...
git clone 国内镜像
比如 git clone https://github.com/HKUST-Aerial-Robotics/A-LOAM.git 改成 git clone https://gitclone.com/github.com/HKUST-Aerial-Robotics/A-LOAM.git...
【服务器虚拟化】
服务器虚拟化是一种将一台物理服务器划分为多个虚拟服务器的技术,每个虚拟服务器都可以独立运行操作系统和应用程序。下面是一个详细的教程,以KVM虚拟化为例,介绍了具体的操作步骤和执行命令。 准备工作 a. 确保你的服务器支持虚拟化技术&…...
【RAG】aiops第一名方案-EasyRAG:自动网络运营的高效检索增强生成框架
来看一个RAG比赛方案,提出了一个名为EasyRAG的框架,用于自动化网络操作的检索增强生成。该框架旨在解决网络操作中信息检索和生成效率低、准确性差的问题。研究难点包括:如何在保证准确性的前提下提高检索和生成的效率;如何实现简…...
3款备受好评的电脑数据恢复软件,赶紧收藏以备不时之需
在日常工作和生活中,电脑数据丢失是许多人都会遇到的问题。无论是误删文件、硬盘格式化,还是系统崩溃,都可能导致重要数据的丢失。所以,好用的数据恢复软件必不可少。 但在如今的市场上数据恢复软件琳琅满目,它们在恢复…...
.net core 实现多线程方式有哪些
在 .NET Core 中,有多种方式可以实现多线程编程。这些方式包括使用 Thread 类、Task 和 Parallel 类库。每种方法都有其适用场景和优缺点。下面我将通过代码示例来展示这些不同的多线程实现方式。 1. 使用 Thread 类 Thread 类是 .NET 中最基本的多线程实现方式。…...
《Linux从小白到高手》综合应用篇:深入理解Linux磁盘及IO优化
1. 前言 其实磁盘优化和IO优化,我在前面的其他Linux调优博文中已经讲述过或者涉及过了,但是太过零碎,所以本篇就来集中深入讨论下Linux磁盘和IO调优。 2.磁盘调优 结合我多年的经验,本人认为磁盘调优最重要的是读写性能的提升和…...
【Linux】内存文件系统的I/O、重定向
文章目录 1. 系统中的文件2. 回顾C中的文件接口3. 文件类的系统调用3.1 open3.2 文件描述符 4. IO的基本过程5.重定向5.1 引入重定向5.2 系统中的重定向接口 6. 缓冲区问题7. 简单版shell的实现 1. 系统中的文件 在学习完Linux权限后,我们清楚的知道:文…...
力扣10.18
1463. 摘樱桃 II 给你一个 rows x cols 的矩阵 grid 来表示一块樱桃地。 grid 中每个格子的数字表示你能获得的樱桃数目。 你有两个机器人帮你收集樱桃,机器人 1 从左上角格子 (0,0) 出发,机器人 2 从右上角格子 (0, cols-1) 出发。 请你按照如下规则…...
cs木马图形化界面出现问题处理
一个月多月没用cs木马了,发现打开客户端之后显示不出图形化界面,且出现下面这样的报错。 、 最后发现是java版本的问题,kali的java自动更新了。把原来的openjdk11改到了openjdk23。 解决方法: 输入: sudo update-…...
数据结构与算法 - 树 #数的概念 #二叉树 #堆 - 堆的实现/堆排序/TOP-K问题
文章目录 前言 一、树 (一)、概念 1、树的定义 (二)、树的定义 1、树为什么是递归定义的? 2、如何定义树(如何表达一棵树) 解决方案一:假设我们得知该树的度 解决方案二:顺序表 解决方案三:左孩子右兄弟表示法 二、二叉…...
Git推送被拒
今天开发完成一个新的需求,将自己的分支合并到test分支后,推送到远程仓库,结果显示推送被拒: 原因是因为有人更新了test分支的代码,我在合并之前没有拉取最新的test分支代码,所以他提示我“推送前需要合并…...
Jmeter进行http接口测试
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 本文主要针对http接口进行测试,使用jmeter工具实现。 Jmeter工具设计之初是用于做性能测试的,它在实现对各种接口的调用方面已经做的比较…...
Pixel Aurora Engine应用场景:像素字体生成与游戏文本资源自动化生产
Pixel Aurora Engine应用场景:像素字体生成与游戏文本资源自动化生产 1. 像素艺术生成新纪元 在独立游戏开发领域,像素艺术始终保持着独特的魅力。传统像素画制作需要艺术家逐帧绘制,耗时耗力。Pixel Aurora Engine的出现,为游戏…...
重磅嘉宾|麻省理工学院(MIT)CSAIL 副主任 Daniel Jackson 分享:解码软件工程底层范式
当大模型把代码编写门槛拉到最低,软件工程的核心矛盾已从“写不出代码”转向“控不住设计”。AI能快速产出代码片段,却难以把控系统概念、模块边界与长期可靠性。如何让AI辅助开发既高效又可控?如何构建可解释、可组合、可验证的AI-native软件…...
AWS注册总失败?可能是你的浏览器或网络设置有问题(附详细排查流程)
AWS注册失败的终极排查指南:从浏览器到网络的深度解决方案 注册AWS账户本该是个简单的过程,但当你反复遭遇"无法完成注册"的提示时,那种挫败感简直让人抓狂。作为云计算领域的资深从业者,我见过太多用户卡在这个看似简…...
Web开发方向之核心技术线
一、我们先来说说JavaJava是一种广泛应用于企业级开发的编程语言,具有跨平台、面向对象、安全稳定等特点。掌握 Spring Boot、Spring Cloud 等框架的使用可以大大提高开发效率。Spring Boot 是一个快速开发框架,它可以帮助我们快速搭建基于 Spring 的应用…...
易语言手游中控框架源码|逍遥模拟器专用模板
温馨提示:文末有联系方式【核心亮点:即买即用的成熟中控框架】 本套源码为完整可编译、可调试的易语言手游中控模板框架,已通过逍遥模拟器实机验证,安装后无需复杂配置即可稳定运行,大幅缩短项目启动周期。【适用场景&…...
微信小程序物流查询插件接入全攻略:从资质申请到waybill_token获取(附完整代码)
微信小程序物流查询插件深度接入指南:全流程解析与实战代码 最近在帮一个电商客户优化小程序时,发现物流查询功能直接影响了30%的用户留存率。微信官方提供的物流查询插件确实能解决这个问题,但接入过程中遇到的坑比想象中多得多。今天就把完…...
基因组调查实战:KMC+GenomeScope2.0多倍体分析全流程解析
1. 为什么需要基因组调查? 当你第一次拿到一个未知物种的测序数据时,最头疼的问题往往是:这个基因组到底有多大?复杂度如何?该投入多少测序量才够用?这就好比装修房子前要先量尺寸,基因组调查就…...
3步完成OpenClaw配置:千问3.5-9B快速接入指南
3步完成OpenClaw配置:千问3.5-9B快速接入指南 1. 为什么选择OpenClaw千问3.5-9B组合 去年我在尝试自动化办公流程时,发现市面上的AI助手要么需要上传敏感数据到云端,要么功能太过局限。直到遇到OpenClaw这个开源的本地化AI智能体框架&#…...
0欧姆电阻在电子设计中的关键应用与选型指南
1. 0欧姆电阻的实质与特性在电子工程实践中,0欧姆电阻(Zero-Ohm Resistor)是一种表面贴装或插装形式的特殊电子元件。虽然标称值为零欧姆,但实际测量时会发现其存在微小的阻值——典型值在20-50毫欧之间。这个特性使其既不同于理想…...
2026.4.7总结
工作日精进:这个月在心声上看到许多离职的帖子,估计是有很多拿完年终奖离职的。看到别人写的离职感悟,我多少有些共情。当有一天,我离职的时候,我也要写一篇长篇大论。早上HR跟入职一两年的人解读了esop相关政策。这政…...
