网络资源模板--基于Android Studio 实现的麻雀笔记App

目录

一、测试环境说明

二、项目简介

三、项目演示

四、部设计详情(部分)

添加页面

五、项目源码 


一、测试环境说明

电脑环境

Windows 11

编写语言

JAVA

开发软件

Android Studio  (2020)

开发软件只要大于等于测试版本即可(近几年官网直接下载也可以),若是版本低于测试版本请自行测试。项目需要根据你的软件自行适配

二、项目简介

该项目简介来自网络,具体内容需要自行测试

麻雀笔记是一款基于Android平台的轻量级笔记应用,采用Java语言开发,使用Android Studio作为开发工具。该应用通过简洁直观的界面设计,帮助用户高效管理碎片化信息,支持便签、链接、位置等多种内容类型。

应用采用了ButterKnife、SQLite+OrmLite、Glide等主流技术框架,实现了视图绑定、数据存储和图片加载等功能。核心功能包括笔记的增删改查、分类管理、置顶操作,以及用户登录注册和个人信息管理。

系统架构上结合了Fragment+ViewPager实现多页面切换,使用DrawerLayout+NavigationView构建侧滑菜单,并通过RecyclerView和SwipeRefreshLayout实现流畅的列表展示和下拉刷新。这些技术选择既保证了功能完整性,又提升了用户体验。

安全方面实现了用户认证、密码加密存储和自动登录等功能,通过SharedPreferences进行本地数据持久化。界面设计遵循Material Design规范,采用TextInputLayout、Toolbar等现代化控件,使交互更加自然友好。

该应用特别适合快节奏生活中的信息管理需求,通过置顶功能和分类体系帮助用户区分优先级,内置的日期计算等实用工具进一步提升了使用效率。整体设计体现了"麻雀虽小,五脏俱全"的开发理念。该项目由编程乐学团队介入,优化布局完善功能

三、项目演示

网络资源模板--基于Android studio 麻雀笔记App

四、部设计详情(部分)

添加页面

1. 页面的结构

该页面采用双层ConstraintLayout嵌套结构,上层为固定高度的ViewPager显示区域,下层为功能操作区。操作区采用网格布局,包含8个功能图标及其对应文字标签,底部设有重置和保存按钮。

整体采用水平垂直Guideline进行比例分割,确保各元素在不同屏幕尺寸下保持相对位置。功能图标按2行4列矩阵排列,每个图标下方配有彩色文字说明,形成清晰的视觉分区。

背景使用统一色调,通过颜色对比突出可操作元素。

2. 使用到的技术

页面基于AndroidX组件库开发,核心采用ConstraintLayout实现复杂响应式布局,结合Guideline进行百分比定位。

使用自定义NoScrollViewPager实现多类型输入界面的滑动切换,配合ButterKnife进行视图绑定。数据层通过NoteDao操作SQLite数据库,采用SharedPreferenceUtil管理用户偏好。

日期处理使用SimpleDateFormat转换时间格式,并实现日期差计算算法。页面通过动态加载不同布局文件实现多类型输入模板,运用资源索引映射对应图标。

3. 页面详细介绍

这是便签应用的添加功能页,支持8种数据类型录入。顶部区域动态显示不同输入模板,包括便签、链接、位置等表单。

底部导航区通过图标切换输入类型,每种类型对应不同表单结构和图标颜色。保存时自动记录用户ID和创建时间,对日期类数据会智能计算天数差。

采用所见即所得设计,重置按钮可清空当前表单。数据存储时自动关联类型图标,通过封装方法统一处理不同表单的数据提取和清空操作,保证业务逻辑与界面解耦。

