自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小嵩的博客

小嵩的博客

  • 博客(47)
  • 收藏
  • 关注

原创 Android-PickerView系列之源码解析篇(二)

前言  WheelView想必大家或多或少都有一定了解, 它是一款3D滚轮控件,效果类似IOS 上面的UIpickerview 。按照国际惯例,先放一张效果图:  以上是Android-PickerView 的demo演示图,它有时间选择和选项选择,并支持一二三级联动,支持自定义样式。   由于saiwu-bigkoo(吴哥)已经转行不干编程了,项目现已转交由我更新维护。目前我更新了

2017-03-02 12:40:47 27712 39

原创 Android-PickerView系列之介绍与使用篇(一)

声明:本文为博主原创文章,转载请注明出处:小嵩的博客 一、介绍Android-PickerView是一款仿iOS的PickerView控件,并封装了时间选择和选项选择这两种选择器,详细特性如下:WheelView —— 基础控件带有3D圆弧效果。支持文字、颜色、大小设置。支持背景颜色设置。支持item的分隔线设置。支持item间距设置。支持设置是否循环。...

2017-02-27 15:27:41 81283 41

原创 Flutter 基础之 GestureDetector 手势 (交互模型篇)

声明:本篇文章已授权微信公众号 YYGeeker 独家发布。博主原创文章,转载请注明出处:小嵩的博客介绍GestureDetector是Flutter的手势检测器,它会尝试识别与其非null的回调相对应的手势。如果此Widget组件具有子控件,那么它的大小调整行为将遵从该子控件件。如果它没有子控件,那么它将变大以适合父控件。默认情况下,带有不可见子控件的手势检测器会忽略触摸;可以通过行为控...

2019-08-05 18:16:20 5577 2

原创 Flutter 基础之 Theme 主题(样式篇)

声明:本篇文章已授权微信公众号 YYGeeker 独家发布。博主原创文章,转载请注明出处:小嵩的博客一、介绍Theme 类将主题应用于子控件,Theme(主题)它描述了应用程序的颜色和排版选择。Theme有两种:全局Theme和局部Theme。全局Theme是由应用程序根MaterialApp创建的Theme;而局部Theme是在应用程序某个区域范围中用于覆盖全局主题。Google官网介绍...

2019-08-05 18:12:43 19267

原创 Android 崩溃优化之Java篇(二)

声明:本篇文章已授权微信公众号 YYGeeker 独家发布。博主原创文章,转载请注明出处:小嵩的博客一、前言由于Android系统的碎片化、版本差异、厂商定制ROM等诸多原因,我们经常会遇到各种奇奇怪怪的崩溃,治理Android App的崩溃可谓是一个大老难题。对于一个大型应用来说,有时候可能一个很小的问题疏忽掉了,往往就可能影响成千上万的用户,最后对公司造成难以挽回的损失;也可能由于一个疏...

2019-07-02 15:33:12 1049

原创 Android 启动优化(一)

声明:本篇文章已授权微信公众号 YYGeeker 独家发布。前言对于一个APP来说,启动秒开,切换顺畅的体验能给用户留下良好的第一印象,启动速度对于用户体验及提高用户留存的重要性不言而喻。那么我们首先从它开始入手,从理论结合实际来谈谈有哪些优化启动速度及性能的技巧。一、介绍Google 官方介绍文档:https://developer.android.com/topic/performan...

2019-02-20 11:53:57 4304

原创 Android 性能优化杂谈(开篇)

声明:本篇文章已授权微信公众号 YYGeeker 独家发布导语随着近年来移动互联网的逐渐成熟稳定,风口浪尖褪去,移动端从高速增量转变成存量阶段,厮杀惨烈。一方面,互联网企业的增长也逐渐放缓,岗位需求骤降,竞争变得越来越激烈;而另一方面,随着移动互联网的发展,越来越多同质化的产品出现。用户对产品的质量及体验要求越来越高,白热化的竞争让app产品的生存压力不断加大。早期行业风口来临时,企业对移动端...

