Android 插件化的版本一致性问题

Android 的插件化开发,这个坑非常深,其中有一个问题就是 bundle 和 host 的版本不一致性问题,如果 bundle 中 sdk 的版本和 host 中 sdk 版本不一致,就很有可能出现 api 兼容性问题,导致运行时 crash。 一开始会想:"让 host 和 bundle 中的版本号抽离成一个文件不就行了?" 答案肯定是不行,因为这样只能让直接依赖的版本一致,不能让传递依赖的版本一致化
Android 插件化的版本一致性问题

探索阻尼动画优雅的实现方式

本文探讨下如何在 Android 上实现阻尼动画,首先 wiki 下阻尼的定义:是指任何振动系统在振动中,由于外界作用(如流体阻力、摩擦力等)和/或系统本身固有的原因引起的振动幅度逐渐下降的特性,也就是阻尼系统由两个子系统组成(振子系统、阻力系统),先前写过一篇 {% post_link 如何优雅地在Android上实现iOS的图片预览 如何优雅地在Android上实现iOS的图片预览 %} ,就是一套阻尼动画的实现
探索阻尼动画优雅的实现方式

探索 Android RippleDrawable作为背景是如何绘制到View外的

某天某时某刻,脑内突然发现一个疑问:RippleDrawable 是怎么把波纹绘制到所在 View 外面的? 稍微了解点 Android 绘制知识的就知道,子 View 的 onDraw(canvas) 获取到的画布默认是被父亲裁剪掉的,导致子 View 无法绘制到自身外面 那么问题就来了,为毛 RippleDrawable 可以绘制到外面,用了什么原理?莫非有特权?
探索 Android RippleDrawable作为背景是如何绘制到View外的

在Android上使用FFmpeg压缩视频

前几天项目需要压缩视频,Github上找了许多库,要么就是太大,要么就是质量不高,其实我只需要压缩视频,最好的方案还是定制编译一个 FFmpeg 给 Android 用。 > 本项目使用 FFmpeg 和 libx264(一个第三方的视频编码器) 来编译出可以在 Android 上使用的动态库
在Android上使用FFmpeg压缩视频

如何优雅地在Android上实现iOS的图片预览

用过 iOS 的都知道,拟物理的回弹效果在上面非常普遍,因为这是 iOS 系统支持的一套 UI 框架,但是 Android 就没有了,就拿图片查看器来讲,iOS 的效果就是感觉一张图片被绑定在了弹簧装置上,滑动很自然,Android 没有自带的图片查看器,需要自己实现 市面上主流的图片查看器都没有回弹的效果,一部分原因是没有这个需求,还有一部分是实现麻烦,这里讲述一个个人认为最好的方案
如何优雅地在Android上实现iOS的图片预览

Android 快速模糊效果

iOS系统自带了模糊效果,但是Android却没有,网上有很多实现方式,基本上都是用 faseBlur 算法,或者使用 RenderScript。 本文用的也是这两种方法,当 api < 17 的时候用 faseBlur 算法,当 api >= 17 的时候用 RenderScript。不同点是,网上基本都是通过获取一张和视图大小相同的 Bitmap 然后压缩、模糊。现在手机的屏幕分辨率都很高,如果使用这种方法的话,第一次创建的 Bitmap 将会占用很大一部分内存,很容易出现 OOM 现象。因为我们做模糊处理,所以只需要一张视图的缩略图即可,不需要一张高清的图片,有没有办法获取到 View 的缩略图呢?答案是有的。
Android 快速模糊效果

Android高仿Chrome侧滑返回效果

在iOS上的chrome中有侧滑返回上一个页面的功能,感觉蛮好用的,刚好Android没有自带的侧滑返回效果,如果使用透明的Activity的话比较浪费性能,所以打算在实现一个简单的DragBackActivity,拖动的效果模仿iOS上的Chrome侧滑返回。
Android高仿Chrome侧滑返回效果