当前位置: 首页 > news >正文

网络资源模板--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.lryc.cn/news/463013.html

相关文章:

  • LabVIEW提高开发效率技巧----离线调试
  • 6N137S1取反电路图
  • Nullinux:一款针对Linux操作系统的安全检测工具
  • 学会这 5 个 AI 神器做字体设计,保证让你私单接到爆!
  • 《Vue3 踩坑》expose 和 defineExpose 暴露属性或方法注意事项
  • 10.13论文阅读
  • 六西格玛黑带项目:TBX-02无人机飞行稳定性提升——张驰咨询
  • git clone 国内镜像
  • 【服务器虚拟化】
  • 【RAG】aiops第一名方案-EasyRAG:自动网络运营的高效检索增强生成框架
  • 3款备受好评的电脑数据恢复软件,赶紧收藏以备不时之需
  • .net core 实现多线程方式有哪些
  • 《Linux从小白到高手》综合应用篇:深入理解Linux磁盘及IO优化
  • 【Linux】内存文件系统的I/O、重定向
  • 力扣10.18
  • cs木马图形化界面出现问题处理
  • 数据结构与算法 - 树 #数的概念 #二叉树 #堆 - 堆的实现/堆排序/TOP-K问题
  • Git推送被拒
  • Jmeter进行http接口测试
  • 工业相机详解及选型
  • RAID 矩阵
  • 详细分析Redisson分布式锁中的renewExpiration()方法
  • 实验3,网络地址转换
  • Java 中的 String 字符串是不可变的
  • 计算机网络架构实例
  • Chrome与Firefox浏览器HTTP自动跳转HTTPS的解决方案
  • 众数信科荣登“2024 CHINA AIGC 100”榜单
  • 【AI知识】距离度量和相似性度量的常见算法
  • LeetCode1004.最大连续1的个数
  • Parallels Desktop20虚拟机软件能让你在Mac上无缝运行Windows