打算开个开源系列,用来分享在项目过程中些的一些小轮子。
在这年的末尾,挤下时间,看能改几个还勉强过得去的出来分享给大家。
能力有些,实现得也不算很优雅。
还望各大神指点。
我要造轮子
作为一名爱折腾人员,重复造轮子这种事还是常做的。
没办法啊,做的过程才能发现问题嘛!最少我在做的过程就遇到啦!
例如阴影效果,图片如何压缩显示的问题(蹩脚的写了一个ImageLoader实在不怎样,改用Fresco!),排列等等问题
我们直接上效果图,这个是完成后的样子,目前改得勉强像一回事了。
就先粘贴上来,有需要的就拿去再根据自己需要改一个。
—
后记
在做这个轮子的过程还是遇到一些小问题,所以这里列一下
路径Bug
在开发过程过程,遇到一些bug,到现在还是很困惑,但时间限制,没去深究。
例如有时候,我们的ContentResolver 返回的路径中,有时小写,有时大写。
例如下面/storage/emulated/0/Tencent/MicroMsg/WeiXin/1450409463723.jpg /storage/emulated/0/tencent/MicroMsg/WeiXin/1450409423269.jpg /storage/emulated/0/Tencent/MicroMsg/Download/da_1446188743286.jpg /storage/emulated/0/tencent/MicroMsg/WeiXin/mmexport1446289719320.jpg /storage/emulated/0/tencent/MicroMsg/WeiXin/microMsg.1445260200558.jpg
返回的路径里面的
tencent
这个单词有时是大写,有时是小写,导致做判断时候出错!
真的很让人绝望!!找了好久才调试出是这出了问题 !!有那个大神懂得看到了反馈下!
所以最后只能靠这句来搞定path.equalsIgnoreCase(imageBean.path)
,忽略大小写。扫描图片
要扫描整个手机图片, 如果用户突然把手机某个目录的图片删除了,在打开我们的程序,则会程序返回的数据还是历史数据,点击那个目录其实是空空如也,系统一般需要用户去重开机,更新缓存。阴影效果
目前用了一个很蠢的办法来解决,就是在我们的弹出来的目录和背后的图片间夹一个view来做阴影,然后配合一个alpha动画。
状态:不怎么优雅的解决了!目录的弹出效果
这个功能没有优化,看到微信的那个弹出来的文件夹列表的效果挺好的,这个下次有空再继续做
另外这个框的大小的调整写得还是挺丑的,
监听getViewTreeObserver().addOnGlobalLayoutListener()
的方式来改变大小。预览图片的界面优化
有个小问题就是预览图片就只能看,不支持多指触控进行方法,缩小,旋转等操作,以前的项目有写过一个类似插件,下次再把它加上。
状态:解决!提示时间效果
在滚动的过程中,需要在顶部哪里加多个时间的提示,出现和结束加多个动画,看起来好看些拍照问题
真的遇到过第三方room把系统自带的相机给阉割了的,然后搞了一个不知道什么鬼的来替代,导致跳去拍照过程失败,下次有空把自己以前写的也继承到里面去。
三个参考案例
1. MultiImageSelector
看起来效果还是挺好的:
2. 鸿洋的超高仿微信图片选择器 图片该这么加载
3.Android-Ultra-Photo-Selector
地址:https://github.com/AizazAZ/Android-Ultra-Photo-Selector
##关于这些案例的一些观点:
- 缩略图
现在看到的这几个不是使用系统生成的缩略图来显示的,而是找到原图,然后压缩显示,这种策略不是很优雅,因为要实时的弄,关于缩略图的部分,欢迎看下官方的介绍,这有时候也是无奈之举吧。因为曾经遇到过有一些第三方room会把系统图库给砍掉,用别的来替代。所以为了做适配和兼容,只能自己来搞了。 弹出来的目录框
在点击左下角的目录选项的时候,弹出来的目录框没有考虑到如果文件夹少的时候,底部是没填充满的。阴影效果
弹出来的目录的背后是要加个阴影效果的,但目前看到的都是直接整个界面给抹黑,不是很好看。
基本使用的方法就像下面这样,这个效果不是很好看。WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.alpha = 0.7f; getWindow().setAttributes(lp);
微信的版本是这样的,他是背后的一层,在Actionbar下面,且是跟随着弹出来的框逐渐加深的。