Android
文章平均质量分 80
魔都三帅
这个作者很懒,什么都没留下…
展开
-
让动画不再僵硬:Facebook Rebound Android动画库介绍
official site:http://facebook.github.io/reboundgithub : https://github.com/facebook/reboundRebound是facebook推出的一个弹性动画库,可以让动画看起来真实自然,像真实世界的物理运动,带有力的效果,使用的参数则是facebook的origami中使用的。官网上有一个简原创 2015-06-27 17:21:41 · 9057 阅读 · 0 评论 -
从零创建项目实践
背景大帅MarkZhai的从零系列火遍大江南北,奈何大帅最近要做爸爸了,忙得没有时间出demo,文章中一些细节部分没有上代码,一些粉丝肯定看的不知所措,所以做小弟的就替大哥为大家整理了个demo。接下来会结合大帅的理论为大家讲述一下如何实践,在本文的最后会附上Demo地址。关于本实践的说明本实践是为了方便,调用github的api,抓取了我们moduth组的repo热身运动先要补充一点知识的细节才能原创 2016-07-27 16:51:11 · 911 阅读 · 0 评论 -
微信热修复开源库 Tinker imitator 原理篇
参考资料:微信Android热补丁实践演进之路 简单来说,在编译时通过新旧两个Dex生成差异patch.dex。在运行时,将差异patch.dex重新跟原始安装包的旧Dex还原为新的Dex。这个过程可能比较耗费时间与内存,所以我们是单独放在一个后台进程:patch中。为了补丁包尽量的小,微信自研了DexDiff算法,它深度利用Dex的格式来减少差异的大小。它的粒度是Dex格式的每一项,可以充分利原创 2016-07-27 13:06:24 · 9055 阅读 · 0 评论 -
从零开始的Android新项目8 - Data Binding高级篇
承接上篇,本篇继续讲解一些Data Binding更加进阶的内容,包括:列表绑定、自定义属性、双向绑定、表达式链、Lambda表达式、动画、Component注入(测试)等。Demo源码库:DataBindingSample。列表绑定App中经常用到列表展示,Data Binding在列表中一样可以扮演重要的作用,直接绑定数据和事件到每一个列表的item。RecyclerView过去我们往往会使用L原创 2016-07-27 12:37:56 · 6264 阅读 · 3 评论 -
从零开始的Android新项目7 - Data Binding入门篇
Data Binding自从去年的Google I/O发布到至今,也有近一年的时间了。这一年来,从Beta到如今比较完善的版本,从Android Studio 1.3到如今2.1.2的支持,可以说Data Binding已经是一个可用度较高,也能带来实际生产力提升的技术了。然而事实上,真正使用到Data Binding的公司、项目仍然是比较少的。可能是出于稳定性考虑,亦或是对Data Binding原创 2016-07-27 12:37:04 · 3602 阅读 · 1 评论 -
从零开始的Android新项目9 - 前端用后台接口设计
这回来讲讲后台接口的设计。可能有同学会觉得后台的接口和我们大前端开发有什么关系?试想一下,在碰到一些不合理的接口设计的时候,你们开发是否觉得很别扭——需要为了坑爹的接口写很多脏代码引坑?甚至,这么开发出来的页面,体验也会很差?我们不是说硬无理要求后端接口按照前端业务去封装,而是说为了项目更好地发展,为了用户能有更棒的体验,应该有讨论商量的空间。一些差劲的设计,应该被拒绝。本文使用前端来指代 Andr原创 2016-07-27 12:39:36 · 5514 阅读 · 1 评论 -
从零开始的Android新项目6 - Repository层(下) Realm、缓存、异常处理
承接上篇 从零开始的Android新项目5 - Repository层(上) Retrofit、Repository组装,本文继续介绍Realm、缓存,以及统一的异常处理设计。RealmRealm在移动端数据库中也算是比较有名的一款了,以其跨平台和惊人的速度而闻名。啊,对了,还有文档多。这里要黑的就是文档问题,Realm虽然乍一看文档很多,但是老实说,写的挺乱的。不过总体来说,实践和应用中感觉还不错原创 2016-07-27 12:36:01 · 2019 阅读 · 0 评论 -
从零开始的Android新项目1 - 架构搭建篇
最近一直在忙新项目的事情,所以有的坑一直没填。。现在看来可能一时半会儿还填不了,倒不如记录一下新项目的搭建。试想一下,如果没有历史负担,没有KPI压力,去新搭建一个项目,你会怎么设计和实现呢?本系列文章不是教你怎么从0开始学Android,从0开始怎么建一个项目,而定位于零负担的情况下,在2016年怎么去创建一个好的Android项目,其中一部分技术并不太适合刚入门的初学者。Application原创 2016-07-27 11:54:14 · 2754 阅读 · 0 评论 -
从零开始的Android新项目2 - Gradle篇
相信大家的项目用上gradle都已经很久了,但用得如何呢?这里分享一下我的gradle脚本,大部分都是去年6月左右就开始用上的,有一部分比如签名的安全保存则是最近才自己动手,做了令自己觉得还不错的方案。module类型的区分科普小结,可能有些同学不太明白Java library module和Android library module是怎么区分的,其实就是个plugin的区别,在module的bu原创 2016-07-27 11:55:14 · 1653 阅读 · 1 评论 -
从零开始的Android新项目3 - 谁告诉你MVP和MVVM是互斥的
去年5月左右的时候,笔者在逛GitHub的时候,看到了一个MVP的项目,叫做mosby,仔细看了源码和作者介绍的文章后,发现确实有点意思,虽然会需要多写几个类和方法,但是解决了activity/fragment过重的问题,通过V/P分离能够帮助提高可维护性。时至去年年底,今年年初,MVP才逐渐被大家所知,也不时看到些文章介绍其概念和实践。再说说MVVM (Model-View-ViewModel),原创 2016-07-27 12:01:47 · 2067 阅读 · 3 评论 -
从零开始的Android新项目4 - Dagger2篇
转载请注明出处Dagger - 匕首,顾名思义,比ButterKnife这把黄油刀锋利得多。Square为什么这么有自信地给它取了这个名字,Google又为什么会拿去做了Dagger2呢(不都有Guice和基于其做的RoboGuice了么)?希望本文能讲清楚为什么要用Dagger2,又如何用好Dagger2。本文会从Dagger2的起源开始,途径其初衷、使用场景、依赖图,最后介绍一下我在项目中的具原创 2016-07-27 12:12:49 · 1421 阅读 · 1 评论 -
从零开始的Android新项目5 - Repository层(上)
如期而至的Repository篇,内部实现则由Realm、Retrofit,以及内存级LruCache组成。 Repository,顾名思义,即仓库,向上层屏蔽了数据来源和内部实现细节,不需要了解货物来源,只需要拿走就行了。由于篇幅问题,将分为上下两篇,本篇主要介绍Retrofit的应用和Repository层组装,下篇会讲解本地缓存(包括Realm和内存缓存)以及基于异常的设计。Why Repo原创 2016-07-27 12:17:07 · 3175 阅读 · 0 评论 -
Data Binding Component详解 - 换肤什么的只是它的一个小应用!
上一篇从零开始的Android新项目8 - Data Binding高级篇中,我们提到了使用Component来进行注入,以方便进行测试的功能,有一些朋友说写的不够清楚,还有些疑惑,所以本篇就来详细说说Component。作为例子,我们的实现目标是使用Data Binding Component,让应用全局的TextView的文本都能随时变成test,还能进行全局换肤。原创 2016-07-27 17:30:57 · 2871 阅读 · 1 评论 -
从什么都不懂开始(四)——Git掌握时空之力
看到这篇标题是不是有种很叼的感觉!?在Git的工作流程中,不仅能往前走,当然也可以后退。不仅能提交 文件,当然也能删除或者修改了。而且你想回到哪个提交节点就回到哪个提交节点, 是不是觉得自己体内的洪荒之力快抑制不住了?别急,容我短话长说,一一道来。在这真正讲这些也需要普及一个概念:工作区和暂存区工作区和暂存区如果有同学对这些概念感觉很懵逼,也没什么关系,不影响你的使用,只要扫一眼接下来的两个标题原创 2016-07-29 11:15:21 · 2540 阅读 · 1 评论 -
React Native 0.31 Bundle 预加载优化
使用 React Native 开发混合应用的过程中,我们在打完 bundle 进 release 包后,会发现第一次进入页面(React 的 Activity)会有一个短暂的白屏过程(在真机上近 1秒,在模拟器上比较快,在 200毫秒 左右),而且在完全退出后再进入,仍然会有这个白屏。仔细查看加载过程(其实猜猜都能知道)后可以发现,这个过程就是在加载我们的 js bundle,通常即便是一个小的原创 2016-08-22 11:14:29 · 5368 阅读 · 0 评论 -
记一次 Data Binding 在 library module 中遇到的大坑
使用 Data Binding 也有半年多了,从最初的 setVariable,替换 findViewById,到比较高级的双向绑定,自定义 Adapter、Component,查看源码了解编译、运行流程,也算是小有成果,且没有碰到 Data Binding 本身实现上的问题。然而,最近在一次重构组件化(见 MDCC 上冯森林的《回归初心,从容器化到组件化》)的过程中,碰到了一个比较严重的 BUG。原创 2017-02-06 11:48:05 · 3657 阅读 · 2 评论 -
Android逆向分析(一) - 反编译看看手Q口令红包的实现原理
本系列文章是《Android软件安全与逆向分析》的实践笔记(一些工具的版本和用法已经不同了),同时笔者希望系统性地记录一下逆向方面的文字和想法。第一篇作为开始,先讲讲简单的反编译和如何跟踪一些逻辑的实现,以便进行hack。原创 2016-02-09 13:21:54 · 3908 阅读 · 2 评论 -
Android换肤技术总结
Android换肤技术总结背景纵观现在各种Android app,其换肤需求可以归为 - 白天/黑夜主题切换(或者别的名字,通常2套),如同花顺/自选股/天天动听等,UI表现为一个switcher。 - 多种主题切换,通常为会员特权,如QQ/QQ空间。对于第一种来说,目测应该是直接通过本地theme来做的,即所有图片/颜色的资源都在apk里面打包了。而对于第二种,则相对复杂一些,由于作为一种线上原创 2015-09-10 23:50:14 · 2392 阅读 · 4 评论 -
各大热补丁方案分析和比较
最近开源界涌现了很多热补丁项目,但从方案上来说,主要包括[Dexposed](https://github.com/alibaba/dexposed)、[AndFix](https://github.com/alibaba/AndFix)、[ClassLoader](http://bugly.qq.com/blog/?p=781)(来源是原QZone,现淘宝的工程师陈钟,在15年年初就已经开始实现)三种。原创 2015-11-24 16:03:15 · 1722 阅读 · 0 评论 -
Photo Sphere调查小结
去年在网上查了一下Photo Sphere和街景相关的内容,做一下小结。Photo Sphere是只有Google Camera有的一个功能,其拍摄后会将图片进行处理并保存为jpg,虽然看也能看,但是效果不是很好,且手机上目前没有独立的Viewer,这个jpg里面保存了很多metadata,解析出来看到有Google Developer上也有相关介绍http原创 2015-06-27 19:27:58 · 2918 阅读 · 0 评论 -
Google官方抽屉DrawerLayout使用心得、踩坑经验以及定制化
基础使用这里要介绍的是google的DrawerLayout,行为可见google官方应用如gmail,看手Q的抽屉,应该是根据android-undergarment项目来定制的一个控件。Google Desgin GuildLines里面有介绍:http://www.google.com/design/spec/layout/structure.html#structure-s原创 2015-06-27 17:49:47 · 4579 阅读 · 2 评论 -
接入LeakCanary检测内存泄露
接入LeakCanary检测内存泄露前几天square在Github上发布了他们的内存泄漏检测库,LeakCanary,短短几天star已经接近3000,研究了一下后,发现其对QZone也很有价值。原来我们看到一个toast弹出内存泄露,但是也看不出什么相关信息,所以只能直接忽略。一个内存泄露既需要测试同学dump HPROF再用MAT和Finder分析提单,开发同学接到单原创 2015-06-27 18:02:23 · 1106 阅读 · 0 评论 -
沉浸式状态栏技术方案及其中的一些坑
1. 沉浸式状态栏沉浸式状态栏是android 4.4开始支持的一个feature,在软件打开的时候通知栏和软件顶部颜色融为一体,这样不仅可以使软件和系统本身更加融为一体,而且让用户注意力更加集中在内容上。在ios上这是一个很早就支持的功能,但在android上则一直只能看到黑色的状态栏。因为在刚来公司不久后遇到的我的空间一次改版,设计稿上就是按着ios的样子做的,而android原创 2015-06-27 18:05:00 · 7013 阅读 · 0 评论 -
关于android客户端的导航栏(toolbar)
title: 关于android客户端的导航栏 date: 2015-08-25 16:34:40 categories: - android tags: - android- toolbarbackgroundandroid客户端开发过程中,所有页面都会有的一个元素,也就是导航栏了(标题栏),尽管Google给我们提供了ActionBar和升级版的Toolbar,但是在中国的移动端设计中原创 2015-08-27 19:58:14 · 1859 阅读 · 0 评论 -
Java和Android中,代码块、static静态代码块的执行顺序
Java和Android中,代码块、static静态代码块的执行顺序有没有什么区别呢。原创 2015-08-28 11:11:54 · 5058 阅读 · 0 评论 -
intellij老是警告的SparseArray是什么 - HashMap的替代者
序言身为一个有代码洁癖的程序员,在写Android应用的时候,我总是会去注意代码规范(Google Android Guideline)能一行搞定的代码,绝不写两行决不让编译器(intellij, as)右边滚动条有黄色不重复自己当然了,实际开发中,编译器报的warning有些不太好避免,比如有些空指针,编译器从android源码来看,觉得不会出现空指针,但是实际情况下….你懂得,部分ro原创 2015-08-28 17:10:04 · 1378 阅读 · 0 评论 -
EventBus, otto, LocalBroadcast的选择
EventBus, otto, LocalBroadcast的选择greenrobot的EventBussquare的ottoandroid support包里提供的LocalBroadcast三者都是类似订阅/发布的模式,降低了耦合度。与callback比起来,这种事件总线的模式使得两个类没有直接的依赖关系,对架构来说进行了解耦,把双向依赖变成了单向依赖,在大型项目中尤其显得重要。Why原创 2015-08-17 15:17:00 · 2314 阅读 · 0 评论 -
实现类似Tumblr的Title Bar跟随滑动渐变的效果
轻博客应用Tumblr中,在看他人的主页时候,可以看到顶部title bar的一个很酷炫的体验,当在最顶端,整个title bar的背景是透明的,而上面的字体和图标是白色的,随着逐渐滑下来,背景逐渐不透明变白,而图标及字体则渐渐灰起来。如下图整个滑动的效果很好,简直忍不住多滑几次。那么这个效果是怎么实现的呢。秘密自然都在listview的onScroll上。根据原创 2015-06-27 18:27:24 · 4022 阅读 · 2 评论 -
EventBus 2.4 源码分析
EventBus简介本篇基于EventBus 2.4撰写。Android optimized event bus that simplifies communication between Activities, Fragments, Threads, Services, etc. Less code, better quality.上面是从官方repo拉来的代码,大致是说简化的组件之间的交流通信,原创 2015-08-20 22:39:33 · 1192 阅读 · 1 评论 -
Facebook Rebound 弹性动画库 源码分析
Rebound源码分析今天看到了tumblr发布了基于rebound的Backboard,本想直接分析一下Backboard对rebound做了些什么,不过考虑到rebound还没有仔细分析过,所以这里做一下源码分析。对外部来说,首先接触的就是SpringSystem了,但在说它之前,先让我们原创 2015-09-10 10:14:56 · 3616 阅读 · 0 评论 -
应用MVP模式写出可维护的优美Android应用
应用MVP模式写出可维护的优美Android应用在Android开发中,我们常常会动辄写出数千行的Java类,而当一个Activity有4、5千行的时候,想找一个逻辑在哪儿就会显得异常痛苦了。比如想在数据加载错误的时候,显示一个提示信息,上上下下得找很久。最近用了MVP模式后,我觉得找到了一个不错的框架级解决方法。首先看看MVP是什么MVP是MVC模式的一个原创 2015-06-27 17:37:19 · 2085 阅读 · 1 评论 -
React Native for Android初探
See http://blog.zhaiyifan.cn/2015/09/16/Try-React-Native-for-Android/OverviewFacebook 今天发布了 React Native for Android,把 Web 和原生平台的 JavaScript 开发技术扩展到了 Google 的流行移动平台。Android开发者们终于也能试试React了。本文就从https://原创 2015-09-16 12:02:20 · 1523 阅读 · 0 评论 -
Android任务流调度 - Init
Github PageInit Init帮助Android应用调度复杂的任务流(如应用初始化流程),如下一节图示的那种任务流,处理类型、优先级、多进程(像是每个进程都会执行application的onCreate),任务依赖,提高应用启动效率。尽管Init设计的初衷是为了应用(application)初始化,但并不局限于此,它可以于应用在任何复杂的初始化流程。Init不依赖于任何第三方库,使用Jav原创 2015-10-05 19:56:33 · 1479 阅读 · 0 评论 -
OkHttp是怎么工作的 - 从介绍到分析
OkHttpRetrofit使用OkHttp,Volley支持替换底层http栈为OkHttp,甚至Google的最新源码里,都用起了OkHttp,替换了原来用的HttpClient。笔者虽然一直听说OkHttp怎么怎么好,但始终云里雾里究竟它如何优越,所以抽空瞄了瞄源码,小小分析一下。官网说了什么okhttp官网HTTP/2 和 SPDY 支持允许所有到同一个host的请求共享一个socket。原创 2015-10-25 11:04:39 · 3477 阅读 · 0 评论 -
在Mac 10.11编译最新的Android 6.0
背景因为只有一台可怜的256G MBPR,并没有足够的空间去装一个Ubuntu,所以之前在10.10的时候尝试编译5.0未果后(各种版本问题),就无奈放弃了。 前几天在看最新的aosp官网介绍时候https://source.android.com/source/initializing.html#branch-60x,发现master和6.0.x的编译都使用了or later来描述对mac os原创 2015-11-25 14:34:02 · 1638 阅读 · 0 评论 -
从零开始的Android新项目11 - 组件化实践(1)
我个人一直是比较反感黑科技的,其中首当其冲的就是 插件化 以及 保活。作为一个开发者,除了研究技术,提高自己以外,是否应该考虑些其他东西呢?尤其是我们这些嵌入式系统(客户端)开发者,在依赖、受哺于系统生态下,是不是应该考虑一下,怎么反哺?怎么去更好地维护这个生态环境,而不是一味破坏、消耗它呢?原创 2017-02-06 11:49:23 · 3786 阅读 · 5 评论