Material Design风格的开源照片笔记:PhotoNoter

jopen 9年前

PhotoNoter

Material Design风格的开源照片笔记。 Material Design风格的开源照片笔记。(MVP+Dagger2+RxJava+Dex分包异步加载)

下载:

编译

如果编译不过,错误日志是:

Error:A problem was found with the configuration of task ':app:packagexxxxDebug'.

File ‘/xxxxxxxxxx/debug.keystore' specified for property 'signingConfig.storeFile' does not exist.

将{$projectName}/app/build.gradle中的下面代码删除

debug{              storeFile file("debug.keystore")       }

应用截图

动画gif

界面

技术点

  1. 整体项目MVP结构(1.2.0之前是MVC)。
  2. Dagger2。
  3. 相机MVC架构(还没有重构为MVP),API>=21使用Camera2,API<21使用Camera。
  4. 相机的状态机(状态机不对很容易崩哦~还要参数部分)。
  5. 照片缓存分为两种,一个是大图,一个是小图,小图是相册界面缩略图的时候加载的,大图是查看图片的时候加载的。
  6. 图片处理,这是一个老生常谈的了。但是在App中,发现很多这方面的问题我还没有解决。比如红米1s后置摄像头800W,那么拍一张图是3M左右,但是Camera的照片的0度是我们正常手机视角的90度。那么我们需要把这个3M的图片给翻转过来,又不想失分辨率,诶,臣妾做不到啊!那么现在的解决办法是不去拍摄800W像素的,拍大概400-500W像素的不会OOM的。
  7. 沙盒。每次拍完照都是先把数据放到沙盒数据库中,然后再到服务中去作图,做完的话再从数据库中删除掉。作图的Service是和Camera那个Activity绑定的(bind方式),当不再拍照的时候就退出了Service,然后回到相册界面的时候会去判断沙盒数据库中是否有没有做完的图,没有做完的话另外启一个进程的Service继续作图。
  8. Activity退出和进入的动画。这块弄了很久,主要是想模仿Android5.0的那种,但是有些界面做出来超级卡。
  9. 一些UI的动画,比如 “ 意见反馈”、 “ 语音输入” 这里面的动画。
  10. 主题设置,沉浸式状态栏(5.0)。这部分为了适配国内的ROM,我写的很奇怪很恶心,但是毕竟还是达到了效果的。
  11. 切换主题。
  12. 可以滑动item和可以拖放item的ListView(SlideAndDragListView)。
  13. RxJava + RxAndroid(RxCategory/RxPhotoNote/RxSandBox/RxFeedBack/RxUser)。
  14. dex分包处理,虽然还还没有达到65536个方法,但是我还是进行了分包处理,我为什么这样做呢?我想把最先用到的几个类和依赖类放到主dex里面,让主dex的大小小一些,这样在第一次启动的时候速度快一些,同时异步去加载第二个dex!异步!异步!异步!重要的事情要说三遍。目前自己去操作dex优化的结果是比系统配置第一个dex的包要小0.1M.....

更新版本说明

ChangeLog

致谢

 

项目地址: https://github.com/yydcdut/PhotoNoter