美文网首页Android开发经验谈Android开发Android技术知识
造了四个轮子之后,我们上路跑一跑

造了四个轮子之后,我们上路跑一跑

作者: 呼啸长风 | 来源:发表于2018-10-21 16:13 被阅读105次

一、前言

最近相继发布了四个开源项目,都是比较轻量的项目。
造完轮子,很自然的想到要弄个App来跑一下。
在搬APP出来之前,先介绍下这几个轮子吧。

二、轮子

昨晚我在秋名山输给一辆五菱宏光, 他用惯性飘移过弯,他的车很快,我只看到他有个修楼房漏水的招牌。
如果知道他是谁的话,麻烦你们跟他说一声:礼拜六晚,我会在秋名山等他。

秋明山车神之所以开得快,不单是因为技术好,车神老爸对车子的调优也很重要,比如给车配了好轮子……编不下去了 -_-

LightKV

项目地址:LightKV
高性能key-value存储组件,相比SharedPreferences有全方位的改进。
支持Kotlin属性委托,在Kotlin环境下使用,可以像读写变量一样读写配置。
推荐指数:★★★★

LightEvent

项目地址:LightEvent
轻量级事件通信方案(类似于EventBus的作用),不到50行代码。
简单到极致,使用也很方便。
推荐指数:★★★

Task

项目地址:Task
实用的线程调度框架,针对App开发的使用场景做了适用性封装。
支持优先级,适配生命周期,支持任务分组,任务去重;
可直接执行任务,可用于RxJava, 可替换AsyncTask。
推荐指数:★★★★

Doodle

项目地址:Doodle
高效的图片加载框架。
功能完备,实现清晰。
推荐指数:★★★★★

三、应用

最后一个组件Doodle的功能为图片加载,所以第一时间想到的就是做一个浏览图片相关的APP。
如果仅仅是加载本地相册什么的就没意思了,可以做一个浏览图片素材网站的APP。
当然不是直接拿WebView去打开别人的网站,这样体验不好;
可以解析网站中的图片地址(没错,就是爬虫-_-),用 RecyclerView + ImageView 显示,这样会比WebView流畅一些。

下面是几张效果图:

这些是从花瓣网下载的图片,花瓣网的素材还是不错的,而且更新得很快。
项目中预置了几个频道,图片展示则是瀑布流+分页加载。

遇到喜欢的图片想下载回来怎么办?
虽然功能简单,但是“刚需”还是要提供的:
可以设置存储路径,然后点击图片详情页右上角的“下载”即可。
侧滑栏可以点击“已下载”查看下载好的图片,或者设置路径到SDCard的Picture目录,用系统的图片浏览器打开-_-
有的图片是长图,详情页是用PhotoView显示的图片(提供友好的缩放交互), 其继承于ImageView, 然后对于宽或者高大约4096的图片,显示不出来。
所以遇到这样的图片,可以下载回来,用系统的图片浏览器打开……
主要是笔者一时没找到可以像PhotoView这样支持缩放,而又支持长图的控件。有用过这样的控件的读者可以推荐一下。

除了花瓣网之外,还支持老外的一个图片网站:unsplash
这个网站都是高清相机拍的图片,源文件分辨率超高,还好网站提供了指定分辨率下载的API,所以图片预览无压力。
遗憾的是这个网站没有按频道划分,只有关键字索引,不过也可以自定义关键字来作为频道分组了。

四、总结

上面四个组件中,最简单的LightEvent只有不到50行代码,最复杂的Doodle也不过100K,都是轻量级的组件。

最近Kotlin比较火,所以顺势尝试尽量用Kotlin来实现(改写)。
Kotlin编写代码确实相对Java总体上要更简洁,很多人说能省1/3的代码;
这个我没有具体去算过,从这段时间的体会来看,有部代码确实可以写得比Java简洁,尤其是集合运算,以及能用上Lambda的地方。

个人的体验是,写业务代码可以尽量用Kotlin,写基础组件还是用Java划算一些:
相对于业务代码,基础组件从Java到Kotlin,并不会减少多少代码,反而Jar包会变大,大约增加50%的体积。

五、下载

项目已发布到github, 项目地址:https://github.com/No89757/Collector

相关文章

  • 造了四个轮子之后,我们上路跑一跑

    一、前言 最近相继发布了四个开源项目,都是比较轻量的项目。造完轮子,很自然的想到要弄个App来跑一下。在搬APP出...

  • 节前的疯狂

    堵!堵!堵!到处都堵,那里都走不动,四个轮子的跑不过三个轮子的,三个轮子的跑不过两 条腿。 每一个人都想鼻子上挂着...

  • 开源时代,一杯敬明天,一杯敬过往

    Reinvent the Wheel 从“我们不要重复造轮子”到,兄弟们“我们造轮子”吧 不要重复造轮子 意味着我...

  • scrapy 按照时间写入日志

    scrapy作为框架之所以方便就在于, 好多东西不用自己去造轮子了. 哈哈哈 就比如,写入日志这种功能。程序跑在服...

  • 从头造轮子:python3 asyncio 之 sleep (4

    从头造轮子:asyncio之sleep (4) 前言 书接上文:,本文造第四个轮子,也是asyncio包里面非常常...

  • 造轮子之仿射变换

    有人说,我们不应该再造轮子;也有人说,学习怎么造轮子可以带来更深的理解。我说,用轮子有用轮子的乐趣,造轮子有造轮子...

  • java关键字abstract

    在java中我们中abstract关键字来表达抽象。举个例子: 我们说车子都可以跑(run)。但有几个轮子,怎么跑...

  • java关键字abstract

    在java中我们中abstract关键字来表达抽象。举个例子: 我们说车子都可以跑(run)。但有几个轮子,怎么跑...

  • 【springboot+easypoi】一行代码搞定excel导

    我们不造轮子,只是轮子的搬运工。(其实最好是造轮子,造比别人好的轮子) 开发中经常会遇到excel的处理,导入导出...

  • springboot生成二维码

    我们不造轮子,只是轮子的搬运工。(其实最好是造轮子,造比别人好的轮子) 1、 在pom.xml中加入依赖 2、添加...

网友评论

本文标题:造了四个轮子之后,我们上路跑一跑

本文链接:https://www.haomeiwen.com/subject/ypcuiftx.html