# 基于Java设计的简单便签app
# 一、实验题目
## 1.1 项目简介
期末项目我们组做的主要是,实现一个简单的便签软件主界面实现双视图预览——单列显示、瀑布流显示主界面可以对文本进行批量删除、加锁、按文本内容搜索等功能主界面可以将本地数据库同步到云端服务器的数据库上,也可以拉取云端服务器的数据库文本内容而富文本编辑界面,可以编写文本,并实现加粗、斜体等功能,也可以插入图片,记录当前修改时间,并保存到本地数据库;实现转发、删除、加锁;筛选界面可以根据写作日期,展示一年内几个月写了多少篇文章,并通过勾选筛选出相应的文本在主界面显示
### 1.1.1 本人担任的部分
我主要实现富文本界面的编写工作
# 二、实现内容
- 富文本界面的编辑文本功能,并记录当前修改时间
- 转发功能
- 加锁功能
- 删除文本
# 三、课堂实验结果 A. 实验截图
![](https://www.writebug.com/myres/static/uploads/2022/5/29/77cd3479af6c48a874919b60cf987e67.writebug)
![](https://www.writebug.com/myres/static/uploads/2022/5/29/9926d977999c41b22b97e0309c7cb283.writebug)
![](https://www.writebug.com/myres/static/uploads/2022/5/29/68687093f1861cdc5a6edd8ae18670fb.writebug)
## 3.1 实验步骤以及关键代码
### 3.1.1 RichEditor 的实现
![](https://www.writebug.com/myres/static/uploads/2022/5/29/6c422d0473b21a448af700d9ee0212f9.writebug)
![](https://www.writebug.com/myres/static/uploads/2022/5/29/f3e28cc05539c46286196e437d23c871.writebug)
![](https://www.writebug.com/myres/static/uploads/2022/5/29/55a197cfc1ce44d85ce53ba61ce80908.writebug)
其中 exec 用于执行 js 代码
总之,编辑器的核心功能由 js 实现,RichEditor 封装了 js 的功能,为上层提供了 Java 接口。
### 3.1.2 RichEditor 相应功能的实现
居中、加粗、斜体、中划线、撤销操作的实现
![](https://www.writebug.com/myres/static/uploads/2022/5/29/8e0b31c2112faffd9dee4259c0fd7b1c.writebug)
居中功能需要判断是否点击多次,点击一次居中,点击两次则为正常文档流——居左而加粗、中划线、斜体在执行 js 代码时会实现偶次数执行代码取消相应的效果
插入图片功能的实现插入图片是实现富文本编辑功能的难点基本思路是:从相册或者照相获取图片——裁剪图片——保存图片到本地(使用保存时间作为文件名)——使用本地链接显示到富文本编辑器上 从相册或照相获取图片
相册 Intent
```jAVA
Intent intent = new Intent() ;
intent.setType("image/*") ;
// 调用系统相册
intent.setAction(Intent.ACTION_GET_CONTENT) ;
startActivityForResult(intent,1);
// 打开相册的回调函数
if ( requestCode==1 ){
if ( data!=null ){
Uri uri = data.getData(); // 获取返回的uri
cutImg(uri); // 调用剪切函数
}
}
```
照相 Intent
```java
Intent intent = new Intent();
// 调用系统的照相机
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
imageUri = Uri.parse("file://" + "/" +
Environment.getExternalStorageDirectory().getPath()
+ "/" + "tmp.jpg");
// 将返回的数据直接保存到tmp.jpg,并将其uri保存为imageUri
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, 3);
// 打开相机的回调函数
if ( requestCode == 3 ){
cutImg(imageUri); // 将保存的tmp.jpg转化的Uri传给剪切函数
}
```
剪切图片
通过调用系统剪切 Intent 进行剪切动作
```java
// 裁剪图片
void cutImg(Uri uri) {
if (uri != null) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, "image/*");
//true:出现裁剪的框
intent.putExtra("crop", "true");
//裁剪宽高时的比例
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
//裁剪后的图片的大小
intent.putExtra("outputX", 150);
intent.putExtra("outputY", 150);
/**
* 此方法返回的图片只能是小图片(sumsang测试为高宽160px的图片)
* 故将图片保存在Uri中,调用时将Uri转换为Bitmap
* 此方法还可解决miui系统不能return data的问题
*/
//uritempFile为Uri类变量,实例化uritempFile
uriTempFile = Uri.parse("file://" + "/" +
Environment.getExternalStorageDirectory().getPath()
+ "/" + "small.jpg");
intent.putExtra(MediaStore.EXTRA_OUTPUT, uriTempFile);
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
startActivityForResult(intent, 2);
}
else { return; }
}
```
```java
// 打开系统裁剪界面的回调函数
if (requestCode == 2) {
if (data != null) {
//将Uri图片转换为Bitmap
Bitmap bitmap = null;
try {
bitmap = BitmapFactory.decodeStream(getContentResolver()
.openInputStream(uriTempFile));
} catch (FileNotFoundException e) { e.printStackTrace(); }
//保存到图片到本地
saveImg(bitmap);
} else { return; }
}
```
保存图片
```java
// 保存图片
void saveImg(Bitmap bitmap) {
try {
// 创建文件夹路径
File destDir = new File(fileBasePath);
if (!destDir.exists()) { // 如果不存在该文件夹,则创建该文件夹
destDir.mkdirs();
}
// 创建图片文件,路径为上文的文件夹子目录,将此时系统时间作为图片文件名
File f = new File(fileBasePath + System.currentTimeMillis()+ ".png");
f.createNewFile();
//输出流
FileOutputStream out = new FileOutputStream(f);
/** mBitmap.compress 压缩图片
* Bitmap.CompressFormat.PNG 图片的格式
* 100 图片的质量(0‐100)
* out 文件输出流
*/
bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
out.flush();
out.close();
// 将该图片插入富文本编辑器中
richEditor.insertImage(filePath,"png");
} catch (IOException e) { e.printStackTrace(); }
}
```
使用 Dialog 实现一个从底部向上弹出的菜单栏,用于选择图片来源,相册或者相机
```java
// 选择相册或相机的dialog
void setPictureMenuDialog(){
pictureMenu = new Dialog(this,R.style.bottom_dialog) ;
//填充对话框的布局
final LinearLayout linearLayout =
(LinearLayout) LayoutInflater.from(this)
.inflate(R.layout.layout_picture_menu, null);
//将布局设置给Dialog
pictureMenu.setContentView(linearLayout);
//按键初始化
cameraBtn = (Button) linearLayout.findViewById(R.id.cameraBtn);
albumBtn = (Button) linearLayout.findViewById(R.id.albumBtn);
//获取当前Activity所在的窗体
Window dialogWindow = pictureMenu.getWindow();
//设置Dialog从窗体底部弹出
dialogWindow.setGravity(Gravity.BOTTOM);
// 设置Dialog动画
dialogWindow.setWindowAnimations(R.style.dialog_style);
//获得窗体的属性
WindowManager.LayoutParams lp = dialogWindow.getAttributes();
// 窗体距离底部的距离
lp.y = 150+20; // 150为虚拟机虚拟键盘的高度
// 窗体的高度、宽度和透明度
lp.width = getResources().getDisplayMetrics().widthPixels‐50; // 宽度
linearLayout.measure(0, 0);
lp.height = linearLayout.getMeasuredHeight(); // 获取layout的高度
lp.alpha = 9f; // 设置窗体的透明度
// 将属性设置给窗体
dialogWindow.setAttributes(lp);
// 点击外界面时撤除Diglog
pictureMenu.setCanceledOnTouchOutside(true);
// 显示Diglog
pictureMenu.show();
// 按键响应
PictureMenuRespond() ;
}
```
保存html代码到本地数据库,读取html代码到富文本编辑器
```java
// 获得编辑器的html代码
richEditor.getHtml();
// 读取html代码到编辑器中
richEditor.setHtml(htmlCode);
```
- 保存 HTML 代码到本地数据库,读取 HTML 代码到富文本编辑器
- 实现监听软键盘弹出收起——弹出时显示编辑器工具(撤销、插图等),收起时显示便签工具(转发、加锁等)并取消编辑器焦点
- 实现监听类:根据根视
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
资源包含文件:设计报告word+用户说明文档+项目源码 实现一个简单的便签软件主界面实现双视图预览——单列显示、瀑布流显示主界面可以对文本进行批量删除、加锁、按文本内容搜索等功能主界面可以将本地数据库同步到云端服务器的数据库上,也可以拉取云端服务器的数据库文本内容而富文本编辑界面,可以编写文本,并实现加粗、斜体等功能,也可以插入图片,记录当前修改时间,并保存到本地数据库;实现转发、删除、加锁;筛选界面可以根据写作日期,展示一年内几个月写了多少篇文章,并通过勾选筛选出相应的文本在主界面显示。 详细介绍参考:https://blog.csdn.net/newlw/article/details/125053809
资源推荐
资源详情
资源评论
收起资源包目录
基于Java实现的简单便签app设计.zip (108个子文件)
gradlew.bat 2KB
设计报告.docx 334KB
.gitignore 118B
build.gradle 2KB
build.gradle 736B
settings.gradle 15B
gradlew 5KB
mysql-connector-java-5.1.39-bin.jar 967KB
gradle-wrapper.jar 52KB
MainActivity.java 39KB
NoteActivity.java 20KB
SelectActivity.java 15KB
DBActivity.java 5KB
DB_Helper.java 5KB
Total_text.java 4KB
SoftKeyBoardListener.java 3KB
CommonAdapter.java 2KB
MyViewHolder.java 1KB
MD5Utils.java 908B
Article.java 888B
StausBarColor.java 860B
ExampleInstrumentedTest.java 764B
MyDB.java 582B
ExampleUnitTest.java 408B
bg.jpg 425KB
item_bg2.jpg 24KB
item_bg1.jpg 21KB
LICENSE 1KB
README.md 12KB
用户说明文档.pdf 963KB
开发文档.pdf 795KB
item_bg2_bottom.png 47KB
item_bg2_top.png 36KB
ic_launcher_round.png 14KB
ic_launcher.png 10KB
ic_launcher_round.png 10KB
bianqian.png 8KB
ic_launcher.png 8KB
search1.png 7KB
ic_launcher_round.png 6KB
gongge.png 5KB
ic_launcher.png 5KB
jiantou2.png 4KB
ic_launcher_round.png 2KB
jiantou1.png 2KB
ic_launcher.png 2KB
back_to_top.png 2KB
liebiao.png 2KB
yumao1.png 1KB
alarm.png 1KB
lock.png 1KB
lock_main.png 1KB
delete.png 1KB
add.png 1KB
bigger.png 888B
bigger1.png 807B
bold.png 722B
picture.png 557B
back.png 502B
center.png 477B
skin.png 439B
italic.png 430B
jiantou2.png 368B
share.png 360B
jiantou1.png 350B
back.png 295B
undo.png 293B
del.png 289B
more.png 156B
proguard-rules.pro 928B
gradle.properties 730B
gradle-wrapper.properties 230B
select_item.xml 20KB
activity_main.xml 9KB
activity_note.xml 7KB
list_recycler.xml 4KB
gongge_recycler.xml 3KB
select_layout.xml 3KB
misc.xml 2KB
popupview.xml 2KB
AndroidManifest.xml 1KB
settingpopup.xml 1KB
layout_dialog.xml 1KB
layout_picture_menu.xml 1KB
styles.xml 974B
colors.xml 929B
compiler.xml 686B
Project_Default.xml 672B
gradle.xml 626B
runConfigurations.xml 564B
circle.xml 434B
waiting.xml 413B
modules.xml 367B
popupwindow.xml 360B
buttonstyle.xml 283B
searchbox.xml 252B
silverbackground.xml 237B
profiles_settings.xml 235B
in.xml 229B
out.xml 228B
共 108 条
- 1
- 2
资源评论
- 三丼夀2022-11-28总算找到了自己想要的资源,对自己的启发很大,感谢分享~
shejizuopin
- 粉丝: 1w+
- 资源: 1300
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C# winform -类火车头采集器、采集工具、任务新建和编辑、网址采集、 标签编辑、数据采集、数据发布、发布配置的修改,编辑和测试、发布模块的修改和
- 全国铁路线路数据.rar
- Vue开源项目Pure Admin二次开发:实现前后端柱状图
- 2000-2023年全国各市CPI数据集.xlsx
- 2000-2023年全国+各省通货膨胀率数据集.xlsx
- 纯电动汽车电池系统HIL测试库
- Java+JSP+Mysql实现Web学生图书管理系统源码+数据库
- 基于SSM框架的农业信息管理系统的实现
- 自己毕业论文配套代码,B站有讲解 和运行效果
- Java+JSP+Mysql实现Web学生图书管理系统源码
- 可靠有效springboot使用netty搭建TCP服务器
- Firefox-latest.exe
- Modbus测试与仿真.rar
- PCIE参考时钟架构详解:同源与非同源的区别
- Java+JSP+Mysql实现Web学生图书管理系统
- 新年海报,讲稿,文案封面
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功