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

简介: 最近相继发布了四个开源项目,都是比较轻量的项目。 造完轮子,很自然的想到要弄个App来跑一下。 最终,捣鼓了这个浏览图片的APP。

一、前言

最近相继发布了四个开源项目,都是比较轻量的项目。
造完轮子,很自然的想到要弄个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

相关文章
|
7月前
|
安全 程序员
运动【跑步 01】一个程序员的半马挑战:跑前准备+跑中调整+跑后恢复(经验分享)
运动【跑步 01】一个程序员的半马挑战:跑前准备+跑中调整+跑后恢复(经验分享)
94 0
|
监控 Python
前天才讲的知识点,不听讲的人今天就跑来问
前天才讲的知识点,不听讲的人今天就跑来问
101 0
|
SQL 存储 Oracle
平时做开发需要掌握哪些数据库方面的知识(个人经验之谈)
平时做开发需要掌握哪些数据库方面的知识(个人经验之谈)
244 0
|
人工智能 Unix Linux
linux基本命令(跑路人笔记)
linux基本命令(跑路人笔记)
linux基本命令(跑路人笔记)
|
小程序 前端开发 关系型数据库
手把手教你将小程序项目跑起来【真自律小程序】
1、下载项目文件 在【猫宁一】公众号中回复【源码】,得到下载链接,将项目下载下来并解压 2、打开项目文件,编辑server/config.js文件 将红框圈出来的地方改成自己的信息
745 0
手把手教你将小程序项目跑起来【真自律小程序】
|
设计模式 算法 架构师
狂补计算机基础知识,让我上了瘾,想要尽快和同龄人拉开差距,必须这么干,才有戏!!!!
狂补计算机基础知识,让我上了瘾,想要尽快和同龄人拉开差距,必须这么干,才有戏!!!!
179 0
|
消息中间件 缓存 NoSQL
只要我跑的够快,内卷它就卷不到我,一名高中生是如何做到在疫情下涨薪70%的?
只要我跑的够快,内卷它就卷不到我,一名高中生是如何做到在疫情下涨薪70%的?
3210 0
|
移动开发 前端开发 搜索推荐
跑赢业务的同时如何实现技术成长?
做业务就好比打仗,团队是我们的归属。在团队中,我们既要通力协作,又要定义问题,既要业务先赢,又要技术成长。越来越多的前端将投身业务研发,要有更好的发展,业务理解力非常关键。
11546 0
跑赢业务的同时如何实现技术成长?
|
数据库 C++
这届清华新生太难了吧!C++作业难到上热搜,特奖都说做不了,大厂猎头已密切关注
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 本科大一,刚学了16周C++,能做个什么项目? 清华大学自动化系2020年的大一C++大作业,是这样要求的: 开发一款集合雨课堂和网络会议优点于一身的网络教学软件。
这届清华新生太难了吧!C++作业难到上热搜,特奖都说做不了,大厂猎头已密切关注