TinyPngPlugin,批量压缩项目中的图片,让你的 APK 体积缩小30%

TinyPng是一个支持压缩png和jpg图片格式的网站,通过其独特的算法(通过一种叫“量化”的技术,把原本png文件的24位真彩色压缩为8位的索引演示,是一 种矢量压缩方法,把颜色值用数值123等代替)可以实现在无损压缩的情况下图片文件大小缩小到原来的30%-50%

阅读更多

VideoRangeSlider视频裁剪控件

最近项目中需要用到裁剪视频操作的控件,本着不要重复造轮子的精神,在Github上找了个遍都没有发现有可用的。那就只好自己动手做了。目前已经开源到Github,欢迎Start,issue。

阅读更多

从SwipeRefreshLayout看Android Animation原理

在项目开发中,我们经常会用到SwipeRefreshLayout这个控件来做下拉刷新。当SwipeRefreshLayout做为一个Fragment的顶层View时并且在触发下拉刷新动画的情况下,会发现这个Fragment “无法被remove或者hide”,只有当刷新动画停止时Fragment才能被 “正常remove或者hide”。解释这个原因,首先得分析Animation的执行原理

阅读更多

Fresco的内存机制

Fresco是Facebook出品的高性能图片加载库,号称在所有图片加载库中是效率、性能最好的。Fresco整个库还挺大的,还有native层。这里不对Fresco做深入分析,只关注Fresco在Android Bitmap的管理上采用了哪些黑科技

阅读更多

Dagger2解惑

最近一直在关注Android项目开发中的整体架构设计问题,如何在复杂的业务逻辑和日益膨胀的功能需求面前保持项目架构的稳定是一个很值得深入学习的问题。前段时间看到开发社区里有不少人在推崇Dagger2 + MVP模式来构建整体项目框架,MVP模式之前在项目中有使用过,MVP虽然从Activity和Fragment中抽离出了业务逻辑层,但是也不能完全解耦代码。

阅读更多

视频在滑动列表中的异步缓存和播放

最近在Github上看到VideoPlayerManager这么一个项目,目的在是ListView和RecyclerView中播放小视频,模仿了Instagram中滑动到可见视频项时开始播放该视频,滑动至不可见时停止视频播放的功能

阅读更多

【转】Android应用架构

Android开发生态圈的节奏非常之快。每周都会有新的工具诞生,类库的更新,博客的发表以及技术探讨。如果你外出度假一个月,当你回来的时候可能已经发布了新版本的Support Library或者Play Services

阅读更多

Android冷启动时间优化

冷启动时间是指当用户点击你的app那一刻到系统调用Activity.onCreate()之间的时间段。在这个时间段内,WindowManager会先加载app主题样式中的windowBackground做为app的预览元素,然后再真正去加载activity的layout布局

阅读更多

【转】逃离adapter的地狱-针对多个View type的组合实现方案

让我来告诉你一个关于乔某人的故事,一个在MyLittleZoo Inc工作的安卓开发者。关于他是如何从为具有多个view type的Adapter创建不同对象中解脱出来,最终成功实现可复用Adapter的。

阅读更多

【翻译】Android的MVP设计模式

随着Android的不断发展,APP的功能越来越强大,UI也越来越复杂,对于Android开发者来说UI层在程序开发过程中担任了越来越多的职责。通常一个APP是由多种数据模型(Model)和多种视图(View)组成,如果我们直接使用Model-View设计模型,那这将使得我们的程序代码变得复杂、耦合度高、不利于单元测试和代码重构。

阅读更多