Android动画框架总结
概述 在Android中, 动画分为两种: Animation和Transition. 其中Animation分为View Animation和Property Animation. Transition是用于Activity和Fragment的转场动画. View Animation的作用对象是整个View对象, 它只支持4种动画效果: 平移, 缩放, 旋转和透明度动画. 另外, View
概述 在Android中, 动画分为两种: Animation和Transition. 其中Animation分为View Animation和Property Animation. Transition是用于Activity和Fragment的转场动画. View Animation的作用对象是整个View对象, 它只支持4种动画效果: 平移, 缩放, 旋转和透明度动画. 另外, View
关于Andorid事件分发机制的解析, 网上一堆文章, 并且写得很详细, 因此这里只写写一些总结, 不涉及原理的解析. 分发对象 在Android中, 点击手势被封装成MotionEvent对象. 因此对于点击事件的分发, 实质上是对MotionEvent对象的分发. 对于单点触控, 有下面两种情况的手势对应MotionEvent的状态: 点击 -> 松开 : ACTION_DOWN
源码浅析 概述AsyncTask是一个执行异步任务的小型框架,里面封装了Handler,使得使用者不必关心线程之间的切换,虽然现在执行异步任务都不会用AsyncTask,用得更多的是Bolt Tasks 和RxJava,但是AsyncTask中的设计思想还是很多值得学习的,比如:内部中,串行运行任务时的队列控制,handler的将结果回调回主线程,以及如何取消正在执行的任务等。。
概述 UIL是一款经典的图片加载框架,该类库的设计运用了多种设计模式,使得它的可拓展性增加,比如缓存的策略,如果默认的缓存策略不能够满足你的需求的话,你完全可以自己定制自己的缓存策略。 使用者不必关心加载图片时会发生OOM,其中发生的概率还是很小的,因为类库中对图片进行了三级缓存,其中的内存缓存使用了双级缓存(强引用和弱引用)。 库中考虑到用户可能会使用ListView,GridView或者RecyclerView来展示图片,因此在库中提供了一个PauseOnScrollListener来控制滑动时是否要加载图片。 这次,简单来分析类库的使用流程
概述:volley的特点都大家很清楚,volley适合数据量小且通信频繁的请求,但是不适合数据量大的请求。volley有这样的特点是由其内部网络优化和缓存所决定的,这次分析其中的原理。
回顾在上一篇中, 我们从源码的角度分析了Dagger的工作原理, 在这一篇中, 我们来重点讲解Dagger2依赖组织的方式, 在讲解之前, 我们先来理解Component dependencies和SubComponent Component dependencies VS SubComponent为了提高一个Component中代码的复用度, 我们可以利用 Component dependenc
LayoutParams认知 Q: 什么是LayoutParams? 它跟view的关系是什么? 什么是LayoutParams? 我们在XML布局中定义的layout_xx属性,最终都会以Java代码的形式展现出来, 而LayoutParams就是这些layout_xx属性在Java层的映射, 也就是说LayoutParams是view在xml布局中layout_xx的属性容器. 可见,
回顾上一篇我们主要介绍了如何用Dagger2在Android应用中进行依赖注入, 在这一篇中, 我们主要来理解Dagger2中的原理, 毕竟知己知彼后才用得踏实 API关系 Provider: provider是一个接口, 它的作用是包装被依赖的类 Factory: 继承于Provider, 作用是创建依赖的对应实例 MembersInjector: 也是一个接口, 作用是将依赖注入到需要依赖的
常用注解解释在学习Dagger2之前,我们最好就是将Dagger2中的常用的注解的含义捋清一遍, 这样上手Dagger2就不会显得那么难,所以下面我准备介绍Dagger2中常用的注解的含义,这些注解包括 Inject Provides Module Component Qualifiers Scope InjectInject的中文意思是注射,在Dagger2中它在不同的地方代表不同的含义.当
Picasso中的线程池 Picasso中的线程池主要是对对网络状态进行了监听,并且包装了一个FutureTask实现请求的优先级比较。 分析: 首先在Picasso中,定义了一个优先级枚举类型: 12345678910/** * The priority of a request. * * @see RequestCreator#priority(Priority) */ public enum Priority { LOW, NORMAL, HIGH }
基本用法:加载图片: picasso支持从Resource,MediaStore,content,contacts,url 加载图片。 123Picasso.with(this) .load(uri) .into(mImageView); 以上是最简单的通用加载图片的方法