2018-12-26 10:21:33 338

原创 阿里 Andfix 介绍及原理解析

开源项目官方介绍:AndFix judges the methods should be replaced by java custom annotation and replaces it by hooking it. AndFix has a native method art_replaceMethod in ART or dalvik_replaceMethod in Dalvik.从...

2018-09-21 21:14:20 2854

原创 美团热修复 Robust 原理解析(二)

Robust属于 Java方案,它是基于Instant Run 实现的。我们知道InstantRun 对应三种更新机制: 冷插拔,我们称之为重启更新机制 温插拔,我们称之为重启Activity更新机制 热插拔,我们称之为热更新机制 如果不熟悉 InstantRun,可参考这篇文章: 《从Instant run谈Android替换Application和动态加载机制》实现原理有...

2018-08-30 17:11:14 5012

原创 美团热修复 Robust 方案接入(一)

方案介绍Robust是美团点评技术团队提供的Android热修复解决方案,基于InstantRun方案实现,属于方法级修复。Robust的补丁成功率高达99%,总体而言它是一个比较稳定的热修复方案,对于追求补丁稳定可靠的项目,接入Roubust是一个不错的选择。接下来我们介绍一下如何去接入Robust。一、接入步骤:1.1 在整个项目的build.gradle加入classpa...

2018-08-29 18:27:23 4279 4

原创 Tinker 合并及加载补丁过程源码分析 (三)

前言上篇文章我们讲了Tinker实现的主要原理,本篇文章主要对Tinker源码中补丁安装合并以及加载过程进行分析,本文分析基于Tinker 1.9.8 版本。主要内容有以下几点:安装合并补丁包过程加载补丁过程分析加载补丁资源过程分析加载补丁SO文件分析一、安装合并补丁包过程分析时序图如下:大致流程:1.1 在代理 Application 中初始化 Ti...

2018-08-27 11:57:35 2696 1

原创 阿里 Dexposed 热修复原理

前言Andfix 算是热修复方案中,native流派的典范了。在讲解Andfix之前,我们首先了解一下Dexposed,Andfix 是在Dexposed的基础上演进的。Dexposed介绍阿里手淘团队基于 Xposed 研发出来的 AOP 框架,方法级粒度,可以进行 AOP 编程、插桩、热补丁、SDK hook 等功能。它的热补丁方案原理图大致如下:: 从上图中我们可以看出,它...

2018-08-18 20:38:45 1044

原创 Qzone 超级补丁热修复方案原理

介绍Qzone 超级补丁技术基于dex分包方案,使用了多dex加载(multidex)的原理,大致的过程就是:把BUG方法修复以后,放到一个单独的dex文件,然后插入到dexElements数组的最前面,让虚拟机去加载修复完后的方法。该方案的灵感来源? 没错就是类加载机制,相信大部分同学都对它有所了解吧。ClassLoader 类加载机制Android应用程序本质上使用的是j...

2018-08-18 20:13:57 5593 1

原创 Android 线程池ThreadPoolExecutor详解

前言多线程并发是我们在开发中经常遇到的问题,提及线程池,首先我们得了解线程的相关知识。关于线程的详情介绍本文就不提及了,有不太清楚的朋友可以自行查找相关资料,下面简要概述一下进程和线程的概念,为后续内容(线程池)做铺垫。进程:每个app运行时前首先创建一个进程,该进程是由Zygote fork出来的,用于承载App上运行的各种Activity/Service等组件。 进程...

2018-02-23 18:08:52 8095

原创 ViewDragHelper (三)- 打造仿陌陌视频播放页(深入篇)

本篇为该系列的第三篇,将通过一个实际的业务需求来讲述ViewDragHelper的实际运用。目录ViewDragHelper 的介绍以及初步使用请阅读这篇: ViewDragHelper (一)- 介绍及简单用例(入门篇) ViewDragHelper 的源码以及Callback的详情介绍请阅读这篇: ViewDragHelper (二)- 源码及原理解读(进阶篇) 利用DrageHelpe

