基于Android Studio开发的笔记APP

Theevilspirit

发布日期: 2019-02-17 16:48:35 浏览量: 1154
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

1 程序的运行环境、安装步骤

  • 运行环境

    • JDK 1.8
    • compileSdkVersion 27
  • 程序的组成部份

    • Xml布局文件
    • Java程序文件


  • 安装步骤
    • 在一台华为手机上安装软件
    • 下载apk,可以传到邮箱中然后下载,按照提示允许安装即可

2 程序开发平台

  • 开发环境:Android Studio 3.1.0

  • 代码行数:1277

3 程序功能说明

提醒用户给予权限

基本的保存、删除、重命名功能

还可以将笔记截为长图分享到朋友圈、好友、微博等;编辑框里面的文字内容更换了叹墨咏黑第三方字体库。

支持图文混排功能,可以从图库选择,也可以拍照获取

亲切的笔记查询功能

4 程序算法说明及面向对象实现技术方案

本程序中定义了

  • NoteInfo类实现了Serializable接口(可以放进Bundle数据包):为笔记列了id、name、type、content、time成员

  • DBSchema类定义了数据库的基本名字、表名和各列的名

  • MyDBhelper类是继承了SQLiteOpenHelper的子类

  • DBdataSource类封装了各种对数据库的操作

  • DataAdapter类是继承了BaseAdapter的子类,利用了ViewHolder设计模式,性能更加提升

  • MyDate类可以获取时间,返回以下格式的时间返回以下格式的时间2018年1月22日 16:36:55

  • NoteWrapper类封装了编辑笔记时的所有操作:保存、重命名、删除、截长图和各种对Bitmap的操作(获取比例、优化图片质量等等)

  • SearchNoteAsyncTask类是继承了AsyncTask<Void ,Void,Void >的子类,负责调用Myrepository类里面的getNoteInfo()方法获取笔记信息,并通过接口返回给数据适配器

  • StringFunction类封装了一些对字符串检错的方法

  • Myrepository类负责从数据库调取所有笔记的信息

  • MessageBox类封装了对话框负责和用户交互

  • UiHelper类封装了提示信息的方法

  • edit_activity类是编辑编辑的界面包括保存删除重命名分享的菜单栏、拍照按钮、图库按钮、EditText图文混排编辑框

  • MainActivity类是第一个展示给用户的界面,包括查询笔记的编辑框、ListView列表、添加笔记按钮和长按批量删除

5 技术亮点、关键点及其解决方案

5.1 本程序的亮点

  • 更换了字体叹墨咏黑

  • 这个记事本程序支持图文混排

  • 可以从相机、图库调取图片

  • 可以将笔记分享为长图

  • 长按ListView多选删除

  • 必要的提醒:例如按两次退出程序

5.2 本程序的技术关键点

  • 采用了多线程技术以提升程序的性能:主要在MainActivity中的onResume()方法 中进行异步访问数据库来获取列表的信息,这里主要用了AsyncTask这个轻量级异步任务类

  • 使用Sqlite来保存数据:表列项有时间(Text)、内容(Text)、类型(Text)、名字(Text)、ID号(Integer)。使用了SQLiteOpenHelper类

  • 应用了MVC模式来设计整个程序的架构

  • 使用了各种Bitmap类操作方法压缩、解析、优化、获取图片

  • ListView长按实现Actionbar多选删除

  • 在编辑框贴上图片时将图片自动生成一个文件名存在/sdcard/myImage/文件夹

  • 利用SpannableString、ImageSpan和editable三个类加上对光标的操作实现在EditText的插入图片

  • 取EditText的内容时,图片会以路径的形式显示在String类型里,这时利用正则表达式从EditText中的内容解析出来图片路径,实现在正常的位置显示图片

  • 程序中大量使用了回调:例如异步访问数据库后将数据返回给适配器、保存新的笔记后将一个新NoteInfo类返回给edit_activity的noteInfo字段等等例子

  • 调用系统的相机、图库、获取用户权限和分享时启动相应的activity

  • 程序中大量使用了File文件操作:在EidtText插入图片时、获取屏幕截图时都存储、获取了文件

  • 在ListView的数据适配器中采用了ViewHolder设计模式

  • 退出程序时需要两次按回退建才能退出;没保存笔记时会提醒是否返回上一个界面,这些都复写了onkey()方法

5.3 遇到的技术难点及对应的解决方案

  • 在EditText中插入图片时 由于有删除、新增时出现一下子两张的情况

    解决:在插入图片时,由于是插入图片的路径然后再解析图片路径获取图片,所有我们再路径最前面和最后面添加一个光标的换行,然后设置光标在最后位置

  • 之前从相机调取图片时速度很慢

    解决:原来是多加了一些Bitmap的操作,进行了优化后速度很快

  • 截长图时的背景问题,由于Canvas类是根据Bitmap绘制背景,可是一张空的Bitmap背景是黑色的,导致截图后背景位黑色

    解决:在Canvas绘制背景前将Bitmap用Scrollview的背景(在drawable文件夹下的一张图片)填充,然后利用Bitmap的拉伸图片的方法将Bitmap根据Scrollview的实际高度拉伸,这样背景就有了

  • 截图问题

    解决:将EditView放在ScrollView里,对ScrollView截长图

  • 解析EditText中的图片

    解决:利用正则表达式解析内容中的图片路径,然后内容和路径填充一个SpannableString类的对象,将该对象返回给EditText

  • UI交互问题:例如弹出对话框要求用户保存、提醒用户未保存等等

    解决:封装了一个单独的对话框类,利用实现接口来写不同的操作

  • 防止解析图片时出现OOM

    解决:取系统中图片是必压缩一下

6 简要开发过程

  • 查找资料确定要使用的算法与数据结构

  • 完成大体系统UI设计

  • 进行数据库功能开发

  • 数据库功能开发完成,并进行测试

  • 进行EditView的图片与文字混排功能开发

  • EditView的图片与文字混排功能开发,并进行测试

  • 进行消息提示UI开发

  • 消息提示UI开发完成,并进行测试

  • 增加删除、重命名、保存、分享、批量删除的功能添加,并新增菜单栏

  • 删除、重命名、保存、分享、批量删除的功能完成,并进行测试

  • 对程序进行集成测试

  • 程序开发工作完毕,编写及整理文档

上传的附件 cloud_download 基于Android Studio开发的笔记APP.7z ( 2.63mb, 39次下载 )
error_outline 下载需要8点积分

发送私信

不要靠提高嗓门获取自己的存在感,那样只是虚张声势

15
文章数
17
评论数
最近文章
eject