
Android进阶
Exploring1024
专注开源库
展开
-
了解下,这几个字节码编程入门案例
了解下,这几个字节码编程入门案例在 AOP 利器 ASM 基础入门 博文中,介绍了 ASM 的基础知识和整体 API 结构,让我们对 ASM 有一个初步的认识。本篇博文将介绍三个案例来加深对 ASM 接口的理解。删除日志:删除项目中的所有 Log 输出添加日志:给项目添加 Log 日志输出添加 try...catch 异常捕捉:给项目的所有方法添加异常步骤文中的案例皆是以 Android 项目为基础,所以先介绍一些基本概念。1. 基本概念1.1 Transform APIAn原创 2020-12-15 22:34:22 · 694 阅读 · 0 评论 -
AOP 利器 ASM 基础入门
1. ASM 介绍ASM 是一个 Java 字节码操作框架,它能用来动态生成类或者增强既有类的功能。ASM 可以直接生成二进制 class 文件,也可以在类被加载到 Java 虚拟机之前动态改变类行为。ASM 框架中提供了常见的字节码分析和生成工具,可以快速进行类的生成或分析转换。在 Android 开发中, Android Gradle 1.5 版本后提供的 Transform 机制, 它允许第三方的 Plugin 插件在 .class 文件打包成 dex 之前进行动态修改,这就为动态修改字节码文件提原创 2020-12-13 14:19:01 · 1621 阅读 · 0 评论 -
设计模式——适配器模式
适配器模式,即通俗理解,适配无法直接使用的接口以便可以利用。适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式的组成角色目标角色(Target):适配所期待的得到的接口,目标角色可以是类或接口。这里,我更倾向于是接口,因为我理解目标角色更倾向于一种接口规范。源角色(Adaptee):需要适配的接口或类原创 2018-01-25 12:24:02 · 367 阅读 · 0 评论 -
设计模式——装饰器模式
装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰器模式(Decorator Pattern)的核心作用就是动态地给一个对象添加一些额外的职责功能。适用于透明且动态扩展类功能时。这点注意跟适配器模式的区别:适配器模式主要是为了接口的转换,而装饰者模式关注的是通过组合来动态的为被装饰者注入新的功能或行为(即所谓的责任)。原创 2018-01-25 12:25:39 · 495 阅读 · 0 评论 -
设计模式——工厂模式
工厂模式核心是封装对象的创建接口,将new对象的操作封装起来,方便创建使用、管理对象。工厂模式的分类简单工厂模式(Simple Factory)工厂方法模式(Factory Method)抽象工厂模式(Abstract Factory)工厂模式适用于:在编码时不能预见需要创建哪种类的实例。系统不应依赖于产品类实例如何被创建、组合和表达的细节简单工厂模式简单工原创 2018-01-19 23:56:57 · 368 阅读 · 0 评论 -
Android D8 编译器 和 R8 工具
Android 安装包的后缀都是 .apk, APK 是 Android Package 的缩写。在 APK 打包编译的过程中,会涉及到 javac 工具将 .java 文件编译为 .class 文件,然后 .class 文件经过脱糖由 dex 工具打包为 .dex 文件。javac:用于将 .java 文件编译为 .class 文件;desugar:用于将 Java 8 中的特性在 An...原创 2019-05-12 16:13:34 · 8704 阅读 · 3 评论 -
设计模式——策略模式
策略模式是使用面向对象的继承和多态思想,将同一接口的不同算法实现封装在不同的类中,从而使他们相互替换,达到客户端环境不受算法变动的影响,降低耦合。策略模式(StrategyPattern)也成政策模式,通过定义抽象类或基类的策略,来生成不同实现的算法家族,以便各个具体策略类(ConcreteStrategy)能够进行替换,降低耦合。策略类的组成角色:环境类(Context):持原创 2018-01-25 12:22:25 · 356 阅读 · 0 评论 -
设计模式——单例模式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。单例模式在实际的开发过程中,使用最常见。针对频繁使用的类,我们可以将它定义为一个单例来避免类对象频繁的创建销毁,提高效率。单例模式有以下特点:单例类只能有一个实例单例类必须自己创建自己的唯一实例单例类给其它对象提供这一实例单例模式原创 2018-01-22 16:27:40 · 316 阅读 · 0 评论 -
Android中的MVP架构初探
说来惭愧,MVP的架构模式已经在Android领域出现一两年了,但是到今天自己才开始Android领域中的MVP架构征程。闲话不多说,开始吧!一、架构演变概述我记得我找第一份工作时,面试官问我“android是否属于MVC架构模式,简述一下”。确实,Android的整体设计结构就是MVC的设计模式,在J2EE的开发中,使用的也是MVC模式,MVC模式是一个经典,经历了几十年的考验。Android项原创 2016-03-30 14:29:16 · 5344 阅读 · 2 评论 -
Android项目实战之战途牛
最近越来越懒了,所以干脆给自己找点事让自己忙起来。所以就想开个专栏,通过模仿学习热门应用来达到督促自己学习知识。目的就是这样,别无它意。作为开篇,就拿途牛作为挑战吧!在开发过程中,可能会用到一些资源,所以就通过反编译应用获取了,非常感谢途牛美工团队。嘎嘎。下面就正式开始了。一、反编译途牛app,获取资源不懂的伙伴可以参照我的博客,Android混淆、反编译基础教程,具体的步骤我就不说了,可以参照上面原创 2015-12-22 22:32:36 · 2081 阅读 · 1 评论 -
带着问题学习Android中View的measure测量
在进行研究measure原理之前,我们先带着这三个问题来想想。因为我是遇到这三个问题才开始研究measure的源码,所以我也把下面的三个问题当做引子。调用measure(int widthMeasureSpec, int heightMeasureSpec)方法传递的参数是什么?为什么调用measure方法View控件没有进行测量?如何强制view进行测量?在进行研究之前,我们先来看一个简单原创 2016-01-13 14:48:37 · 5624 阅读 · 1 评论 -
LayoutAnimationController源码深入学习
LayoutAnimationController源码深入学习一、概述LayoutAnimationController用于一个布局或者ViewGroup的动画控制器,它能够让每个子View在不同的时间点分别执行相同的动画,ViewGroup通过LayoutAnimationController计算每个子view的动画开始的时间间隔,这个时间的间隔是通过某种规律特点进行计算,比如它在viewGrou原创 2016-02-19 13:56:37 · 1505 阅读 · 1 评论 -
LayoutAnimationController实战案例
LayoutAnimationController实战案例 在上篇博客中,我们已经学习了LayoutAnimationController的基本使用,探究了LayoutAnimationController的源码,在这篇博客中,我们会实战几个小案例来加深印象。上篇博客,LayoutAnimationController源码深入学习案例一我们先看看效果图:在相托图中,点击按钮,其它按钮从下往上展原创 2016-02-19 18:28:08 · 2714 阅读 · 1 评论 -
Android View初始化基本流程
Android View初始化基本流程 问题起因是来源于困扰我的一个问题,前段时间研究了View的绘制流程,突然想搞明白Activity中是如何启动view的绘制。所以就去学习了Activity的源码。首先看一张Activity的界面关系图: public class MyActivity extends Activity {原创 2016-03-23 16:15:32 · 5282 阅读 · 1 评论 -
Android消息机制浅析——原理探究
Android消息机制浅析——原理探究 在博客Android消息机制浅析——基本使用 中,我们介绍了Android消息机制的基本使用以及一些常用方法的使用。本篇,我们就探究下源码。系列地址: Android消息机制浅析——基本使用 Android消息机制浅析——原理探究 Android消息机制浅析——面试总结一、概述在Android消息机制浅析——基本使用一文中,我们对Android消原创 2016-04-05 13:55:04 · 1963 阅读 · 0 评论 -
带着问题学习Android中View的layout布局和draw绘制
在博客带着问题学习Android中View的measure测量中,我们学习了view的measure测量的原理,以及解决了我们实际项目中遇到的一些问题的解决方案。在这篇博客中我们同样根据问题去学习下layout和draw的源码。引导问题在自定义view中为什么onMeasure()方法会调用多次?目的是什么?在自定义view中draw()的绘制步骤是什么?layout方法源码分析概述 在自原创 2016-02-29 11:25:27 · 2083 阅读 · 1 评论 -
Android动画解析(一)—— Frame Animation(帧动画)
动画在我们实际开发中占有很重要的地位,一个优秀的动画能为我们的app应用增色很多,同时一个优秀的动画衔接能够增加我们app的逻辑展示。在Android系统中,系统给我们提供了几种动画的支持,分别是Frame Animation(帧动画)、Tween Animation(补间动画)以及3.0系统以后增加的Property Animator(属性动画)。这些动画的熟练使用可以帮助我们设计出perfect原创 2016-03-05 21:35:15 · 7240 阅读 · 3 评论 -
开源项目circular-progress-button源码解析
Android值Drawable系列: [一起来说说那些你不知道的Drawable](http://blog.youkuaiyun.com/mr_dsw/article/details/50998681) [Android实践之Drawable的使用](http://blog.youkuaiyun.com/mr_dsw/article/details/50999818) [开源项目circula原创 2016-04-26 20:47:32 · 6505 阅读 · 1 评论 -
ViewPager动态变换效果之SCViewPager源码解析
序言: 我们知道在ViewPager中给我们提供了PageTransformer接口用于ViewPager切换的动画效果实现,一般我们需要实现这个接口里的transformPage方法实现切换的动画效果,这样我们就实现了ViewPager中Item之间切换的效果,例如下面的效果(摘自鸿洋博客图片): 我们发现,这里实现的是Item之间切换的效果,但是每个Item页里面的View并没有动画效果,我原创 2016-05-03 13:42:21 · 3873 阅读 · 2 评论 -
Android消息机制浅析——面试总结
前面两篇我们介绍了Android消息机制的使用以及分析了流程,这篇也是最后一篇,我们就播播面试题吧!系列地址: Android消息机制浅析——基本使用 Android消息机制浅析——原理探究 Android消息机制浅析——面试总结面试题如何将一个Thread线程变成Looper线程?Looper线程有哪些特点?简述下Handler、Message、Looper、MessageQueue原创 2016-04-06 14:01:53 · 2259 阅读 · 0 评论 -
开源日历控件DatePicker源码解析
在一些项目开发中,会使用日历去标识事务,所以根据美工出的效果图,我们可以采用不同的方法去实现。比如通过GridView扣扣你敢、自定义View实现日历控件,这些都是我们解决问题的手段,我也实现过一个自定义日历控件(Android自定义控件之日历控件55993)),由于我只是粗糙的进行实现,并没有进行过多的在控件的可扩展性上进行打磨设计,所以在本篇文章中,我秉着学习的态度分析下爱哥的鼎力巨作Date原创 2016-05-06 20:54:31 · 7518 阅读 · 4 评论 -
Android 换肤小结
现在很多App应用都有切换主题的功能,极大的改善了在用户体验。比如我们常见的白天/黑夜模式切换,很好的满足了在黑夜模式的体验,所以这篇文章就来总结下常见的换肤实现。随着Android的不断发展,现在在很多的应用中都有切换主题的功能,极大了提高了app的用户体验,所以趁着这段时间工作的事情比较少,来总结下常见的android主题切换的实现方式。核心本质就是涉及到的资源或者主题所存放的路径原创 2016-10-31 22:58:50 · 790 阅读 · 0 评论 -
Android开源换肤解析
在上一篇Android小结博客中我们简要的介绍了常见的换肤手法,换肤可以贯穿在整个Android开发中,所以必然可以做成一个框架集的形式。下面我们就来看看一些Android换肤开源组件。一、Colorful基于Theme的换肤Colorful是一个基于Theme实现的开源控件,作者是mr_simple。Colorful无需重启Activity、无需自定义View,方便的实现日间、夜原创 2016-12-05 00:03:16 · 1235 阅读 · 0 评论 -
ButterKnife基础使用总结
一、前言1、ButterKnife简介butterknife是出自Android大神JakeWharton之手的一个开源库,它通过注解的方式来替代android中view的相关操作。专注于Android系统的View,可以减少大量的findViewById以及setOnClickListener代码,可视化一键生成。这个开源库可以让我们从大量的findViewById()和seto原创 2017-02-01 23:30:12 · 1551 阅读 · 2 评论 -
Android提高篇之Adapter的抽象整合
Android提高篇之Adapter的抽象整合最近在学习框架的知识,想根据公司业务的需要结合前台后台的特点,整出一个手机端的通用网络框架,所以就去学习下Simple哥的博客,看了网络框架的专栏。学习了分层和重构的优缺点。突然想到自己项目中大量的自定义Adapter中有大量的重复部分,是否可以把这些部分抽出来进行集中处理呢?下面我们就来试试。1、我们定义一个所有Adapter的父类,继承在BaseAd原创 2015-10-22 23:18:24 · 1470 阅读 · 0 评论