2017-11-07 21:01:41 2499 1

原创 ViewDragHelper(二)- 源码及原理解读(进阶篇)

声明:本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布本篇为该系列的第二篇,侧重讲解ViewDragHelper 的实现原理和源码逻辑,以及它所提供的Callback。目录ViewDragHelper 的介绍以及初步使用请阅读这篇: ViewDragHelper (一)- 介绍及简单用例(入门篇) ViewDragHelper 的源码以及Callback的详情

2017-10-10 21:02:13 2993

原创 ViewDragHelper (一)- 介绍及简单用例(入门篇)

随着入Android这个坑的时间越来越长,愈加觉得深入掌握原理以及技术输出的重要性,会使用轮子和造一个好轮子还是有天壤之别的。授人以鱼不如授人以渔,将一些经验分享出来,希望能够让更多的人更加深入地理解它,并帮助到有需要的朋友。本系列分为三篇,会由浅至深地对DrageHelper 进行详细讲解。本篇主要讲解如何利用DrageHelper 创建一个可拖拽的控件,以及它的基本使用方法。

2017-09-20 21:33:34 3004 6

原创 Tinker原理深入理解(二)

原理及介绍现阶段,Android热补丁技术大致分为以下两个流派:Native:代表有阿里的Dexposed、AndFix与腾讯的内部方案KKFix;Java:代表有Qzone的超级补丁、大众点评的nuwa、美团的robust、百度金融的rocooFix, 饿了么的amigo。Native流派与Java流派都有着自己的优缺点,它们具体差异可参考此文:微信Android热补丁实践演进...

2017-07-01 17:34:31 7831

原创 Kotlin 系列 - 基本介绍(一)

前言  开始接触Kotlin是在今年年初的时候,发现 Android 业内开源大神 Jake Wharton 在推荐使用它。当时想着,事情绝对没有那么简单。果然,Google IO 2017 上宣布了 Kotlin 会成为 Android First class开发语言。最近一两个月时间里 ,Android 圈被Kotlin各种刷屏。  对kotlin语法不太了解的话,可以通过以下网站学习:

2017-07-01 15:27:33 980

原创 Dalvik与ART的介绍及区别(一)

Android Runtime(缩写为ART),在2013年作为Android 4.4系统中的一项测试功能正式对外发布,Android 5.0开始作为正式的运行时库取代了以往的Dalvik虚拟机。ART能够把应用程序的字节码转换为机器码,是Android所使用的一种新的虚拟机。而ART采用Ahead-of-time(AOT)技术。改善了性能、垃圾回收(Garbage Collection)、应用程序除错以及性能分析

2017-06-23 11:39:21 2395

原创 微信Tinker 热修复介绍及接入(一)

热修复(HotFix)是以补丁的方式动态修复紧急Bug,不再需要重新发布App,不需要用户重新下载覆盖安装的方式来实现代码的替换修改。这里就不多啰嗦了,可以自行搜索网上的介绍。目前主流HotFix方案对比...

2017-06-22 20:34:22 4178

翻译 Android O (8.0) 新特性介绍

Android O 功能和 API(文章内容均来Google开发者官网,有需要可自行翻墙查看更多资料)Android O 为用户和开发者引入多种新功能。本文重点介绍面向开发者的新功能。请务必查阅 Android O 行为变更以了解平台变更可能影响您的应用的领域。通知在 Android O 中,我们已重新设计通知,以便为管理通知行为和设置提供更轻松和更统一的方式。这些变更包括:   通知渠道:And

2017-06-15 16:35:45 16200 5

原创 Android4.2系统辅助功能打开时,加载WebView导致空指针异常解决记录

最近负责APP错误统计分析,修复线上一些BUG,有一个这样的问题,日志如下:java.lang.NullPointerException at android.webkit.AccessibilityInjector$TextToSpeechWrapper$1.onInit(AccessibilityInjector.java:753) at android.speech.tts.T

2017-06-01 10:37:20 2214

原创 仿美团炫酷动画效果的A-Z字母排序侧边库

