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

news2024/11/30 12:54:31

目录

一、项目演示

二、项目测试环境

三、项目详情

四、完整的项目源码 


一、项目演示

网络资源模板--基于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.CircleImageView
        android: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" />

    <TextView
        android: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" />

    <TextView
        android: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.AppBarLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <androidx.appcompat.widget.Toolbar
            android: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>

    <WebView
        android: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.coloradmin.cn/o/2215426.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022年10月自考《操作系统概论》02323试题

目录 一.选择题 二.填空题 三.简答题 四.综合体 一.选择题 1.以下各种操作系统中&#xff0c;对可靠性要求最高的是 &#xff08;书中&#xff09;P25页 A.分时操作系统 B.实时操作系统 C.多道批处理系统 D.单道批处理系统 2.一个进程正常执行完毕时&#xff0c;需要对其…

简述光密度仪日常中的用途及光密度测量方法

光密度仪在日常中的用途 光密度仪在众多领域发挥着重要作用。在医疗领域&#xff0c;它常用于检测生物样本中的物质浓度&#xff0c;如血液中特定成分的含量测定。在化学分析中&#xff0c;可精确测量溶液的浓度&#xff0c;为实验和研究提供准确数据。在工业生产中&#xff0…

go+bootstrap实现简单的注册登录和管理

概述 使用&#xff0c;gomysql实现了用户的登录&#xff0c;注册&#xff0c;和管理的简单功能&#xff0c;不同用户根据不同权限显示不同的内容 实战要求&#xff1a; 1、用户可以注册、登录&#xff1b; 2、登录后可以查看所有的注册的用户&#xff1b; 3、管理员操作对用…

PHP(一)从入门到放弃

参考文献&#xff1a;https://www.php.net/manual/zh/introduction.php PHP 是什么&#xff1f; PHP&#xff08;“PHP: Hypertext Preprocessor”&#xff0c;超文本预处理器的字母缩写&#xff09;是一种被广泛应用的开放源代码的多用途脚本语言&#xff0c;它可嵌入到 HTML…

Qt/C++编写的mqtt调试助手使用说明

一、使用说明 第一步&#xff0c;选择协议前缀&#xff0c;可选mqtt://、mqtts://、ws://、wss://四种&#xff0c;带s结尾的是走ssl通信&#xff0c;ws表示走websocket通信。一般选默认的mqtt://就好。第二步&#xff0c;填写服务所在主机地址&#xff0c;可以是IP地址也可以…

使用LSPatch+PlusNE修改手机软件

一、问题概述 国内使用一些软件&#xff0c;即使科学上网&#xff0c;打开都是网络错误&#xff0c;更换节点同样如此。 二、软件下载 通过官网或者正规商店(如Google play)下载并且安装。 是的&#xff0c;先要下载一个无法使用的版本&#xff0c;后续对其进行修改。 三、下…

代码随想录(七) —— 二叉树部分

1. 二叉树的四种遍历方式的理解 前序遍历&#xff0c;中序遍历&#xff0c;后序遍历&#xff1b;层次遍历 结合另一篇博客&#xff0c;关于灵神的题单刷题 二叉树刷题记录-CSDN博客 理解&#xff1a; 在二叉树类型题目中&#xff0c;遍历顺序的选择需要根据具体问题来确定…

算法笔记day04

目录 1. 在字符串中找出连续最长的数字串 2.岛屿数量 3.拼三角 1. 在字符串中找出连续最长的数字串 字符串中找出连续最长的数字串_牛客题霸_牛客网 (nowcoder.com) 算法思路&#xff1a; 这是一道简单的双指针题目&#xff0c;首先用i遍历数组&#xff0c;当遍历到数字的时…

春日技术辅导:Spring Boot课程答疑

3系统分析 3.1可行性分析 通过对本课程答疑系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本课程答疑系统采用JAVA作为开发语言&#xff0c;Spring Boot框…

数据驱动,漫途能耗管理系统打造高效节能新生态!

