网络资源模板--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工具设计之初是用于做性能测试的,它在实现对各种接口的调用方面已经做的比较…...
串口通信粘包问题:成因深度解析与项目实战解决方案
在嵌入式开发、工业工控、上位机下位机交互项目中,串口(RS232/RS485)是最基础、最常用的通信方式。绝大多数开发者都遇到过这样的问题:串口接收的数据偶尔错乱、解析报错、数据拼接异常,单次接收的数据时而半包、时而多…...
3分钟掌握HashCalculator:你的文件完整性守护专家
3分钟掌握HashCalculator:你的文件完整性守护专家 【免费下载链接】HashCalculator 哈希值计算工具,批量计算/批量校验/查找重复文件/改变哈希值等,支持集成到系统右键菜单 项目地址: https://gitcode.com/gh_mirrors/ha/HashCalculator …...
Unity发行版DLL调试实战:DnSpy无源码IL级断点指南
1. 这不是“反编译”,而是Unity游戏开发者的日常调试手段你有没有遇到过这样的情况:接手一个Unity发行版游戏,想快速验证某个功能逻辑是否按预期执行,或者排查一个偶发的崩溃,但手头只有打包后的Assembly-CSharp.dll&a…...
航空发动机叶片三维扫描-诺斯顿
航空发动机叶片作为发动机的核心动力部件,其精度与性能直接决定发动机的推力、燃油效率及运行安全性,三维扫描技术作为航空制造领域的核心数字化手段,已广泛应用于叶片全生命周期的多个关键环节。其应用涵盖叶片研发设计阶段的逆向工程&#…...
在线文档协作工具选型必看:14款产品对比(2026版)
一、在线文档协作工具的概念解析及其核心功能 在线文档协作工具是基于云端的文档创建、编辑、共享与协同沟通平台,核心目标是让团队在同一份资料上“实时共同工作”,减少反复传文件、版本混乱与沟通成本。 企业常见的核心能力包括: 多人实…...
CMSIS-DAP调试器原理与应用:以Elektor mbed interface为例
1. 项目概述:Elektor mbed interface [150554] 是什么?如果你玩过ARM Cortex-M系列的单片机,尤其是NXP LPC800系列,那你可能对“CMSIS-DAP”这个调试器标准不陌生。它是由ARM官方推出的一个开源调试接口标准,最大的好处…...
避坑指南:Unity中AABB碰撞检测失效的5种常见原因及解决方法
Unity中AABB碰撞检测失效的深度排查与解决方案在Unity开发中,AABB(轴对齐包围盒)碰撞检测是基础但容易出问题的环节。许多开发者都遇到过这样的情况:明明逻辑正确,测试时却出现物体穿透、碰撞时有时无等诡异现象。本文…...
为什么你的Midjourney雾效总像“水汽”而非“山岚”?——资深CG总监拆解大气散射物理模型在--v 6.1中的3层映射偏差
更多请点击: https://kaifayun.com 第一章:为什么你的Midjourney雾效总像“水汽”而非“山岚”? Midjourney 生成的雾气常呈现为均匀、半透明、边界模糊的“水汽感”——厚重、潮湿、缺乏层次与呼吸感。这并非模型能力不足,而是提…...
“--glow”并不存在?!深度逆向Midjourney 6.1源码级辉光模拟协议,曝光官方刻意隐藏的4个隐式辉光增强开关
更多请点击: https://kaifayun.com 第一章:辉光效果的视觉本质与Midjourney 6.1协议悖论 辉光(Glow)并非物理光源的直接投射,而是人眼视网膜对高对比度边缘与饱和色域交界处产生的神经光学响应——一种由局部亮度梯度…...
PDF差异对比神器diff-pdf:告别文档核对烦恼,提升工作效率的智能解决方案
PDF差异对比神器diff-pdf:告别文档核对烦恼,提升工作效率的智能解决方案 【免费下载链接】diff-pdf A simple tool for visually comparing two PDF files 项目地址: https://gitcode.com/gh_mirrors/di/diff-pdf 你是否曾在核对PDF文档时感到头疼…...