<?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="@color/background"
    tools:context=".fragment.AddFragment">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/constraintLayout"
        android:layout_width="0dp"
        android:layout_height="200dp"
        android:background="@color/background"
        app:layout_constraintBottom_toTopOf="@+id/guideline29"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <com.example.sparrownotes.util.NoScrollViewPager
            android:id="@+id/view_pager_add"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:background="@color/background"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

    </androidx.constraintlayout.widget.ConstraintLayout>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/constraintLayout4"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:background="@color/dock"
        android:paddingBottom="5dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/guideline29"
        app:layout_constraintVertical_bias="1.0">

        <TextView
            android:id="@+id/text_reset"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/reset"
            android:textColor="@color/grey"
            android:textSize="20sp"
            android:textStyle="bold"
            app:layout_constraintBottom_toTopOf="@+id/guideline24"
            app:layout_constraintEnd_toStartOf="@+id/guideline18"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/text_save"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/save"
            android:textColor="@color/colorPrimaryDark"
            android:textSize="20sp"
            android:textStyle="bold"
            app:layout_constraintBottom_toTopOf="@+id/guideline24"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="@+id/guideline23"
            app:layout_constraintTop_toTopOf="parent" />

        <ImageView
            android:id="@+id/img_account"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:src="@drawable/cate_account"
            app:layout_constraintBottom_toTopOf="@+id/guideline27"
            app:layout_constraintEnd_toStartOf="@+id/guideline23"
            app:layout_constraintStart_toStartOf="@+id/guideline19"
            app:layout_constraintTop_toTopOf="@+id/guideline28" />

        <ImageView
            android:id="@+id/img_date"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:src="@drawable/cate_date"
            app:layout_constraintBottom_toTopOf="@+id/guideline27"
            app:layout_constraintEnd_toStartOf="@+id/guideline18"
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="@+id/guideline28"
            app:layout_constraintVertical_bias="1.0" />

        <TextView
            android:id="@+id/text_note"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:text="@string/note"
            android:textColor="@color/colorAccent"
            android:textSize="@dimen/cate_text_size"
            app:layout_constraintBottom_toTopOf="@+id/guideline25"
            app:layout_constraintEnd_toStartOf="@+id/guideline18"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="@+id/guideline26" />

        <TextView
            android:id="@+id/text_date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:text="@string/date"
            android:textColor="@color/colorAccent"
            android:textSize="@dimen/cate_text_size"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@+id/guideline18"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="@+id/guideline27" />

        <TextView
            android:id="@+id/text_link"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:text="@string/link"
            android:textColor="@color/colorAccent"
            android:textSize="@dimen/cate_text_size"
            app:layout_constraintBottom_toTopOf="@+id/guideline25"
            app:layout_constraintEnd_toStartOf="@+id/guideline19"
            app:layout_constraintStart_toStartOf="@+id/guideline18"
            app:layout_constraintTop_toTopOf="@+id/guideline26" />

        <TextView
            android:id="@+id/text_location"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:text="@string/location"
            android:textColor="@color/colorAccent"
            android:textSize="@dimen/cate_text_size"
            app:layout_constraintBottom_toTopOf="@+id/guideline25"
            app:layout_constraintEnd_toStartOf="@+id/guideline23"
            app:layout_constraintStart_toStartOf="@+id/guideline19"
            app:layout_constraintTop_toTopOf="@+id/guideline26" />

        <TextView
            android:id="@+id/text_mood"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:text="@string/mood"
            android:textColor="@color/colorAccent"
            android:textSize="@dimen/cate_text_size"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@+id/guideline19"
            app:layout_constraintStart_toStartOf="@+id/guideline18"
            app:layout_constraintTop_toTopOf="@+id/guideline27" />

        <TextView
            android:id="@+id/text_account"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:text="@string/account"
            android:textColor="@color/colorAccent"
            android:textSize="@dimen/cate_text_size"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@+id/guideline23"
            app:layout_constraintStart_toStartOf="@+id/guideline19"
            app:layout_constraintTop_toBottomOf="@+id/img_account" />

        <TextView
            android:id="@+id/text_question"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:text="@string/question"
            android:textColor="@color/colorAccent"
            android:textSize="@dimen/cate_text_size"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="@+id/guideline23"
            app:layout_constraintTop_toTopOf="@+id/guideline27" />

        <TextView
            android:id="@+id/text_bill"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:text="@string/bill"
            android:textColor="@color/colorAccent"
            android:textSize="@dimen/cate_text_size"
            app:layout_constraintBottom_toTopOf="@+id/guideline25"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="@+id/guideline23"
            app:layout_constraintTop_toTopOf="@+id/guideline26" />

        <ImageView
            android:id="@+id/img_link"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:src="@drawable/cate_link"
            app:layout_constraintBottom_toTopOf="@+id/guideline26"
            app:layout_constraintEnd_toStartOf="@+id/guideline19"
            app:layout_constraintStart_toStartOf="@+id/guideline18"
            app:layout_constraintTop_toTopOf="@+id/guideline24" />

        <ImageView
            android:id="@+id/img_bill"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:src="@drawable/cate_bill"
            app:layout_constraintBottom_toTopOf="@+id/guideline26"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="@+id/guideline23"
            app:layout_constraintTop_toTopOf="@+id/guideline24" />

        <ImageView
            android:id="@+id/img_location"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:src="@drawable/cate_location"
            app:layout_constraintBottom_toTopOf="@+id/guideline26"
            app:layout_constraintEnd_toStartOf="@+id/guideline23"
            app:layout_constraintStart_toStartOf="@+id/guideline19"
            app:layout_constraintTop_toTopOf="@+id/guideline24" />

        <ImageView
            android:id="@+id/img_mood"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:src="@drawable/cate_mood"
            app:layout_constraintBottom_toTopOf="@+id/guideline27"
            app:layout_constraintEnd_toStartOf="@+id/guideline19"
            app:layout_constraintStart_toStartOf="@+id/guideline18"
            app:layout_constraintTop_toTopOf="@+id/guideline28" />

        <ImageView
            android:id="@+id/img_note"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:src="@drawable/cate_note"
            app:layout_constraintBottom_toTopOf="@+id/guideline26"
            app:layout_constraintEnd_toStartOf="@+id/guideline18"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="@+id/guideline24" />

        <ImageView
            android:id="@+id/img_question"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:src="@drawable/cate_question"
            app:layout_constraintBottom_toTopOf="@+id/guideline27"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="@+id/guideline23"
            app:layout_constraintTop_toTopOf="@+id/guideline28" />

        <androidx.constraintlayout.widget.Guideline
            android:id="@+id/guideline18"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            app:layout_constraintGuide_percent="0.25" />

        <androidx.constraintlayout.widget.Guideline
            android:id="@+id/guideline24"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            app:layout_constraintGuide_percent="0.25" />

        <androidx.constraintlayout.widget.Guideline
            android:id="@+id/guideline26"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            app:layout_constraintGuide_percent="0.425" />

        <androidx.constraintlayout.widget.Guideline
            android:id="@+id/guideline27"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            app:layout_constraintGuide_percent="0.85" />

        <androidx.constraintlayout.widget.Guideline
            android:id="@+id/guideline19"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            app:layout_constraintGuide_percent="0.5" />

        <androidx.constraintlayout.widget.Guideline
            android:id="@+id/guideline23"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            app:layout_constraintGuide_percent="0.75" />

        <androidx.constraintlayout.widget.Guideline
            android:id="@+id/guideline25"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            app:layout_constraintGuide_percent="0.575" />

        <androidx.constraintlayout.widget.Guideline
            android:id="@+id/guideline28"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            app:layout_constraintGuide_percent="0.675" />
    </androidx.constraintlayout.widget.ConstraintLayout>

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline29"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.55" />

</androidx.constraintlayout.widget.ConstraintLayout>

五、项目源码 

👇👇👇👇👇快捷方式👇👇👇👇👇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

编程乐学

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

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

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

打赏作者

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

抵扣说明:

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

余额充值