Jfson‘s blog

慢慢来,比较快

Android 解耦框架(自定义View)

起因 项目越来越大,解耦越来越有必要。从架构上解耦mvc到mvp,从功能上解耦和拆分,这就用到了自定义View,自定义View往往也需要用到Activity/Fragment的生命周期。这时候通常做法是在Activity/Fragment中对View进行生命周期的调用透传。 如果自定义View的功能逻辑过于复杂后,再拆解出一个MVP层级,Presenter层和View层也需要再重复的透传一......

Glide&Fresco对比

貌似框架都被分析烂了,索性来个总结吧 优点Glide 多种图片格式的缓存,适用于更多的内容表现形式(如Gif、WebP、缩略图、Video) 生命周期集成(根据Activity或者Fragment的生命周期管理图片加载请求) 高效处理Bitmap(bitmap的复用和主动回收,减少系统回收压力) 高效的缓存策略,灵活(Picasso只会缓存原始尺寸的图片,Glide缓存的是多种规格),加......

Android maven 库上传

账号申请 bintray 申请账号。 2.新建一个名称为:maven 的maven库。 库 新建 Android Studio 项目,新建要上传的Module模块。 在根目录(项目所在)下的 build.gradle中添加库引用 1234567891011121314151617181920212223242526272829303132buildscript ......

Android Window

1.什么是Window 1.1、代码层面来看,Window是一个abstract类。 12345678910111213/** * Abstract base class for a top-level window look and behavior policy. An * instance of this class should be used as the top-level ......

Android 动画库对比(Lottie 和 SVGA)

Lottie 和 SVGA 对比 友情链接: SVGA 源码解析 现有方案 方案一: Gif / 帧动画 方案二: Native动画(属性动画/补间动画) 方案三:动画库 Lottie SVGA Keyframes Squall Gif 1.思路:一般Gif或者帧动画 的性能差是由于图过多,每秒种几十帧,每一帧都是一张图。一个小动画往往需要几十张图。如果变成资源下载,资源......

LruCache (Lru 算法)

LRUCache 1.Android 的缓存中不管是内存缓存和磁盘缓存都用到了LruCache,LruCache的核心思想就是LRU(Least Recently Used)算法 LRU 算法 LRU(Least Recently Used)直面翻译过来:最近最少使用,就是淘汰旧数据的策略,保留最近访问过的数据。如果需要加载新数据但空间不足的情况下,会按照最近访问时间排序,将最老的数据淘......

Reverse Integer

1.题目(LeetCode | 7 | easy): 123Reverse IntegerGiven a 32-bit signed integer, reverse digits of an integer.给定一个32位有符号整数,求整数的反转数字。 Example: 123456789例1: 输入: 123 输出: 321例2: 输入: -123 输出: -321例3: 输......

1. Two Sum

1.题目(LeetCode | 1 | easy): 12345678Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one s......

算法基础概念

算法的复杂度 算法的复杂度: 算法的时间复杂度和空间复杂度合称为算法的复杂度,一般不特别说明,讨论的时间复杂度均是最坏情况下的时间复杂度。 用于描述时间复杂度&空间复杂度的公式关键字 Big-O 时间复杂度:执行程序所需的时间。可以估算出程序对处理器的使用程度。一般用内层代码语句执行次数来统计 空间复杂度:执行程序所需的存储空间。可以估算出程序对计算机内存的使用程度,就是在运行过程中......

Glide(二)Request队列管理

入口上篇总结了下Glide利用fm和一个空Fragment 进行生命周期的管理,这里继续看load & into。不多说,上代码 12// 上篇分析了with,继续看下 load & intoGlide.with(this).load("url").into(...); 1.1 load 12345678910111213141516171819202......

Glide(一)生命周期管理

Glide 的解耦方式很独特。 相关文章:Fragment 如何跟Activity的生命周期进行绑定 1.1 Glide.with() 12Glide.with(FragmentActivity activity)// RequestManager with(FragmentActivity activity) 123public static RequestManager with(A......

Fragment 的生命周期来龙去脉

Fragment的生命周期我们都不陌生,但是其如何利用FragmentManager从Activity生命周期挂载而来的呢,尤其是看了glide源码后,发现其巧妙的利用了FragmentManager来绑定自己的生命周期,那么为了更清晰的深入理解,一起来看下6.0的源码是如何处理的。 FragmentActivity 1.从启动一个FragmentActivity开始。从onCreate......

android 水波纹点击效果

创建一个跟当前背景同名的xml文件至drawable-v21下即可拥有新特性水波纹点击特效。 123456789<?xml version="1.0" encoding="utf-8"?><ripple xmlns:android="http://schemas.android.com/apk/res/android&q......

android 中资源图片被系统相册扫描显示问题

问题 android .nomedia 打开相册,发现应用下载的图片被显示在其中,往往这时候我们不希望把其暴露给用户。 比如:视频、图片、音频都不需要暴露给用户。 解决方案 1.修改资源文件名 比如图片为img/png的格式修改为ing 等等,系统不认的格式 2.添加忽略文件”.nomedia”,在需要呗忽略的文件夹下创建一个名为”.nomedia”的空文件即可,系统应用即不扫描其......

构造者模式(Builder Pattern)

构造者模式(Builder Pattern) 建造者模式是及其常用的一种设计模式,经常提现在一些开源的三方库中来进行return 当前对象进行链式调用,如果你要开源一个niubility 的库,那么学习一下建造者模式是非常有必要的。 介绍:将一个复杂对象的构建与它的表示分离,用于属性参数很多时。 很多流行框架用到它,举个最典型的Retrofit的使用。 1234567// 忽略......

代理模式(Proxy Pattern)

代理模式在java 中的使用很常见,在Android中使用更为常见,类似代理一些生命周期,或者AOP编程以及业务解耦等等使用场景。 代理模式分为静态代理和动态代理。 静态代理1234567891011121314151617181920212223242526272829303132interface BaseView { void showText();}......

抽象工厂模式(Abstract Factory Pattern)

抽象工厂模式相对于工厂模式来说,最大的不同是:将工厂的共同特征抽取出来,提供一个生成工厂类。 1.举例制作果汁,首先提供两个接口类,果汁的种类和加冰多少。 1234567public interface MakeIce { void putIce();}public interface MakeJuice { void juicing();&......

工厂模式(Factory Pattern)

这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 1.举例制作果汁,首先提供两个接口类,果汁的种类和加冰多少。 1234567public interface MakeIce { void putIce();}public interfa......

单例模式

单例模式 最常用的单例模式,经常在项目中见,梳理后发现各种各样的单例,索性梳理一下。 自己创建自己,提供了访问其唯一对象的方式,可以直接访问,不需要实例化对象。 私有构造 自己创建唯一实例 1.懒汉式 非线程安全 lazy loading 不标准,不常用 123456789101112public class UserModel{ private st......

设计模式

设计模式 一直所熟知的设计模式: 单例模式、工厂模式、建造者模式等等。这些常用的之外,其他非常见的设计模式没有专门归类总结,借此机会,归纳一下咯。 设计模式总分为:创建型模式、结构性模式、行为型模式、J2EE模式 创建型模式 在创建对象的同时隐藏了创建逻辑的方式(非直接实例化) 工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Patter......

pv UV: