# NotePad **Repository Path**: zzzzhs333/NotePad ## Basic Information - **Project Name**: NotePad - **Description**: Android NotePad - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: and - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-01 - **Last Updated**: 2025-12-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # NotePad — Android 便签应用 简短描述:一个轻量、无网络依赖的 Android 便签应用,支持搜索、颜色主题、桌面便签与分享导出。 ## 功能特性(之后的功能仍存在为截图介绍的功能,太过详细琐碎) 基本功能实现、额外功能:1、记事本的偏好设置功能、2、UI设计(主题设定、颜色卡选项、背景颜色盘设定、优化编辑器) 3、导出笔记(文本导出) 4、笔记便签 5、添加代办 6、性能优化(动画加载缓存、淡入动画、ActivityForResult 机制实时刷新、即时视觉反馈) ### 核心功能 - **时间戳**:与数据库内容匹配,内容修改时自动更新时间戳 - **笔记管理**:新建/编辑/删除 Note(自动保存、修改时间戳) - **搜索功能**:支持标题/内容模糊搜索,实时过滤 ### 待办事项 - 一键将笔记转换为待办事项 - 复选框快速标记完成状态 - 已完成项自动显示删除线和半透明效果 - 支持过滤显示/隐藏已完成待办 - 待办与笔记无缝切换 - **背景颜色** ### 偏好设置功能 - 主题:Light/Dark/Eye/Custom(自定义颜色) - 时间戳显示:仅创建时间/创建+修改时间 - 排序:按创建时间/修改时间(开启为时间排序,关闭为标题字母a-z排序) - 彩色卡片:开启/关闭(默认开启) - 背景纹理:网格/横线/无(默认无) - 角落装饰:开启/关闭(默认关闭) - **编辑器设置** - 字体家族:Sans/Serif/Mono - 字体大小:16-28sp - 行间距:0-8dp - **组织与过滤** - 排序方式:按修改时间/按标题字母(A→Z) - 显示已完成待办:开启/关闭 ### UI 设计 - **Material Design 风格** - 从 Holo 主题升级到 Material Design - 卡片式列表设计(16dp 圆角 + 阴影) - 流畅的瀑布流加载动画 - 现代化的配色方案(莫兰迪色系) - **视觉优化** - 输入框聚焦提示强化(绿色高亮) - 颜色主题与护眼模式(Light/Dark/Eye) - 便签列表彩色卡片(圆角卡片、左侧装饰条) - 背景纹理层(网格/横线,可选角落装饰) - 设置页:主题、时间戳显示、排序、彩色卡片、背景纹理与装饰 - 菜单/弹窗视觉统一(深色对比度、白色图标/文本) - 字体/行距:可自定义(默认系统字体) ### 便签功能 - 便签背景颜色选择与Note背景颜色和对应NoteList栏颜色(4×4 亮色盘,支持随机默认色) - 桌面便签(App Widget):显示选定便签、点击进入编辑,颜色与便签同步 ### 导出功能 - 分享导出(`text/plain`)(纯文本形式) - 性能优化(纹理位图缓存、淡入动画) ### setting选项 - 主题:Light/Dark/Eye/Custom(自定义颜色) - 时间戳显示:仅创建时间/创建+修改时间 - 排序:按创建时间/修改时间(开启为时间排序,关闭为标题字母a-z排序) - 彩色卡片:开启/关闭(默认开启) - 背景纹理:网格/横线/无(默认无) - 角落装饰:开启/关闭(默认关闭) - **编辑器设置** - 字体家族:Sans/Serif/Mono - 字体大小:16-28sp - 行间距:0-8dp - **组织与过滤** - 排序方式:按修改时间/按标题字母(A→Z) - 显示已完成待办:开启/关闭 ### 性能优化 - 纹理位图缓存 - 列表背景淡入动画 - ActivityForResult 机制确保实时刷新 - 即时视觉反馈(无需等待数据库回调) --- ## 实现细节(重点) ### 技术架构 - 类型:原生 Android 应用(无需网络) - 分层:UI(Activity/Layout/Drawable)+ 数据(ContentProvider/SQLite)+ 系统集成(AppWidget/Intent) ### 编程语言与版本 - 语言:Java(Android) - 编译:Gradle(AGP 8.x,示例项目 `compileSdkVersion 23`) ### 主要依赖/框架 - 原生 Android SDK(`ContentProvider`、`AppWidget`、`ListActivity`、`Intent` 等) - 无第三方库依赖(示例项目) ### 项目结构说明 ``` app/ src/main/ java/com/example/android/notepad/ NotePad.java # 常量与列名定义(新增 is_todo, is_completed) NotePadProvider.java # SQLite + ContentProvider(数据库版本 5) NotesList.java # 列表页(搜索、排序、彩色卡片、待办过滤) NoteEditor.java # 编辑页(自动保存、颜色盘、待办切换) SettingsActivity.java # 设置页(分类优化、新增待办设置) ThemeManager.java # 主题与字体/行距应用 GridDrawable.java # 网格/横线纹理位图缓存 CornerDecorDrawable.java # 角落装饰绘制器 NoteWidgetProvider.java # 桌面便签 Provider NoteWidgetConfigure.java # 桌面便签配置页 res/ layout/ activity_notes_list.xml # 列表页布局(添加布局动画) noteslist_item.xml # 普通笔记列表项(卡片式设计) todo_item.xml # 待办事项列表项(含复选框) note_editor.xml # 编辑页布局(优化行间距和内边距) note_widget.xml # 桌面便签布局 title_editor.xml # 标题编辑对话框 menu/ list_options_menu.xml # 列表页菜单 editor_options_menu.xml # 编辑页菜单(新增待办切换项) values/ styles.xml # Material Design 主题样式 colors.xml # 莫兰迪配色方案 strings.xml # 字符串资源(新增待办相关文字) arrays.xml # 数组资源(主题、字体等选项) xml/ note_widget_info.xml # 桌面便签配置 preferences.xml # 偏好设置(分类优化) drawable/ bg_card.xml # 卡片背景(圆角矩形) 自定义背景/选择器/图标 anim/ item_animation_fall_down.xml # 列表项入场动画 layout_animation_fall_down.xml # 布局动画控制器 ``` ### 核心模块实现 #### 文件操作模块(数据库存储) - **存储方式**:SQLite 表 `notes`(通过 `NotePadProvider` 暴露为 `ContentProvider`) - **数据库版本**:5(新增待办功能字段) - **表结构**: ```sql CREATE TABLE notes ( _id INTEGER PRIMARY KEY, title TEXT, note TEXT, created INTEGER, modified INTEGER, color INTEGER, is_todo INTEGER DEFAULT 0, -- 0=笔记, 1=待办 is_completed INTEGER DEFAULT 0 -- 0=未完成, 1=已完成 ); ``` - **数据升级**:使用 `ALTER TABLE` 保留用户数据,无需删除重建 - **编码与异常**:使用 `ContentResolver` 与 `Cursor`,异常通过日志与容错处理 - **支持格式**:文本(`text/plain` 分享),无二进制附件支持 - **状态管理**:修改时间戳 `modified` 只在内容实际变化时更新(编辑页 `onPause()` 比较后写入) ### 文本编辑模块 - 文本缓冲区:`EditText` + `TextView` 状态保持(`setTextKeepState`) - 自动保存:编辑页 `onPause()` 比较内容变化,变化则调用 `updateNote()` 持久化 - 撤销/重做:计划中(当前依赖系统输入法撤销) - 渲染优化:编辑页背景随便签颜色变化;LinedEditText 绘制行线(可扩展为随颜色动态加深) #### 用户界面模块 - UI 框架:原生 Activity + Layout XML - 菜单栏/工具栏:ActionBar 菜单(新增 Color/Share),统一白色图标与标题文本 - 对话框与状态栏:颜色盘使用 `AlertDialog + GridView`;状态栏在 Android 5.0+ 设置为绿色以统一视觉 - 桌面便签:`AppWidgetProvider` + `RemoteViews`,支持点击进入编辑、颜色同步 #### 数据处理 - 编码策略:纯文本,UTF-8(系统默认) - 大数据优化:列表背景纹理使用位图缓存(`GridDrawable`),避免滚动耗时绘制;列表背景淡入动画减少卡顿感知 - 内存管理:按需生成位图、弱引用生命周期,避免泄漏;组件快速返回与轻量布局 #### 性能优化 - 响应速度:背景位图缓存、轻量布局、减少运行时计算 - 内存使用:避免大图常驻、按需渲染;简化 Adapter 绑定逻辑 - 启动时间:按需初始化(设置/搜索在首次使用时挂载) --- ## 安装与使用指南 ### 系统要求 - 操作系统:Android 4.0+(主体功能);状态栏颜色统一在 Android 5.0+ 生效 - 硬件:常规入门设备即可运行 ### 安装步骤 ```bash # 环境准备(Windows/Mac/Linux 均可) # 安装 Android Studio / JDK / SDK 平台(API 23 作为示例) # 构建(Windows 示例) ./gradlew.bat assembleDebug -x test # 生成 APK 位于:app/build/outputs/apk/ ``` ### 运行方法 - Android Studio 直接运行,或安装 `app-debug.apk` 到设备 - 首次进入:编辑页、列表页、设置页均可导航 ### 基本使用 #### 笔记管理 - **新建笔记**:点击右上角 "+" 按钮或菜单中的 "New note" - **编辑笔记**:点击列表中的笔记项 - **删除笔记**:长按列表项 → 选择删除,或在编辑页菜单中选择 Delete - **自动保存**:编辑后离开页面自动保存,无需手动操作 #### 待办功能 - **创建待办**: 1. 新建或打开一个笔记 2. 点击菜单中的 "Mark as Todo" 3. 笔记自动转换为待办事项,列表中显示复选框 - **完成待办**: - 在列表页直接点击复选框 - 已完成项自动显示删除线和半透明效果 - **取消待办**: 1. 打开待办事项 2. 点击菜单中的 "Unmark Todo" 3. 待办转回普通笔记,复选框消失 - **过滤已完成待办**: - 设置 → Organization → 取消勾选 "Show completed todos" - 列表中隐藏已完成的待办事项 #### 搜索与排序 - **搜索**:顶部搜索框输入关键词即可过滤(支持标题和内容) - **排序**:设置 → Organization → "Sort by title" 开启/关闭 - 关闭:按修改时间排序(最新在前) - 开启:按标题字母排序(A→Z) #### 颜色与主题 - **便签颜色**:编辑页菜单 → Color → 选择颜色 - 列表卡片、编辑页背景、桌面便签同步更新 - **主题切换**:设置 → Display Settings → Theme preset - Light(浅色)/ Dark(深色)/ Eye Protection(护眼) #### 分享导出 - 编辑页菜单 → Export/Share → 选择目标应用 - 以纯文本格式(`text/plain`)分享笔记内容 ### 快捷键(设备依赖,示例) - `Menu` 键:打开当前页面菜单 - 长按列表项:弹出上下文菜单(复制/删除等) --- ## 效果图展示与功能演示 ### 主界面与待办功能 [主界面]![主界面截图](/screenshoots/image-2.png) - Material Design 卡片式设计 - 待办事项显示复选框 - 已完成项显示删除线 - 流畅的列表动画 ### 待办功能演示 [待办功能] - 取消代办按钮 ![img.png](screenshoots/img.png) - 取消后效果,图中也有代办事项 ![img_1.png](screenshoots/img_1.png) - **创建待办**:一键将笔记转换为待办 - **完成标记**:点击复选框立即显示删除线 ![img_2.png](screenshoots/img_2.png) - **过滤显示**:可隐藏已完成的待办 - setting页面的最后一栏为对应的是否显示完成代办 ![img_3.png](screenshoots/img_3.png) - 取消显示完成代办(隐藏完成代办)效果图 ![img_4.png](screenshoots/img_4.png) - **无缝切换**:待办与笔记随时互转 ### 搜索功能 [搜索功能]![搜索截图](/screenshoots/image-2.png) - 支持模糊搜索(标题和内容) - 标题搜索 ![img_5.png](screenshoots/img_5.png) - 内容搜索 ![img_6.png](screenshoots/img_6.png) - 实时过滤结果 - 兼容待办过滤设置(当隐藏完成代办时,无法搜索完成代办) ### 时间戳与自动保存 [时间戳与自动保存]![alt text](/screenshoots/image-2.png) *进入不改动不更新;修改后在保存/离开时更新* ### 新建 / 编辑 / 删除 Note [新建/编辑/删除]![alt text](/screenshoots/image-2.png) *含长按上下文菜单与顶部菜单操作* ### UI 美化 - 图标设定 [图标设定]![alt text](/screenshoots/image-11.png) - 输入框聚焦提示(绿色高亮) [输入框聚焦]![img_7.png](screenshoots/img_7.png) - 绿色线条聚焦提醒(已实现) - 主题模式(Light / Dark / Eye / Custom) [主题模式]![alt text](/screenshoots/image-1.png) - 列表彩色卡片(圆角、左侧装饰条) [彩色卡片]![img_8.png](screenshoots/img_8.png) - 背景纹理层(网格 / 横线)与角落装饰 (与新UI效果一致,网格和横线没变)(图片仍然为旧UI) [背景纹理与装饰]![alt text](/screenshoots/image-4.png)![alt text](/screenshoots/image-5.png) - 菜单/弹窗视觉统一(深绿背景、白色图标/文本) [菜单与弹窗]![img_9.png](screenshoots/img_9.png) ### 便签功能(颜色与桌面便签) - 4×4 亮色盘选择便签背景色(支持随机默认色) [颜色盘]![alt text](/screenshoots/image-7.png) - 桌面便签(App Widget):与便签颜色同步、点击进入编辑 [桌面便签]![alt text](/screenshoots/image-8.png) ### 导出功能 [分享导出]![alt text](/screenshoots/image-9.png) *纯文本分享(`text/plain`)* ### 性能优化 [性能优化](无法展示效果,实际运行可见) *纹理位图缓存与淡入动画对比* ### 设置界面(Settings) [设置界面]![img_10.png](screenshoots/img_10.png) #### 显示设置(Display Settings) - **主题选择**:Light / Dark / Eye Protection - **时间戳显示**:开启/关闭修改时间显示 - **彩色卡片**:开启/关闭列表卡片背景色 - **背景纹理**:网格 / 横线 / 无 - **角落装饰**:开启/关闭列表角落装饰图案 #### 编辑器设置(Editor Settings) - **字体家族**:Sans-serif / Serif / Monospace ![img_11.png](screenshoots/img_11.png) - **字体大小**:16sp - 28sp 可调 ![img_12.png](screenshoots/img_12.png) - **行间距**:0dp - 8dp 可调 ![img_13.png](screenshoots/img_13.png) #### 组织与过滤(Organization) - **排序方式**: - 按修改时间排序(默认,最新在前) - 按标题字母排序(A→Z) ![img_14.png](screenshoots/img_14.png) - **显示已完成待办**: - 开启:显示所有待办事项 - 关闭:隐藏已完成的待办 **特点**: - 分类清晰,易于查找 - 每个选项都有说明文字 - 设置改变立即生效(无需重启应用) --- ## 配置说明 - 配置文件位置:`res/xml/preferences.xml` - 可自定义设置:主题(preset)、字体家族/字号/行距、时间戳显示、排序、彩色卡片、背景纹理(grid/lined)、角落装饰等 - 主题与外观:`res/values/styles.xml` 与 `ThemeManager.java`(读取偏好并应用) --- ## 开发相关 - 构建方法:Gradle;`./gradlew assembleDebug` - 代码结构:见“项目结构说明”;核心逻辑在 `NotesList.java`、`NoteEditor.java`、`NotePadProvider.java` - 贡献指南:Fork → 分支开发 → 提交 PR;建议附带截图与说明 --- ## 更新日志 ### Version 2.0 ✨ *最新版本* #### 新增功能 - **待办事项系统** - 一键将笔记转换为待办事项 - 复选框快速标记完成状态 - 已完成项自动显示删除线和半透明效果 - 支持过滤显示/隐藏已完成待办 - 待办与笔记无缝切换 #### UI 全面升级 - **Material Design 风格** - 从 Holo 主题升级到 Material Design - 卡片式列表设计(16dp 圆角 + 阴影) - 流畅的瀑布流加载动画 - **视觉优化** - 现代化配色方案(莫兰迪色系) - 编辑器优化(1.5 倍行间距、极淡行线) - 菜单图标和文字颜色适配浅色主题 - **交互体验** - 列表项入场动画 - 即时视觉反馈 - 动态菜单文字 #### 功能改进 - **偏好设置完善** - 添加分类(显示设置/编辑器设置/组织与过滤) - 每个选项添加说明文字 - 新增"显示已完成待办"设置 - **刷新机制优化** - 使用 ActivityForResult 确保实时刷新 - 从编辑页返回时列表立即更新 - 设置改变时立即生效 #### 数据库升级 - 版本从 4 升级到 5 - 新增 `is_todo` 和 `is_completed` 字段 - 使用 ALTER TABLE 保留用户数据 #### 技术优化 - 自定义 CursorAdapter 支持动态布局 - SharedPreferences 监听器实现实时过滤 - 优化查询逻辑支持待办过滤 --- ## 常见问题 - 编辑页打开即更新时间戳?已修复:仅在内容变化时更新(`onPause()` 比较) - 状态栏黑块:为系统状态栏;Android 5.0+ 已统一颜色为绿色,旧系统保持默认 - 桌面便签不刷新?确保编辑页保存成功;已实现编辑后触发 `NoteWidgetProvider.updateAll()` ## 许可证信息 - 协议:Apache License 2.0(示例项目基础遵循 Android 开源示例许可) - 版权:{版权声明} ---