EasySideBar一款按字母排序的库,已封装好城市数据,可定制化强,也可以下载源代码用Module的形式引入自己改一改来使用,也可稍做改造定制成通讯录。手指触摸选中的屏幕区域,A-Z字母会有偏移动画,防止手指遮挡住字母,很大程度上提升了交互和用户体验度。觉得还不错的话欢迎Star ~使用步骤:1.添加Jcenter仓库 Gradle依赖:javacompile 'com.contrarywind

2017-04-26 09:44:27 2919 2

原创 Android实用的优惠券控件

前言最近需要做一个优惠券功能,于是找了找,发现网上大多数优惠券控件的都是直接利用Paint绘制一个白色的新图层然后叠加上去,但是这样处理的话,当背景不是纯白色的时候,就会暴露出如下图问题:对于有点强迫症的人来说,看着怎么都有点难受。好吧,俗话说自己动手丰衣足食,咱就自己动手弄个更加完善的出来。完整代码项目地址在文章尾部有链接,需要的可以自行下载。正文为了解决掉边缘锯齿的问题,我用另外的思路实现了这个

2017-04-25 10:01:16 2947

原创 一个demo让你彻底搞懂观察者模式

介绍观察者模式也被称为发布-订阅(Publish/Subscribe)模式,它属于行为型模式的一种。观察者模式定义了一种一对多的依赖关系,一个主题对象可被多个观察者对象同时监听。当这个主题对象状态变化时,会通知所有观察者对象并作出相应处理逻辑。UML观察者模式定义了四种角色:抽象主题、具体主题、抽象观察者、具体观察者。抽象主题(Subject):该角色是一个抽象类或接口,定义了增加、删除、通知观察

2017-04-06 11:53:18 1107

翻译 Android 5.0新特性

注:本文是从谷歌官网翻译过来的,放这里便于查阅和消化理解,更多详细知识点请自备梯子访问官网~API 级别:21 代号LAndroid 5.0 除了提供诸多新特性和功能外,还对系统和 API 行为做出了各种变更。本文重点介绍您应该了解并在开发应用时加以考虑的一些主要变更。如果您之前发布过 Android 应用,请注意您的应用可能受到 Android 5.0 中这些变化的影响。

2017-04-01 15:40:57 1062

翻译 Android 6.0新特性

注:本文是从谷歌官网翻译过来的,放这里便于查阅和消化理解,更多详细知识点请自备梯子访问官网~Android 6.0 (M) 为用户和应用开发者提供了新功能。本文旨在介绍其中最值得关注的 API。着手开发要着手开发 Android 6.0 应用,您必须先获得 Android SDK,然后使用SDK 管理器下载 Android 6.0 SDK Platform 和系统映像。

2017-04-01 15:35:50 1241

翻译 Android 7.0 新特性

Android 7.0 Nougat 为用户和开发者引入多种新功能。本文重点介绍面向开发者的新功能,多窗口支持,直接启动,支持VR等诸多新特性。

2017-04-01 15:20:22 2373

转载 公共技术点之依赖注入

前言最近没啥工作任务,看资料学习中。这是我看到的最简洁明了的一篇关于依赖注入的文章,扔物线大神写的,分享一下。不得不赞,逻辑清晰,文字简洁,以后写文章可以学习一下他的写法和表达思路。《公共技术点之依赖注入》 —— 分析者:扔物线,校对者:Trinea 依赖如果在 Class A 中,有 Class B 的实例,则称 Class A 对 Class B 有一个依赖。例如下面类 Human 中用到

2017-03-28 17:59:28 408

原创 设计模式—浅析三种工厂模式的特点

前言  简单工厂模式,工厂方法模式和抽象工厂模式都是属于创建型设计模式,并且这三种创建型模式都不需要知道具体类,我们需要掌握的是一种思想,就是在创建一个对象时,需要把容易发生变化的地方给封装起来,来控制变化(哪里变化,封装哪里),以适应客户的变动,项目的扩展。   但究竟这三种设计模式有什么异同呢?下面根据这三者之间的特点,优点,缺点,适用范围进行比较,让我们更为清晰直观地理解和区分它们。

