基于Android Studio 垃圾分类助手App--原创

目录

一、项目演示视频

二、开发环境

三、设计与实现

1.启动页

2.注册登录

3.首页

答题页

4.搜索页

5.我的页面

6.个人信息页面

7.修改密码页面

Get项目源码


一、项目演示视频

基于Android Studio 垃圾分类助手App--原创

二、开发环境

三、设计与实现

1.启动页

1.设置延迟三秒后执行 runnable,然后跳转到登录页面。

2.初始化一个计时器 timeCount,总共执行四秒,每秒执行一次。

3.当计时器结束时,移除 runnable,即取消跳转到登录页面的操作。

图片

2.注册登录

记住密码功能:

在用户勾选“记住密码”的情况下,会将输入的用户名和密码保存到SharedPreferences中,下次打开应用时会自动填充用户名和密码,并保持勾选状态。

取消勾选时则清空保存的用户名和密码信息。

登录功能:

用户点击登录按钮后,会检查输入的用户名和密码是否为空,若为空则弹出提示。

若用户名和密码均不为空,则调用userHelper中的方法验证用户信息。

若验证通过,则会根据“记住密码”选项决定是否保存用户名和密码信息到SharedPreferences中,并跳转到主界面(MainActivity)。

若验证不通过,则弹出登录失败提示。

跳转注册页面功能:

用户点击“注册”文本时,会跳转到注册页面(RegisterActivity)。

图片

包括一个注册活动(RegisterActivity),用户可以在其中输入用户名、密码和确认密码。

如果用户名、密码或确认密码为空,应用程序会显示相应的提示消息。

如果密码与确认密码不匹配,也会有相应的提示消息。如果所有输入都有效,则会调用用户助手(UserHelper)来添加用户。

添加用户成功后,会显示注册成功消息,并将用户重定向到登录页面(LoginActivity)。

图片

3.首页

用于在主页显示视频。使用VideoView来播放视频,视频的URL是从互联网获取的。

在片段的onCreateView方法中,它获取了VideoView实例,并设置了视频的URL,然后开始播放视频。

最后,将VideoView设置为填充父布局的大小。

图片

03

答题页

简单的学习应用程序,界面包含了几个选项按钮用于回答问题。

点击按钮后会进行答案检查,显示回答是否正确,并在3秒后获取下一个问题。

同时,也可以开始答题并获取题目内容。

题目内容通过网络请求从指定的URL获取,获取到数据后会解析JSON并显示在界面上。

在整个过程中,还包括了按钮的禁用和启用功能,以及网络请求的异步处理和错误提示。

图片

4.搜索页

点击搜索按钮时根据输入的关键字发起网络请求获取数据。

getNewsData 方法中使用 OkHttpClient 发起异步网络请求,获取到响应后解析 JSON 数据,更新界面显示相关列表信息。

当网络请求失败或数据解析出错时,在 UI 线程上显示相应错误提示。整体实现了搜索关键字获取相关数据并展示的功能。

图片

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#F1F1F1"
    tools:context=".Fragment.SearchFragment">

    <View
        android:id="@+id/view2"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:background="#00BCD4"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="分类搜索"
        android:textColor="#fff"
        android:textSize="20sp"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="@+id/view2"
        app:layout_constraintEnd_toEndOf="@+id/view2"
        app:layout_constraintStart_toStartOf="@+id/view2"
        app:layout_constraintTop_toTopOf="parent" />

    <View
        android:id="@+id/view3"
        android:layout_width="0dp"
        android:layout_height="35dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="16dp"
        android:background="@drawable/view"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/view2" />

    <ImageView
        android:id="@+id/img_search"
        android:layout_width="20dp"
        android:layout_height="0dp"
        android:layout_marginRight="10dp"
        android:src="@drawable/searchd"
        app:layout_constraintBottom_toBottomOf="@+id/view3"
        app:layout_constraintEnd_toEndOf="@+id/view3"
        app:layout_constraintTop_toTopOf="@+id/view3" />

    <EditText
        android:id="@+id/et_search"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginLeft="10dp"
        android:background="#fff"
        android:ems="10"
        android:hint="请输入名称查询"
        android:inputType="textPersonName"
        android:textSize="14sp"
        app:layout_constraintBottom_toBottomOf="@+id/view3"
        app:layout_constraintEnd_toStartOf="@+id/img_search"
        app:layout_constraintStart_toStartOf="@+id/view3"
        app:layout_constraintTop_toTopOf="@+id/view3" />

    <ListView
        android:id="@+id/lv"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/view3" />

</androidx.constraintlayout.widget.ConstraintLayout>

5.我的页面

1.信息部分:用户点击后可查看详细信息,点击后跳转至InformationActivity。

2.修改密码部分:用户点击后可修改密码,点击后跳转至ModifyPassWordActivity。

3.版本部分:用户点击后可查看当前应用程序版本信息,通过Toast消息显示当前版本号。

4.退出部分:用户点击后退出应用程序,点击后跳转至登录页面(LoginActivity),并结束当前活动。

