android新手 ppt展示 画板 AsyncTask异步(room数据库 快速本地查询) 数据保存及动态更新
最近做了一款软件,功能不大, 展示ppt和画图, 但是融合了很多知识 ,还包含一些逻辑, 成功运行, 很适合新手, 但说到底小项目包含不了android整套知识, 所以还需要大家自己去慢慢扩展…
欢迎大家下载源码奥,支持就是动力.
1.功能介绍
- 展示ppt (pptx不支持),
- 画板,
- Room数据库操作(包含livedata数据更新框架),
- recycleview, 本地文件快速查询(自行更改搜索条件)
- viewmodel 保存数据…
(release文件中是打包好的apk, 下载就可以安装. 我遇到安装问题是: 在微信上下载之后就不知道下载到哪了, 需要大家在手机的文件管理里面直接搜索 apk.1 最后的 .1 是在微信下载之后微信自动给添加的, 搜索到这个之后重命名将 .1 去掉就可以在手机的应用–> 安装包里看到了)
2.详细介绍
2.1配置:
1.导入jar包 在libs文件里
2.清单文件需要配置存储权限 (只是配置权限, java代码里弹出dialog提醒用户是否允许存储权限)
3.build.gradle(app) 导入包
4.不经常使用的build.gradle中添加maven
***!!! 5. 这点很重要: 在gradle.properties中添加如图代码
- 可能我还漏了那点, 如果运行报错, 请仔细对比清单文件 和 两个 build.gradle文件
2.2代码详解
- Adapter这个是recycleview 的适配器
- 在Pptsearch里筛选出要添加的ppt文件–>list 集合中—>然后适配器会获取每个String(ppt名称) 进行展示
- Pptsearch中的recycleview绑定此适配器 , 为了美观,我使用的是网格样式的recycleview(定义网格样式在Pptsearch里)
- ImageView里是控件的自定义, 有ppt控件和Imageview控件自定义(但是使用的是itsrts-pptviewer.jar里的ppt控件)
- 可以看代码中的注释
- SQLite 这里面是数据库实体类, dao操作, 数据库创建(单例模式)
- 实体类中注意返回值和参数的设置, 还有最上边对表的命名…
- dao中有一些操作没有用到, 我也没删, 自己看看增删改查的格式吧…
- 数据库创建使用的是单例模式,防止多次反复创建数据库…
- myViewmodel 这个是一个框架, 用来保存数据的 —> 每次登录软件之后都会加载数据库,而不是创建 ; 它本身的用处是: 每次打开软件即程序被销毁后都能展示之前添加的数据 (代码不多, 可以自行研究)
- 这里面还进行了异步数据库操作, 和如何在数据库中删除数据之后id 设置的逻辑
- Pptsearch 这个是主界面需要定义的一些设置, 添加,删除,展示ppt文件…
- viewmodel和livedata 配合使用了 viewmodel–>保存数据 livedata---->数据发生改变后自动更新
- allppt 是搜索出来的所有ppt集合
chosenPath 临时存储选来的ppt路径
**chosenPathName ** 临时存储选来的ppt路径的名称
linshi 当多选框弹出来后, 需要对ppt进行选择嘛, linshi就是临时的意思 嘻嘻~英语水平低拼音代替 - 异步搜索ppt 这里直接在手机的文件数据库搜索会更快些… 这些复杂的操作得在异步线程进行奥~
- 因为时间问题, 其实搜索时应该有用户等待效果的动画, 我懒没弄
- 这里的操作有: 先进行文件搜索添加进allppt集合中, 然后弹出对话框
- 多选框 多选框使用的是系统自带的
- 当点击确定之后会将linshi(临时) 集合中的地址插入到数据库 注意临时中的String是绝对路径, 一会我们还需要展示ppt的名字, 所以, 我们需要对绝对路径进行处理, 获取文件名称 (这些操作与ui无关,需要开启异步线程)
- recycleview 使用的是网格样式, 绑定了mainAdapter 当点击item的时候, 会将item的绝对路径通过intent传递到teachppt的activity中
- TeachPPT 没多少内容, 一看就能明白
- intent 接收pptsearch中传过来的绝对路径
- ToastUtil toast工具类多次点击toast后, 只显示一次
代码需要付费下载(几包辣条)自己学习, 大家不要乱传播, 会影响感情…
项目地址:
https://download.csdn.net/download/ou_wocao/21839109?spm=1001.2014.3001.5501
android新手 ppt展示 画板 AsyncTask异步(room数据库 快速本地查询) 数据保存及动态更新相关推荐
- android连接mysql查询表内记录_Android Room数据库多表查询的使用实例
前言 在SQLite数据库中,我们可以指定对象之间的关系,因此我们可以将一个或多个对象与一个或多个其他对象绑定.这就是所谓的一对多和多对多的关系. 既然要多表查询,所以表之间就得有关联.这时候我们就得 ...
- cesium 3dtiles 加载本地数据_深入echarts学习:加载跨域、异步、本地json数据的防坑录
1 说明: ===== 1.1 推荐指数:★★★★ 1.2 网上这方面说明,大多模棱两可,坑很多,讲透彻的不多,故本人做一个小结. 1.3 我曾介绍echarts的简单基本用法: <Echart ...
- Android中的AsyncTask异步任务的简单介绍
事件原由: 很多耗时的资源在安卓客户端加载时,必须要开启一个新的线程去操作维护,而如果直接在主线程中加载的话,客户端会直接报出异常,导致程序不能正常使用,而子线程无法直接更新UI,因此客户端提供了 ...
- Android之AsyncTask异步任务详解总结
Android 多线程----AsyncTask异步任务详解 [正文] 本文将讲解一下Android的多线程的知识,以及如何通过AsyncTask机制来实现线程之间的通信. 一.Android当中的多 ...
- 【Android 异步操作】AsyncTask 异步任务 ( FutureTask 模拟 AsyncTask 执行过程 | AsyncTask 执行过程回顾 | FutureTask 分析 )
文章目录 一.FutureTask 使用流程 二.FutureTask 模拟 AsyncTask 执行过程 三.AsyncTask 执行过程回顾 四.FutureTask 分析 一.FutureTas ...
- 【Android 异步操作】AsyncTask 异步任务 ( AsyncTask 异步任务执行方法 execute 方法相关源码解析 )
文章目录 一.AsyncTask 异步任务执行方法 execute() 引入 二.AsyncTask 异步任务执行方法 execute() 三.sDefaultExecutor 线程池解析 四.exe ...
- 【Android 异步操作】AsyncTask 异步任务 ( 参数简介 | 方法简介 | 使用方法 | AsyncTask 源码分析 )
文章目录 一.AsyncTask 参数简介 二.AsyncTask 方法简介 三.AsyncTask 基本用法 四.AsyncTask 构造函数源码解析 五.AsyncTask 构造函数相关源码注释 ...
- Android异步处理二:AsynTask介绍和使用AsyncTask异步更新UI界面
做一下如何同构AsyncTask异步任务来更新UI界面. (1)AsyncTask的介绍 通过上图中的AsyncTask的源码结构图可以看到,主要用于重载的方法是doInBackground(),on ...
- Android中的AsyncTask异步任务的简单实例
在 Android中的AsyncTask异步任务的简单介绍 一文中,已经对 安卓 异步任务操作做了简单的介绍,这里,直接将上文中的异步任务做了一个实例,实现异步操作更新UI线程,相比开启子线程更新来 ...
最新文章
- 数据处理_流数据处理利器
- 写在阿里去IOE一周年
- php dropdownlist,遇到dropdownlist
- arXiv热文解读 | 不懂Photoshop如何P图?交给深度学习吧
- Struts result param详细设置
- 客房收费系统数据库设计
- 解决tomcat的undeploy
- bbs.php168,PHP168 下载安装教程
- 算法面试题(数据结构)
- 关于filenet中的folder以及document简单操作
- 循环不变式、数学归纳法、归纳推理和演绎推理学习总结
- 知识图谱 | 从六个方面解析知识图谱的价值和应用
- 【微信JSSDK】PHP版微信录音文件下载
- Matlab保留工作区变量教程
- Java scanner输入多个数字其总和和平均数,每输入一个canner输入多个数字其总和和平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出结果
- Java编程思想之高内聚低耦合
- Python:文本分析必备—搜狗词库
- 一篇弄懂LayoutInflater.from(context).inflate()
- 网中网B2C分销商城系统有哪些优势?实现哪些功能?
- Floyd算法【图解证明】
热门文章
- 数据分发服务DDS及实时发布订阅协议RTPS-DDS互操作协议规范下载
- IP协议 — IP协议头部
- [ilink32 Error] Fatal:Unable to open file 'ACNTBUILDERXE6.LIB'
- POI:从Excel文件中读取数据,向Excel文件中写入数据,将Excel表格中的数据插入数据库,将数据库中的数据添加到Excel表
- 模拟双色球彩票开奖结果:随机生成一注双色球彩票,判断其是否中奖,奖金为多少。
- 服务器硬件监控之OMSA
- Linux CentOS系统 图形模式下,鼠标键盘操作没有响应
- PMI可以认证什么证书?
- 把超市系统连接到java数据库_Java项目 超市管理系统(二)数据库的分析与建立...
- 11、自动化基础:单元测试框架