2017-03-06 22:01:15 2705

原创 Android-PickerView系列之封装篇(三)

注:此文交由跟我一起维护Android-PickerView 项目的伙伴totcw写的,友情链接:http://blog.csdn.net/totcw一、概述这是Android-pickerview系列的第三篇文章,主要是讲解一下时间选择器TimePickerView是如何封装的,关于怎么使用这个控件的可以查看Android-PickerView系列之介绍与使用篇(一),想要研究Wheel...

2017-03-02 09:16:12 5198

原创 Android-PickerView 说明文档(API)

Android-PickerView(3.x版本)方法名与参数说明Builder(Context context, OnTimeSelectListener listener)和build()这两个方法必须实现,其余都是可选项 方法名称 适用范围 描述 最低版本限制 Builder(Context context, OnTimeSelectListener listener)

2017-02-26 20:09:54 3340

翻译 Android AIDL机制

Android 接口定义语言 (AIDL)(内容来自Google 官方API文档,若有需要可自带梯子去官网查看)目录定义 AIDL 接口创建 .aidl 文件实现接口向客户端公开该接口通过 IPC 传递对象调用 IPC 方法另请参阅绑定服务AIDL(Android 接口定义语言)与您可能使用过的其他 IDL 类似。您可以利用它定义客户端与服务使用进程间通信 (IPC) 进行相互通信时都认可的编程接...

2017-02-14 14:35:29 955

原创 Android双波浪自定义控件(DoubleWaveView)

发现淘宝个人页顶部的自定义控件很炫酷啊有没有(IOS端),它这里是一个动态的双波纹效果,由于IOS端的效果它有周期性地渐变振幅的功能,比较复杂。对于振幅的渐变效果,当时就想着是怎么实现的,冥思苦想了老半天不得果(每次都重新计算设置正弦函数值,有点太耗费性能了)。   后面又拿起安卓机看了一下安卓客户端的效果,结果发现是个静态的双波纹,What ? 和IOS的差距咋那么大? 想了想,淘宝应该是出于对

2017-02-14 12:26:49 7569 14

原创 Android getResources().getColor() 过时 替代方法

在Java代码中设置控件的Color时,用getResources().getColor()出现如下提示:getColor方法在Android 6.0即API 23中 已经过时,替代方法为:ContextCompat.getColor(context, R.color.black); (总是记不清替代方法是啥来着了,忘了三四次,干脆记录下来,免得以后又找来找去的)

2017-02-10 09:31:03 36099 4

原创 设计模式—建造者模式及实例(BuilderPattern)

建造者模式(Builder Pattern)也称生成器模式,它属于创建型模式。

2017-01-23 17:29:50 3544 1

原创 Android精仿淘宝/QQ空间标题栏渐变效果

最近在淘宝上囤年货买买买的时候,注意到淘宝购物详情页的渐变效果,觉得效果还是挺不错的,有种似曾相识的感觉,没错,好像QQ空间的标题栏也是类似的做法。鉴于这种效果在平时可能会用得比较多,所以就自己研究了一下然后把它实现出来了,项目完整demo在文章底部有链接,大家可下载参考研究。文章原创,转载请注明地址:小嵩的CSDN博客,地址:http://blog.csdn.net/qq_22393017本文会详

2017-01-18 17:12:10 6038 2

原创 《勿忘初心,勿忘前行》——2016年度总结

不管怎样,依旧要热爱生活。不论过去的一切看起来有多么糟糕,但当下永远都是积累自己并创造未来的最佳时机。不要总是等到一切都错过了,才后悔当初为什么没有好好把握时机,把握机会,没有努力什么的,人生只有一次!勿忘初心,勿忘前行~!

2017-01-15 13:08:26 1265 2

原创 Material Design的前世今生(介绍篇)

Material Design 设计风格以及详细介绍

2017-01-13 16:49:40 1369

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除