最近做了一款软件,功能不大, 展示ppt和画图, 但是融合了很多知识 ,还包含一些逻辑, 成功运行, 很适合新手, 但说到底小项目包含不了android整套知识, 所以还需要大家自己去慢慢扩展…

欢迎大家下载源码奥,支持就是动力.

1.功能介绍

  1. 展示ppt (pptx不支持),
  2. 画板,
  3. Room数据库操作(包含livedata数据更新框架),
  4. recycleview, 本地文件快速查询(自行更改搜索条件)
  5. 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中添加如图代码

  1. 可能我还漏了那点, 如果运行报错, 请仔细对比清单文件 和 两个 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数据库 快速本地查询) 数据保存及动态更新相关推荐

  1. android连接mysql查询表内记录_Android Room数据库多表查询的使用实例

    前言 在SQLite数据库中,我们可以指定对象之间的关系,因此我们可以将一个或多个对象与一个或多个其他对象绑定.这就是所谓的一对多和多对多的关系. 既然要多表查询,所以表之间就得有关联.这时候我们就得 ...

  2. cesium 3dtiles 加载本地数据_深入echarts学习:加载跨域、异步、本地json数据的防坑录

    1 说明: ===== 1.1 推荐指数:★★★★ 1.2 网上这方面说明,大多模棱两可,坑很多,讲透彻的不多,故本人做一个小结. 1.3 我曾介绍echarts的简单基本用法: <Echart ...

  3. Android中的AsyncTask异步任务的简单介绍

    事件原由: 很多耗时的资源在安卓客户端加载时,必须要开启一个新的线程去操作维护,而如果直接在主线程中加载的话,客户端会直接报出异常,导致程序不能正常使用,而子线程无法直接更新UI,因此客户端提供了   ...

  4. Android之AsyncTask异步任务详解总结

    Android 多线程----AsyncTask异步任务详解 [正文] 本文将讲解一下Android的多线程的知识,以及如何通过AsyncTask机制来实现线程之间的通信. 一.Android当中的多 ...

  5. 【Android 异步操作】AsyncTask 异步任务 ( FutureTask 模拟 AsyncTask 执行过程 | AsyncTask 执行过程回顾 | FutureTask 分析 )

    文章目录 一.FutureTask 使用流程 二.FutureTask 模拟 AsyncTask 执行过程 三.AsyncTask 执行过程回顾 四.FutureTask 分析 一.FutureTas ...

  6. 【Android 异步操作】AsyncTask 异步任务 ( AsyncTask 异步任务执行方法 execute 方法相关源码解析 )

    文章目录 一.AsyncTask 异步任务执行方法 execute() 引入 二.AsyncTask 异步任务执行方法 execute() 三.sDefaultExecutor 线程池解析 四.exe ...

  7. 【Android 异步操作】AsyncTask 异步任务 ( 参数简介 | 方法简介 | 使用方法 | AsyncTask 源码分析 )

    文章目录 一.AsyncTask 参数简介 二.AsyncTask 方法简介 三.AsyncTask 基本用法 四.AsyncTask 构造函数源码解析 五.AsyncTask 构造函数相关源码注释 ...

  8. Android异步处理二:AsynTask介绍和使用AsyncTask异步更新UI界面

    做一下如何同构AsyncTask异步任务来更新UI界面. (1)AsyncTask的介绍 通过上图中的AsyncTask的源码结构图可以看到,主要用于重载的方法是doInBackground(),on ...

  9. Android中的AsyncTask异步任务的简单实例

    在  Android中的AsyncTask异步任务的简单介绍 一文中,已经对 安卓 异步任务操作做了简单的介绍,这里,直接将上文中的异步任务做了一个实例,实现异步操作更新UI线程,相比开启子线程更新来 ...

最新文章

  1. 数据处理_流数据处理利器
  2. 写在阿里去IOE一周年
  3. php dropdownlist,遇到dropdownlist
  4. arXiv热文解读 | 不懂Photoshop如何P图?交给深度学习吧
  5. Struts result param详细设置
  6. 客房收费系统数据库设计
  7. 解决tomcat的undeploy
  8. bbs.php168,PHP168 下载安装教程
  9. 算法面试题(数据结构)
  10. 关于filenet中的folder以及document简单操作
  11. 循环不变式、数学归纳法、归纳推理和演绎推理学习总结
  12. 知识图谱 | 从六个方面解析知识图谱的价值和应用
  13. 【微信JSSDK】PHP版微信录音文件下载
  14. Matlab保留工作区变量教程
  15. Java scanner输入多个数字其总和和平均数,每输入一个canner输入多个数字其总和和平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出结果
  16. Java编程思想之高内聚低耦合
  17. Python:文本分析必备—搜狗词库
  18. 一篇弄懂LayoutInflater.from(context).inflate()
  19. 网中网B2C分销商城系统有哪些优势?实现哪些功能?
  20. Floyd算法【图解证明】

热门文章

  1. 数据分发服务DDS及实时发布订阅协议RTPS-DDS互操作协议规范下载
  2. IP协议 — IP协议头部
  3. [ilink32 Error] Fatal:Unable to open file 'ACNTBUILDERXE6.LIB'
  4. POI:从Excel文件中读取数据,向Excel文件中写入数据,将Excel表格中的数据插入数据库,将数据库中的数据添加到Excel表
  5. 模拟双色球彩票开奖结果:随机生成一注双色球彩票,判断其是否中奖,奖金为多少。
  6. 服务器硬件监控之OMSA
  7. Linux CentOS系统 图形模式下,鼠标键盘操作没有响应
  8. PMI可以认证什么证书?
  9. 把超市系统连接到java数据库_Java项目 超市管理系统(二)数据库的分析与建立...
  10. 11、自动化基础:单元测试框架