网络资源模板--Android Studio 实现简易新闻App

目录

一、项目演示

二、项目测试环境

三、项目详情

四、完整的项目源码 


一、项目演示

网络资源模板--基于Android studio 实现的简易新闻App

二、项目测试环境

三、项目详情

登录页

  1. 用户输入

    • 提供账号和密码输入框,用户可以输入登录信息。
    • 支持“记住账号”功能,通过复选框保存用户的输入。
  2. 记住账号功能

    • 如果用户选择记住账号,登录信息会保存在本地(使用类)。
  3. 登录逻辑

    • 在用户点击登录按钮后,首先检查输入的账号和密码是否为空。
    • 调用数据库检查输入的账号和密码是否匹配。
    • 登录成功后,跳转到主界面 MainActivity,并结束当前活动;登录失败时,显示提示信息。
  4. 注册跳转

    • 用户可以通过点击“注册”链接跳转到注册界面 RegisterActivity
  5. 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);}

注册页

  1. 用户输入

    • 提供账号、密码和确认密码的输入框,用户可以输入注册信息。
  2. 输入验证

    • 验证用户输入的手机号、密码是否为空。
    • 检查确认密码与输入密码是否一致。
    • 确认账号是否已被注册。
  3. 注册逻辑

    • 如果验证通过,将用户信息(账号和密码)插入数据库。
    • 注册成功后,显示成功提示并跳转到主界面 MainActivity,同时结束登录活动和当前注册活动。
    • 也会在本地保存用户手机号。
  4. 数据库操作

    • 使用 MyDBHelper 类管理 SQLite 数据库。
    • 通过 Cursor 检查账号是否已存在于数据库中。
  5. 界面交互

    • 使用 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; // 账号不存在}

首页

  1. 输入转换

    • 根据给定的标题字符串,返回对应的整型常量,表示不同类型的新闻。
  2. 类型映射

    • 每个特定的标题(如“社会新闻”、“科技新闻”等)映射到一个预定义的常量(如 ITEM_SOCIETYITEM_TECHNOLOGY 等)。
  3. 默认返回值

    • 如果输入标题不匹配任何预定义选项,默认返回 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>

新闻详情页

  1. 界面设置

    • 设置自定义工具栏(Toolbar)并启用返回按钮。
  2. WebView 初始化

    • 创建并配置 WebView,启用 JavaScript 支持。
    • 设置 WebViewClient,使网页在应用内加载,而非外部浏览器。
  3. 接收数据

    • 从意图(Intent)中获取要加载的 URL 和标题。
  4. 加载网页

    • 使用 WebView 加载指定的 URL,并在工具栏中显示网页标题。
  5. 返回操作

    • 实现返回按钮的点击事件,结束当前活动并返回到前一个活动。

<?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>

四、完整的项目源码 

👇👇👇👇👇快捷获取方式👇👇👇👇👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/453457.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ最新版本4.0.2在Windows下的安装及使用

RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;提供可靠的消息传递和队列服务。它支持多种消息协议&#xff0c;包括 AMQP、STOMP、MQTT 等。本文将详细介绍如何在 Windows 系统上安装和使用最新版本的 RabbitMQ 4.0.2。 前言 RabbitMQ 是用 Erlang 语言开发的 AMQP&…

【Linux】【命令】diff

diff DescriptionsArgumentsExamples直接使用diff命令-u 输出格式-c 输出格式并列输出-s 和 -q 脚本示例示例1&#xff1a;目录及文件差异 Descriptions diff命令用于对比两个文件或者两个文件夹的不同之处&#xff0c;求基本语法如下所示&#xff1a; diff [OPTION]... FILES…

信号与噪声分析——第一节-确定信号的分析

目录 1.确定信号的分析 1.1确定信号的分类&#xff1a; 1.周期信号与非周期信号&#xff1a; 周期信号的定义&#xff1a; 性质&#xff1a; 2.能量信号与功率信号&#xff1a; 定义 区别&#xff1a; 3.基带信号与频带信号&#xff1a; 基带信号的定义&#xff1a; …

使用Matplotlib绘制箱线图:详细指南与示例

在数据分析和可视化领域&#xff0c;箱线图&#xff08;Box Plot&#xff09;是一种强大的工具&#xff0c;用于展示数据的分布特征&#xff0c;包括中位数、四分位数、异常值等。本文将详细介绍如何使用Matplotlib库在Python中绘制箱线图&#xff0c;并通过一个实际的血压数据…

基于微信小程序二手物品调剂系统设计与实现

文章目录 前言项目介绍技术介绍功能介绍核心代码数据库参考 系统效果图文章目录 前言 文章底部名片&#xff0c;获取项目的完整演示视频&#xff0c;免费解答技术疑问 项目介绍 二手物品调剂系统是一种在线平台&#xff0c;旨在促进用户之间的二手物品交易。该系统提供了一个…

数智合同 | 业财一体与履约联动的数字化转型

随着信息化技术的发展&#xff0c;合同数智化管理为应对合同管理挑战提供了新机遇。企业需要深入思考数智化手段在合同管理中的应用&#xff0c;以提高合同管理水平&#xff0c;应对新形势下的市场竞争挑战与合规要求&#xff0c;实现企业的高质量发展。 2024年5月&#xff0c;…

数据中心母线槽测温监控装置的优势和如何选型

在当今数字化高速发展的时代&#xff0c;数据中心成为了信息存储与处理的核心枢纽。而确保数据中心的稳定运行&#xff0c;对于企业和社会来说至关重要。其中&#xff0c;母线作为数据中心电力传输的关键环节&#xff0c;其正常运行直接关系到整个数据中心的可靠性。为了保障数…

