Home

Ryan Hoo

Android Software Engineer, also a mediocre Product Manager and Designer

Home About Github
  • 19 Mar 2018 PRESS.one Android App 开启公测

    从三月开始开始 App 的设计与开发,到现在已经有四个月了。App 虽然未曾与大家正式见面,但是为了给大家更好的体验,产品汪和程序猿已经悄悄改了几版了。期间我们向 PRS 社群征集志愿者,小范围发布了内测,以期排除问题并获取用户的反馈。内测用户们不负众望,程序猿们用心写出来的 bug 都被揪出来勒令修复了 ;-D。并且社群在内测使用中以用户的第一视角向我们提了很多宝贵的意见,帮助我们的 App 更快成长。

  • 19 Mar 2018 PRESS.one 产品招聘

    PRESS.one 招产品啦,区块链项目,一个全新的内容分发和交易网络。

  • 19 Mar 2018 PRESS.one 身份认证

    A new journey begins.

  • 10 Jul 2017 我有酒(money & ideas) 你有故(ji)事(shu)吗

    南山区威盛科技大厦,近企鹅大厦,招聘 Android 工程师 / 前端工程师 (Vue 技术栈) / 后端工程师 (Node 技术栈)。在这里,有进能玩转 Kotlin,退可埋头写底层的 Android 同仁;也有实力过人谦逊温和的技术负责人;当然,还有你说「这个需求实现不了」就把代码扔你脸上的在下。;-D 总之你来,就应该不会寂寞。

  • 31 Dec 2016 糊瑞安 2016 回忆录

    我来的时候公司似乎还没有正式注册,但是每一个成员都非常精悍,能独挡一面,有造翻墙工具被喝过茶的,也有微信出来的产品经理,可以信手画出不逊设计稿的 Sketch 原型,还有微信的设计师,以及在 Apple 工作 7 年的 CEO......公司依然有很多缺陷,大家做事依然有点儿天马行空、理想主义,尽管我们未必能活下来,但是能跟这群人合作,看着一个公司从无到有,哪怕最终归于虚无,也是一种极大的荣耀。

  • 23 Dec 2015 Ryan, You Know Nothing

    这篇博客记录了我毕业两年的经历,其实还有很多东西没有说,不妨先放在心里,待来日与诸位把酒夜谈。过去这两年对我来说至关重要,最后还是给了自己一个 You Know Nothing 的评价,见知越多,世界观也逐渐成熟,不管如何,想来都是成长。平时忙碌少有认真的回顾,今日凌晨写写停停,折腾到 4 点,写完最后一句话,已是热泪盈眶。过往已矣,今日戮力,诸君,且看来年!

  • 16 Oct 2014 有 GitHub 帐号 ≠ GitHub

    我想,现在很多程序员都对 GitHub 存在误解。大多都是觉得「虽不明,但觉厉」的样子,以为有个 GitHub 帐号就算是世界级的程序员了。你所不知道的是,Git 奥义广袤,merge 之外,实有广大天地。

  • 30 Sep 2014 【译】使用 Fragment 自定义动画

    在过去的几个月里,我一直忙于从无到有的开发一个 Android 应用。这个应用以我公司的名字命名 —— Capitaine Train,可以在 Google Play 商店下载。Capitaine Train 从字面翻译成英文是 Captain Train,这是一个有着 3 年历史的创业公司,它秉持一个简单的理念而生:在欧洲买火车票是一件极为令人痛苦的事情,而我们 —— Capitaine Train 致力于通过简化整体乘车体验来彻底变革人们来往欧洲各国旅行的方式。这一版的 Android 应用意味着我们在这一方向上迈出了重要的一步。

  • 17 Sep 2014 【疑难杂症】Android WebView 无法打开天猫页面

    Android WebView 突然无法打开天猫的详情页,一直停留在加载状态。而在此之前,应用里是完全可以正常访问的,简单设置一行代码 webView.getSettings().setDomStorageEnabled(true) 即可解决,但背后的原因又是什么呢?

  • 12 Aug 2014 安装 Xcode 后命令行提示错误

    在安装完新版本的 Xcode 后,在 iTerm 中执行命令总会有这样的提示:Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.

  • 16 Jul 2014 [Parallax Animation]实现知乎 Android 客户端启动页视差滚动效果

    Parallax Scrolling (视差滚动),是一种常见的动画效果。视差一词来源于天文学,但在日常生活中也有它的身影。在疾驰的动车上看风景时,会发现越是离得近的,相对运动速度越快,而远处的山川河流只是缓慢的移动着,这就是最常见的视差效果。视差动画独有的层次感能带来极为逼真的视觉体验,iOS、Android Launcher、Website 都将视差动画作为提升用户视觉愉悦度的不二选择。本文就知乎 Android 客户端启动页面为例,教你如何实现视差滚动效果。

  • 11 Jul 2014 Git 从其它分支提取指定文件

    在 Git 多个分支之间,使用 merge 或者 rebase 可以合并分支内容,非常方便,但是在特殊情况下,我需要从另外一个分支拉取一个或者某个指定的文件(夹),手动 copy 代码当然可以,但是身为大程序猿,何须做这么接地气的事情?使用 git checkout 就可以轻松做到。

  • 08 Jul 2014 Google Is Making Android A Beautiful, Dynamic Scrapbook - A Closer Look At Material Design

    Google didn't spend enough time on Material Design during the keynote. We saw a beautiful video and learned a little bit about the intent and thought behind Google's new cross-platform look (which we actually saw a bit earlier than anticipated), but there's so much more to be said. Having attended as many design sessions as possible during I/O, I think it's worth taking a somewhat closer look at Material Design. In this post we'll attempt to scratch a little bit deeper into what Material means, why it's awesome, and why it's a forward-looking move for Google.

  • 26 Jun 2014 Timer(Task) ? Not in Android !

    我们对于 java.util.Timer(Task) 这两个类可谓不陌生,定时任务处处可见它俩如胶似漆的背影。只是,有心人必定会发现在 Android UI 中使用,它们带来的麻烦远远大于便利。我在多个场景碰到过这个问题,往往是忍气吞声,不厌其烦的处理着它们的「身后事」,还得提防它们时而罢工的臭毛病。

  • 17 Jun 2014 【构建Android缓存模块】(三)Controller & 异步图片加载

    上一篇博客我们学习了缓存模块的实现, 缓存分做两份:Memory Cache 和 File Cache。方法也很简单,分别是:1. 存储文件 2. 按唯一key值索引文件 3. 清空缓存 区别在于内存缓存读取优先,因为它读写的速度更快。但是考虑到内存限制,退而选用文件存储,分担内存缓存的压力。原理非常简单,在第一课中已经详细分析了。那么要怎么才能将这个缓存模块与UI模块的显示关联起来呢?在这里我们需要一个控制器,掌管数据流向和读写,同时控制 UI 的显示。

  • 05 Jun 2014 【构建Android缓存模块】(二)Memory Cache & File Cache

    内存缓存的存取速度非常惊人,远远快于文件读取,如果没有内存限制,当然首选这种方式。遗憾的是我们有着 16M 的限制(当然大多数设备限制要高于 Android 官方说的这个数字),这也正是大 Bitmap 容易引起 OOM 的原因。Memory Cache 将使用 WeakHashMap 作为缓存的中枢,当程序内存告急时,它会主动清理部分弱引用(因此,当引用指向为 null ,我们必须转向硬盘缓存读取数据,如果硬盘也没有,那还是重新下载吧)。

  • 04 Jun 2014 【构建Android缓存模块】(一)吐槽与原理分析

    在我翻译的 [Google 官方系列教程][1]中,Bitmap 系列由浅入深地介绍了如何正确的解码 Bitmap ,异步线程操作以及使用 Fragments 重用等技术,并且在最后给出了非常强大的独家秘笈:BitmapFun ,让猿媛们得以一窥究竟 Google 的攻城师们是如何高屋建瓴地秒杀 OOM 的。

  • 03 Jun 2014 Android大图片裁剪终极解决方案(下:拍照截图)

    上一篇博客中,我们学习到了如何使用 Android 相册截图。在这篇博客中,我将向大家展示如何拍照截图。拍照截图有点儿特殊,要知道,现在的 Android 智能手机的摄像头都是几百万的像素,拍出来的图片都是非常大的。因此,我们不能像对待相册截图一样使用 Bitmap 小图,无论大图小图都统一使用 Uri 进行操作。

  • 03 Jun 2014 Android 大图片裁剪终极解决方案(中:从相册截图)

    在这篇博客中将向大家展示如何从相册截图,让大家了解 Android 本身的限制,以及我们应当采取的实现方案。根据我们的分析与总结,图片的来源有拍照和相册,而可采取的操作有 1. 使用 Bitmap 并返回数据 2. 使用Uri不返回数据 前面我们了解到,使用 Bitmap 有可能会导致图片过大,而不能返回实际大小的图片,我将采用大图 Uri,小图 Bitmap 的数据存储方式。

  • 26 May 2014 Android 大图片裁剪终极解决方案(上:原理分析)

    约几个月前,我正为公司的 APP 在 Android 手机上实现拍照截图而烦恼不已。上网搜索,确实有不少的例子,大多都是抄来抄去,而且水平多半处于 demo 的样子,可以用来讲解知识点,但是一碰到实际项目,就漏洞百出。当时我用大众化的解决方案,暂时性的做了一个拍照截图的功能,似乎看起来很不错。可是问题随之而来,我用的是小米手机,在别的手机上都运行正常,在小米这里却总是碰钉子。虽然我是个理性的米粉,但是也暗地里把小米的工程师问候了个遍。真是惭愧!

  • 05 May 2014 【译】Android:更好的自定义字体方案

    在一个应用中,我需要在所有的 UI 组件中使用客户提供的字体。这听起来似乎是个很稀松平常的任务,不是吗?是的,我当时也是这么想的。然后我震惊了, Android 竟然没有提供一个简单优雅的方式来做这件事情! 所以,在这篇文章中我会展示Android提供的默认方法,然后我会分享更加简单优雅的解决方案。

  • 28 Apr 2014 使用Octopress搭建自己的博客

    一直想搭建一个自己的博客,开始付诸行动!刚刚接触到 Octopress ,总体感觉还是不错的,但是它不像 segmentfault 、 oschina 之类的平台,什么都具备,很多东西默认没有,需要自己配置,不过在玩的过程中总是能学到新东西的。