实现滑动渐变的导航栏 2016-07-03 | Android 最近在优化超模故事及新物页面的显示,需要实现导航的滑动渐变,先看下效果图 导航栏从透明色变成了白色,不知道大家有没有发现,返回按钮和分享按钮也有变色,在滑动到临界点后变成了灰色,主要是因为我们的导航栏是白色的原因,如果导航为其他颜色,返回按钮和分享按钮就不需要改变,直接改变Toolbar的背景就可 ... 阅读全文 »
手势调整视频播放进度及音量 2016-06-19 | Android 目前很多视频播放器都支持手势调整视频播放进度及音量,最近在项目中也实现了这一功能,废话不多说,直接上代码 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 ... 阅读全文 »
视频播放过程中的横竖屏切换 2016-05-26 | Android 最近在优化视频播放体验,需要实现视频的横竖屏自动及手动切换,先看看交互原型图 最佳体验 通过点击右下角按钮可以实现横竖屏切换; 当手机的横竖屏开关打开,可以通过旋转手机实现自动横竖屏切换; 当手机的横竖屏开关关闭,实现同方法1。 之前的实现思路是将竖屏的Activity的方向写死为竖屏,点击全 ... 阅读全文 »
Android MediaPlayer状态机 2016-05-22 最近在做视频播放相关的功能,主要涉及MediaPlayer,到我们知道,视频在播放过程中有很多状态,我们能很明显感知到的有播放、暂停、停止等,但其实远远不止,今天就来梳理下在视频播放的过程中MediaPlayer的这些状态是怎么转换的 Android对播放音频/视频文件和流的控制是通过一个状态机来管 ... 阅读全文 »
python批量修改文件名 2016-05-08 | python 在平时的开发中,设计师在做设计稿的时候往往都是按照iphone的模板来做的,所以在切图的时候也不例外,她们给的切图是这样子的 @2x,@3x是什么鬼,一问才知道这是为了做屏幕适配的一种文件命名方式,可以在Android资源文件的命名是不支持存在@字符的,所以我们得把所有的文件进行重命名,文件少点还 ... 阅读全文 »
对ThreadLocal的理解 2016-04-24 之前在分析Handler的工作原理的时候,在Looper类中有这么一段代码,当时就不怎么理解 static final ThreadLocal<Looper> sThreadLocal = new ThreadLocal<Looper>(); ... private s ... 阅读全文 »
Data Binding 实践 2016-04-17 | Android Data Binding Library去年的Google IO 大会上,Android 团队发布了一个数据绑定框架(Data Binding Library)。以后可以直接在 layout 布局 xml 文件中绑定数据了,无需再 findViewById 然后手工设置数据了。其语法和使用方式和 J ... 阅读全文 »
用RxJava实现事件总线 2016-04-10 最近在升级美恰SDK的过程中,客服妹子想要在app中提示用户的未读消息数,以方便更快的给到用户反馈,于是clone了他们的demo看了一下,看完之后觉得很震惊,因为他们用的一些技术都是目前比较火的库,包括rxjava,retrfit,okhttp,leakcanary,glide,picasso等等 ... 阅读全文 »
使用include、merge、ViewStub来优化你的布局 2016-04-04 | Android性能优化 在开发中UI布局是我们都会遇到的问题,随着UI越来越多,布局的重复性、复杂度也会随之增长,我们怎样布局才是最合理,性能最好的呢?Android官方也给出了很多优化布局的方案,下面我主要讲解include、merge、ViewStub在优化布局中的使用方法 includeinclude想必大家最熟悉了 ... 阅读全文 »
说说Handler的工作原理 2016-03-20 单线程模型我们知道,Android系统是单线程模型,即应用程序启动时,系统会创建一个主线程,又叫做UI线程,负责与UI组件(进行交互,比如控制UI界面界面显示、更新等,UI线程只能处理一些简单的、短暂的操作,如果要执行繁重的任务或者耗时很长的操作,比如访问网络、数据库、下载等,这种单线程模型会导致线 ... 阅读全文 »