在我国能源消耗结构中&#xff0c;工业企业所占能耗比例相对较大。为实现碳达峰、碳中和目标&#xff0c;工厂需强化能效管理&#xff0c;减少能耗与成本。高效的能耗管理系统通过数据采集与分析&#xff0c;能实时监控工厂能源使用及报警情况&#xff0c;为节能提供数据。构建…

JVM 调优篇10 使用arthas排优

一 Arthas的作用 1.1 作用 1. 这个类从哪个 jar 包加载的&#xff1f;为什么会报各种类相关的 Exception&#xff1f; 2.是否有一个全局视角来查看系统的运行状况&#xff1f; 3. 有什么办法可以监控到JVM的实时运行状态&#xff1f; 4. 怎么快速定位应用的热点&#x…

TensorFlow详细配置

Anaconda 的安装路径配置系统环境变量 1 windows path配置 2 conda info C:\Users\Administrator>conda info active environment : None user config file : C:\Users\Administrator\.condarc populated config files : C:\Users\Administrator\.condarc …

【含文档】基于Springboot+Vue的高校科研信息管理系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

mybatis之入门(详细介绍)

1.Mybatis简介 MyBatis 是一个开源、轻量级的数据持久化框架&#xff0c;是 JDBC 和 Hibernate 的替代方案。MyBatis 内部封装了 JDBC&#xff0c;简化了加载驱动、创建连接、创建 statement 等繁杂的过程&#xff0c;开发者只需要关注 SQL 语句本身。 1.1.什么是Mybatis MyB…

VSCODE 导入cubeide工程

1.下载vscode及插件STM32 VS Code Ectersion 版本号1.0.0&#xff0c;之后这个有导入功能。 2.等待自动安装对应插件&#xff0c;提示缺少什么就补什么 3.在左侧出现stm32图标。点击Import a local project导入本地项目。 4.报错 [{"resource": "/f:V11/cmak…

【Linux】进程控制:从fork到exec

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; 进程创建 &#x1f95d; fork函数初识&#x1f95d; 写时拷贝&#x1f95d; fork常规用法&#x1f95d; fork调用失败的原因 二&#xff1a;&#x1f525;…

群晖使用Docker搭建NASTool自动化观影工具并实现在线远程管理

文章目录 前言1. 本地搭建Nastool2. nastool基础设置3. 群晖NAS安装内网穿透工具4. 配置公网地址5. 配置固定公网地址 前言 本文主要分享一下如何在群晖NAS中本地部署Nastool&#xff0c;并结合cpolar内网穿透工具&#xff0c;轻松实现公网环境远程管理与访问本地NAS中储存的影…

惠普电脑怎么开启vt_惠普电脑开启vt虚拟化图文教程(支持新旧bios开启方法)

最近使用惠普电脑的小伙伴们问我&#xff0c;惠普电脑怎么开启vt虚拟。大多数可以在Bios中开启vt虚拟化技术&#xff0c;当CPU支持VT-x虚拟化技术&#xff0c;有些电脑会自动开启VT-x虚拟化技术功能。而大部分的电脑则需要在Bios Setup界面中&#xff0c;手动进行设置&#xff…

数字媒体产业园区:创新资源集聚,助力企业成长

在当今数字化浪潮汹涌的时代&#xff0c;数字媒体产业园区作为创意与技术的交汇点&#xff0c;正以其独特的魅力和无限的潜力&#xff0c;成为助力企业成长的重要平台。其中&#xff0c;“数字媒体产业园区”以其创新资源的集聚效应&#xff0c;为入驻企业提供了广阔的发展空间…

双十一有什么好物推荐?双十一必买清单大汇总

双十一的钟声即将敲响&#xff0c;数码好礼的选购热潮已然兴起。在这个信息爆炸的时代&#xff0c;我们被各种数码产品的广告和推荐所包围。如何从中筛选出真正适合自己的数码礼物呢&#xff1f;本文将以专业的视角、客观的评价&#xff0c;为你梳理数码产品的优缺点&#xff0…