8

两年沉淀,我的开源项目已上线!

 3 years ago
source link: https://guolin.blog.csdn.net/article/details/84886691
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

两年沉淀,我的开源项目已上线!

转载请注明出处:https://blog.csdn.net/guolin_blog/article/details/84886691

本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每个工作日都有文章更新。

今天跟大家谈谈情怀。

话说我从13年开始写博客写到现在,也写出了一些成绩。成为了博客专家,出版了自己的书,推出了自己的开源框架,还有着自己的微信公众号。我相信有很多朋友可能都是通过我的书或者是我的博客入门和学习Android开发的,但是我自己却始终有一个遗憾,我虽然帮助了许多人学会了开发Android App,但是我自己却几乎从来没有开发过一个完整的App,更没有参与过任何一个知名App的研发。

我从11年开始参加工作,一开始进入的是一家华为的外包公司,主要做华为的外包项目。而华为的项目也是别人外包过来的,而且主要来自于海外市场,我进入的项目组就是做这些海外市场的App的,包括阿联酋、俄罗斯等国家的电信项目。当时刚参加工作不久,而且项目都早已成形,我只是负责其中一些模块的维护而已,对整体项目的把控和理解都不够深入。当时的我根本无法预知,这竟然是我最后一次接触App项目的开发。

13年我进入了蜗牛游戏工作,转眼之间在这里已经工作快6年了。蜗牛的主要产品都是游戏,App方向的研发很少。而我在里面的主要工作就是开发给游戏使用的SDK,以及解决游戏在Android平台上遇到的各种疑难问题,还有就是负责研究与Google相关的各种新技术。

说实话我倒是挺喜欢我的工作内容的,工作强度不大,也不怎么需要加班,而且有充足的时间可以研究各种新技术,有时候我会把自己调研的技术内容归纳总结成博客,从而形成了一种良性循环,这或许也是我在蜗牛一待就6年之久的原因。

但是我心中的那个情怀是一直存在的,我很喜欢开发App,也想参与开发一款大众熟知的App,只是我所负责的工作内容无法给我提供这个机会。于是我当时就暗下决心,既然在公司里没有机会,那么我就干脆自己开发一款App吧。这个念头是在16年写《第二行代码》的时候产生的,并且我将它定为了继《第二行代码》之后下一个我要挑战的目标。

确实我也是这么做的,自17年2月份起,我就开始着手这个App的开发了。由于是个人App,我并不指望会有多大的用户规模,只要有它存在的价值就足够了。因此我在一开始的时候就决定要将这个App开源,不管最后有没有用户,至少对于想学习Android开发的朋友们来说,它一定是有价值的。

当时的设想很美好,17年2月份开始开发,计划用5个月的时间完成这个App,然后在7月份上线。但是事实证明我的预估实在是太乐观了,因为我一个人既要开发客户端,又要开发服务器,而且只能利用业余时间开发,还得兼顾着博客和公众号,导致我实际的开发时间严重不足。再加上去年生了场大病,之后我整个人的工作态度都改变了,不再着急赶工期,每天回家之后固定只写两小时代码就休息,这个项目的进度也就像蜗牛一样慢慢爬到了今天,以至于现在这个项目终于上线了之后,我感到的不是兴奋和激动,而是解脱。

不管怎么说,这个项目终究还是完成了,也是实现了去年我在年终总结时给大家的承诺。让大家等了这么久,前面又谈了这么多情怀,现在我们来谈谈这个项目到底是什么吧。

其实当初我只想着要做一个App,但至于到底做什么App,我自己也不清楚。现在已经不是移动行业的黄金年代了,你能想到的想不到的好idea早都被别人给做光了。我当时深思熟虑之后决定做一个好玩的App,尽量让用户在上面能找到点乐趣。

那么什么样的App才比较好玩呢?我建过几个QQ群,每个都是以聊技术为主题的,加入的也都是程序员。但是所有群在一段时间过后都会不约而同地变成扯蛋群,如果强制限定群里只准聊技术的话,那么这个群慢慢就会成为死群。从这里我就发现了一个事情,程序员并不是外界想象的那么木讷,好像每个人天天都只会对着电脑敲代码一样。大多数人都还是喜欢吹牛聊天的,也喜欢在群里发一些搞笑的图片。于是我就想以这个为切入点做一个App,建立一个以欢乐搞笑为主题的平台。