2024新手攻略:项目管理工具+PMP备考经验不容错过!

&#xff08;一&#xff09;热门工具大盘点 禅道是一款专注于软件开发项目管理的工具。它涵盖了项目管理的各个环节&#xff0c;包括需求管理、任务分配、缺陷跟踪等。禅道的优势在于其对软件开发流程的深入理解和支持&#xff0c;能够帮助开发团队更好地管理项目进度和质量。…

免费的国标设备端模拟器,支持自定义编程,批量模拟大量国标GB28181设备

GB/T 28181是中国国家公共安全视频监控联网系统&#xff08;简称“国标GB28181”&#xff09;的一套标准&#xff0c;主要用于规范视频监控系统的互联互通。这套标准的实施旨在推动不同厂家设备之间的互操作性&#xff0c;促进视频监控市场的健康发展。本软件是针对GB28181标准…

算法01----移动零(C++)

题目展示 算法原理 我们这里要用到的算法是双指针移动&#xff0c;和我们之前学的快排的核心思想是一样的。我们看看怎么做吧。我会以图片的形式将我的思路告知大家。 这就是整个题目的整体思想算法&#xff0c;大家理解一下&#xff0c;其实这道题目还是很简单的。 代码编写…

02篇 机械考研复试简历保姆级教程,考研简历联系导师邮件复试调剂超全攻略 导师喜欢看到的简历(附模板)

考研复试简历怎么写&#xff1f;导师喜欢看到的简历&#xff08;附模板&#xff09; 复试简历&#xff0c;重要程度max&#xff01;绝非小事一桩&#xff01;它就像是你硬核经历的闪亮外衣&#xff0c;条理清晰、逻辑严谨且设计感十足&#xff0c;一定能在导师心中留下深刻印象…

基于neo4j知识图谱的菜谱推荐系统

&#x1f374; AI菜谱推荐系统让你“煮”事半功倍&#xff01; &#x1f374; 找不到做饭灵感的时候&#xff0c;是不是总觉得“今天吃啥”这道选择题简直是终极挑战&#xff1f;别急&#xff0c;我们基于Neo4j知识图谱的菜谱推荐系统&#xff0c;正是为了解决你的困扰而设计&a…

空洞卷积:Atrous/Dilated convolution - 语义分割中多用到

没办法&#xff0c;我还是很多基础的、底层的模块不通透&#xff0c;读论文难免会受到阻碍&#xff0c;而且这现在科研任务很急了&#xff0c;必须要马上动手实验&#xff0c;全给我弄明白、特别是算法&#xff01; 空洞卷积-可变形卷积-这一个个我都要。 空洞卷积据说在语义分…

【完-网络安全】Windows防火墙及出入站规则

文章目录 防火墙入站和出站的区别域网络、专用网络、公用网络的区别 防火墙 防火墙默认状态一般是出站允许&#xff0c;入站阻止。 入站和出站的区别 入站就是别人来访问我们的主机&#xff0c;也就是正向shell的操作 出站就是反向shell&#xff0c;主机需要主动连接kali&am…

智能指针(3)

目录 可能问题五&#xff1a; 问题分析&#xff1a; 答案格式&#xff1a; shared_ptr的模拟实现 部分1&#xff1a;引用计数的设计(分考点1) 代码实现&#xff1a; 部分2&#xff1a;作为类所必须的部分(分考点2) 代码实现&#xff1a; 部分3&#xff1a;拷贝构造函数…

WPF实现类似网易云音乐的菜单切换

这里是借助三方UI框架实现了&#xff0c;感兴趣的小伙伴可以看一下。 深色模式&#xff1a;​ 浅色模式&#xff1a; ​这里主要使用了以下三个包&#xff1a; MahApps.Metro&#xff1a;UI库&#xff0c;提供菜单导航和其它控件​​​​​​​ 实现步骤&#xff1a;1、使用B…

【JavaEE】——自定义协议方案、UDP协议

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;自定义协议 1&#xff1a;自定义协议 &#xff08;1&#xff09;交互哪些信息 &…

RuoYi-Vue若依 环境搭建 速成

一、若依简介 RuoYi-Vue 是一个开源的后台管理系统&#xff0c;适用于快速开发企业级应用。该平台由两部分组成&#xff1a;前端和后端。 &#xff08;1&#xff09;技术框架 前端技术&#xff1a; Vue.js: 前端框架使用 Vue.js&#xff0c;这是一种流行的JavaScript框架&a…

Python爬虫实战:抓取指定网站数据

一、前言 在互联网时代&#xff0c;数据的价值日益凸显。爬虫技术作为一种获取数据的重要手段&#xff0c;广泛应用于各种场景。本文将通过一个实例&#xff0c;介绍如何使用Python进行网站数据的抓取。 二、环境准备 Python 3.xrequests库BeautifulSoup库 三、代码实现 i…

【UE5】将2D切片图渲染为体积纹理,最终实现使用RT实时绘制体积纹理【第五篇-着色器投影-投射阴影部分】

投射阴影 最初打算将投影内容放在上一篇中&#xff0c;因为实现非常快速简单&#xff0c;没必要单独成篇。不过因为这里面涉及一些问题&#xff0c;我觉得还是单独作为一篇讲一下比较好。 原理 这里要用到的是 Shadow Pass Switch ,它可以为非不透明的材质替换阴影 某些版本…