图片

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Fragment.MineFragment">

    <!-- TODO: Update blank fragment layout -->
    <View
        android:id="@+id/view6"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:background="#00BCD4"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textViews8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="个人中心"
        android:textColor="#fff"
        android:textSize="20sp"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="@+id/view6"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/view6" />

    <ImageView
        android:id="@+id/imageView14"
        android:layout_width="match_parent"
        android:layout_height="170dp"
        android:scaleType="centerCrop"
        android:src="@drawable/studywd"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/view6" />

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:orientation="vertical"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/imageView14">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="vertical"
            android:padding="10dp">

        </LinearLayout>

        <LinearLayout
            android:id="@+id/ll_information"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:background="#fff"
            android:gravity="center|left"
            android:orientation="horizontal"
            android:padding="10dp">

            <ImageView
                android:id="@+id/imageView2"
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:layout_marginLeft="10dp"
                android:src="@drawable/information" />

            <TextView
                android:id="@+id/textView5"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginLeft="8dp"
                android:layout_weight="1"
                android:gravity="center|left"
                android:text="个人信息"
                android:textColor="#000"
                android:textSize="13sp" />

            <ImageView
                android:id="@+id/imageView3"
                android:layout_width="15dp"
                android:layout_height="match_parent"
                android:layout_marginRight="10dp"
                android:src="@drawable/right" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/ll_password"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_marginTop="20dp"
            android:background="#fff"
            android:gravity="center|left"
            android:orientation="horizontal"
            android:padding="10dp">

            <ImageView
                android:id="@+id/imageView12"
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:layout_marginLeft="10dp"
                android:src="@drawable/password" />

            <TextView
                android:id="@+id/textView10"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginLeft="8dp"
                android:layout_weight="1"
                android:gravity="center|left"
                android:text="修改密码"
                android:textColor="#000"
                android:textSize="13sp" />

            <ImageView
                android:id="@+id/imageView13"
                android:layout_width="15dp"
                android:layout_height="match_parent"
                android:layout_marginRight="10dp"
                android:src="@drawable/right" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/ll_versions"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_marginTop="20dp"
            android:background="#fff"
            android:gravity="center|left"
            android:orientation="horizontal"
            android:padding="10dp">

            <ImageView
                android:id="@+id/imageView8"
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:layout_marginLeft="10dp"
                android:src="@drawable/banben" />

            <TextView
                android:id="@+id/textView8"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginLeft="8dp"
                android:layout_weight="1"
                android:gravity="center|left"
                android:text="当前版本"
                android:textColor="#000"
                android:textSize="13sp" />

            <ImageView
                android:id="@+id/imageView9"
                android:layout_width="15dp"
                android:layout_height="match_parent"
                android:layout_marginRight="10dp"
                android:src="@drawable/right" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/ll_quit"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_marginTop="20dp"
            android:background="#fff"
            android:gravity="center|left"
            android:orientation="horizontal"
            android:padding="10dp">

            <ImageView
                android:id="@+id/imageView10"
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:layout_marginLeft="10dp"
                android:src="@drawable/quit" />

            <TextView
                android:id="@+id/textView9"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginLeft="8dp"
                android:layout_weight="1"
                android:gravity="center|left"
                android:text="退出登录"
                android:textColor="#000"
                android:textSize="13sp" />

            <ImageView
                android:id="@+id/imageView11"
                android:layout_width="15dp"
                android:layout_height="match_parent"
                android:layout_marginRight="10dp"
                android:src="@drawable/right" />
        </LinearLayout>

    </LinearLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

6.个人信息页面

显示用户注册时的信息

图片

7.修改密码页面

图片

Get项目源码

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

### 创建环保知识问答应用程序的登录界面计 #### 使用 Android Studio 计登录页面 为了创建一个美观且功能齐全的登录页面,在 Android Studio 中可以通过 XML 文件定义布局并利用 Java 或 Kotlin 编写交互逻辑。 #### 置项目结构 启动 Android Studio 并新建一个名为 "EcoQuizApp" 的项目。选择 Empty Activity 模板来简化初始置过程[^3]。 #### 构建用户界面 (UI) 打开 `res/layout/activity_main.xml` 文件,这里将构建登录表单的主要组件: ```xml <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:padding="16dp" android:layout_height="match_parent"> <!-- 标题 --> <TextView android:id="@+id/titleText" android:text="欢迎来到生态知识问答" android:textSize="24sp" android:gravity="center_horizontal" android:layout_marginTop="50dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"/> <!-- 用户名输入框 --> <EditText android:id="@+id/usernameInput" android:hint="请输入用户名" android:inputType="textEmailAddress" android:maxLines="1" app:layout_constraintTop_toBottomOf="@id/titleText" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" android:layout_marginTop="30dp"/> <!-- 密码输入框 --> <EditText android:id="@+id/passwordInput" android:hint="请输入密码" android:inputType="textPassword" android:maxLines="1" app:layout_constraintTop_toBottomOf="@id/usernameInput" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" android:layout_marginTop="10dp"/> <!-- 登录按钮 --> <Button android:id="@+id/loginButton" android:text="登录" app:layout_constraintTop_toBottomOf="@id/passwordInput" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" android:layout_marginTop="20dp"/> </androidx.constraintlayout.widget.ConstraintLayout> ``` 此代码片段展示了如何使用 ConstraintLayout 来安排各个 UI 组件的位置,并置了必要的属性以便于用户体验优化[^1]。 #### 添加样式和主题配置 为了让应用看起来更加专业和谐统一,可以在 `res/values/styles.xml` 中自定义全局外观风格: ```xml <style name="LoginTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorAccent">@color/colorAccent</item> <item name="windowNoTitle">true</item> <item name="windowActionBar">false</item> <item name="android:statusBarColor">@android:color/transparent</item> </style> ``` 记得更新 `AndroidManifest.xml` 文件中的 activity 主题声明以应用新样式[^2]。 #### 处理用户事件 最后一步是在 MainActivity.java/kotlin 类里处理用户的点击动作和其他可能发生的互动行为。这通常涉及到验证输入数据的有效性和导航到下一个活动或显示错误消息等功能实现。 通过上述步骤,已经完成了一个基本但完整的登录页计方案。当然还可以继续扩展更多特性比如记住账号选项或是第三方社交平台快捷登陆等方式提升产品竞争力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程乐学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值