听起来好像是有点类似内涵段子这样的App(虽然现在内涵段子已经被封杀了),但是像内涵段子这种体量的App我是没有能力做出来的,因为除了技术因素之外还要牵扯大量的运营工作,需要有专门的运营人员来筛选和审核哪些内容是有趣的,哪些内容是无聊的,还要通过强大的推荐系统把有趣的内容推荐给用户。确实,想要通过代码来甄别一段文字或一张图片是否有趣的确太难了,但是我发现了一件事,就是通常GIF图都是比较有趣的,那么干脆我就做一个专门用于分享和浏览GIF图的App好了。这或许并不是什么完美绝佳的方向,但却是一个可施行的方向,于是App的主题就这么定下来了。

我给这个App起名为趣享GIF,Logo是一只长颈鹿,之所以选长颈鹿作为Logo,是因为长颈鹿的英文叫giraffe,不仅包含了GIF这三个字母,读音也和GIF类似。

20181211211246415.png

整个App都是以Material Design的主题方式来设计的,为了UI效果更佳,里面使用到了大量的动画功能。

20181211211749311.gif

在登录方面我设计的比较特殊,趣享GIF是没有账号密码登录功能的,因为平时每次只要一让我输账号密码我就头疼。因此我在做这个App的时候直接把帐号密码给砍掉了,取而代之的是使用第三方登录的方式,QQ、微信、微博都可以。

2018121121572911.gif

可以看到,登录的时候也使用到了非常不错的transition动画效果。

当然,首次登录是需要注册账号的,注册的方式也很简单,昵称是从第三方账号那里获取的,如果你不想修改的话直接点击继续就可以了。注册完成后会直接跳转到主界面。

20181211215903459.gif

主界面有三个频道,分别是世界、关注、热门。世界频道是使用随机算法获取最新的GIF图列表返回给用户的,当然其实也不是完全随机,每个用户随着他发布GIF图质量的高低会有一个变化的权重值来评价他,权重值越高随机到的概率也越大。关注频道就很简单了,你关注了谁就可以在这里看到谁发布的内容。热门频道也很好理解,在这里会使用特定算法计算出最热门的GIF图列表返回给用户,影响是否热门的因素主要有浏览量、点赞数、以及评论数。

20181211220319683.gif

由于这是一个新注册的账号,目前还没有关注任何人,点击关注按钮就可以去关注一些系统推荐的用户了。这个推荐算法是根据用户的活跃度以及发布内容的质量来动态计算的,如果你足够活跃且经常发布一些优质GIF图的话,你的名字也会出现在这里。

20181211220552429.gif

接下来我们看一下如何发布GIF图,在主界面的右下角有一个FloatActionButton,也就是Material Design当中最经典的Fab按钮,点击Fab按钮即可开始编辑发布。

20181211221445949.gif

目前发布GIF的功能还比较简单,暂时只支持从相册选择GIF图和从SD卡选择GIF图这两种方式,默认是从相册中选择。当然,读取相册是一定要申请SD卡访问权限的,这里我在请求运行时权限时进行了非常棒的逻辑处理,保证不管用户是同意还是拒绝都会进行合理的界面提醒。大家在自己实现运行时权限处理的时候也可以参考我这种做法。

20181211221634277.gif

同意权限申请之后,界面中显示出来的图片都是你手机相册中现有的GIF图,默认我并没有让它们自动播放,因为所有GIF图一起播放会显得乱糟糟的。如果你想预览这些GIF图的播放效果,可以对着图片进行长按,然后就会播放了。

20181212132716547.gif

如果你想切换成从SD卡选择GIF图,可以通过点击右上角的Overflow按钮进行切换。这里我们在SD卡中选择一张GIF图,会自动返回到刚才的编辑界面。

20181212132747441.gif

只是选好了GIF图还不能发布,这里我们还得补充点文字说明才行,随便说点什么都可以,然后点击右上角的发布按钮即可完成发布。可以看到,在关注频道当中已经出现我刚刚发布的这张图片了。

20181212132811837.gif

当然,除了发布GIF图之外,我们更常见的可能还是浏览别人发布的GIF图。这就很简单了,随便点击一张图片就可以查看,这里打开GIF图时我也是使用了非常nice的transition动画。

20181212133025691.gif

在这里你可以对图片进行点赞、转发、以及评论。点赞动画效果也是相当炫酷的,这些都是用纯动画代码实现的,而不是使用的图片。

20181212133108929.gif

如果你觉得这张GIF图很有意思,想将它分享到QQ、微信、微博,或者是保存到手机,很简单,直接点击界面上的Fab按钮即可,这个时候会从底向上弹出一个透明对话框,然后我们就可以进行分享了。

20181212133150915.gif

你还可以通过点击发布人的头像进入到他的个人主页,这里会显示出他所发布过的所有GIF图。你也可以点击个人主页界面上的Fab按钮来关注或者取关这位用户。

20181212133245932.gif

