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

目录

一、项目演示

二、项目测试环境

三、项目详情

四、完整的项目源码


一、项目演示

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

二、项目测试环境

三、项目详情

登录页

  1. 用户输入

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

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

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

    • 用户可以通过点击"注册"链接跳转到注册界面 RegisterActivity
  5. UI 交互

    • 复选框状态改变时,更新文本颜色。
    • 提供友好的错误提示(如账号或密码为空、登录失败等)。
java 复制代码
 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 显示各类提示信息(如输入错误、注册成功等)。
    • 支持返回操作,结束当前活动。
java 复制代码
  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
java 复制代码
 // 将标题转换为对应的类型
    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;
        }
    }

我的页面

java 复制代码
<?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 复制代码
<?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>

四、完整的项目源码

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

相关推荐
Swift社区1 小时前
从 JDK 1.8 切换到 JDK 21 时遇到 NoProviderFoundException 该如何解决?
java·开发语言
DKPT2 小时前
JVM中如何调优新生代和老生代?
java·jvm·笔记·学习·spring
phltxy2 小时前
JVM——Java虚拟机学习
java·jvm·学习
seabirdssss4 小时前
使用Spring Boot DevTools快速重启功能
java·spring boot·后端
喂完待续4 小时前
【序列晋升】29 Spring Cloud Task 微服务架构下的轻量级任务调度框架
java·spring·spring cloud·云原生·架构·big data·序列晋升
benben0444 小时前
ReAct模式解读
java·ai
轮到我狗叫了5 小时前
牛客.小红的子串牛客.kotori和抽卡牛客.循环汉诺塔牛客.ruby和薯条
java·开发语言·算法
Volunteer Technology6 小时前
三高项目-缓存设计
java·spring·缓存·高并发·高可用·高数据量
栗子~~6 小时前
bat脚本- 将jar 包批量安装到 Maven 本地仓库
java·maven·jar