刚才的个人主页界面非常漂亮,那么我们有没有自己的个人主页呢?当然有,回到主界面,然后在屏幕的左边缘向右滑动会拖出侧边栏界面,在这里点击个人主页选项就可以打开你自己的个人主页了。

20181211224309581.gif

默认情况下会自动使用第三方登录获取的头像来作为你个人主页的头像,然后对头像进行一个模糊处理来作为个人主页的封面背景,当然你可以随意进行定制,点击界面上的Fab按钮即可修改。

20181211224410237.gif

可修改的用户资料包括4部分,昵称、个人简介、头像、封面背景。比方说这里我们修改一下封面背景,修改的方式分为两种,拍照和从相册选择,我们选择相册。这里我借助Glide库对相册的读取和加载进行了非常高效的优化,整个相册列表的加载、显示、滑动都特别迅速和流畅。

20181212133410624.gif

选择了一张图片之后会跳转到裁剪界面,由于各手机操作系统自带的裁剪功能参差不齐,这里我使用了Android Image Cropper这个图片裁剪开源库,以保证在每一台手机上裁剪功能都能保持一致性。

20181211225128601.gif

最后点击保存就可以修改用户资料了,可以看到个人主页上的封面背景已经成功修改了。

另外由于这是一个GIF专属App,我还在GIF图的播放控制上面花了不少心思,比如说可以点击图片暂停播放,再次点击继续播放。

20181212194233664.gif

除此之外还有一些好玩的功能,比如可以对GIF图的播放速度进行控制,在设置里面能够设定播放的倍速,这里我们选择2倍速度播放。

2018121123011837.gif

而如果选择1/3速度播放,那么效果如下所示。

20181211230353596.gif

这个App其实在很多细节方面我都花费了大量心思,除此之外,还有诸如搜索、草稿箱等等其他功能,但是限于篇幅的原因就不向大家一一展示,感兴趣的朋友可以待会自己下载下来体验一下。

到目前为止,趣享GIF已经包含了发布、浏览、关注、点赞、评论、分享、转发等几大核心功能,你会发现一个最小型的社交系统已经完成了。这也是我对它的基本定义,一款简单有趣的社交软件。当然,其实我原先设想的功能远不止这些,但是为了第一个版本能尽快上线,我砍掉了许多有特色的需求,比方说通过摄像头拍摄生成GIF图、通过录制手机屏幕内容生成GIF图等。这些需求我当然不会放弃,在后面的版本迭代中一定会实现,但是我会随心而做,并不着急赶版本,所以大家也不用催我。

这里我非常欢迎大家下载体验这个我花费了很多精力而编写的App,也非常欢迎大家多多分享你们认为有趣搞笑的GIF图,但是有一条红线千万别触碰,那就是严禁发布任何黄色暴力以及其他违反国家法律的图片。为此我还专门开发了一套非常完备的后台管理系统,所有违规的用户都会被处罚或者封禁,所以大家千万别去尝试这条不正之路。

由于这是第一个版本上线,免不了会有很多的Bug,如果大家在使用过程中遇到了崩溃问题,不用担心,我在代码中加入了崩溃采集功能,所有的崩溃信息我都能看到,我会尽量在下个版本中将这些问题修复。如果是遇到了非崩溃类的Bug,那么可以通过公众号向我反馈,非常感谢你对这个项目的一份贡献。

通过大家反馈的Bug,我会尽快对代码进行重新整理,然后发布一份比较稳定的开源版本到GitHub上面,希望在一个月之内能完成吧,但是我也不敢保证,大家也不用催我,总之该来的一定会来,我做出的承诺有可能会迟到,但绝不会食言。

目前,趣享GIF已经在应用宝、华为、360、OPPO、VIVO、百度、豌豆荚、魅族、三星等主流应用商店(小米除外)上线了,大家直接在这些应用商店中搜索“趣享GIF”即可下载安装。不得不说现在App上架应用商店真是越来越难,还需要申请软件著作权才行,耽误了我近两个月的时间。当然如果你手机上没有安装上述商店也没关系,微信扫描下图中的二维码即可直接下载(没有iOS版本,用iPhone的朋友可以跳过了)。

20181212193744304.png

用我自己的观点来说的话,一件重要的事情一定要做到有始有终才行。沉淀了两年时间完成的这个App,对我来说是一件事情的结束,同时也是一个新的开始。接下来我又要尝试去面对新的挑战了,而我认为工作的乐趣就在这里。

关注我的技术公众号,每天都有优质技术文章推送。关注我的娱乐公众号,工作、学习累了的时候放松一下自己。

微信扫一扫下方二维码即可关注:

20160507110203928         20161011100137978


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK