原创 手動模擬Retrofit2 + OkHttp3的攔截器工作原理

模擬攔截器工作原理,加深對責任鏈模式的理解 Request.java public class Request { String RequestParams=""; } Response.java public class Res

原创 View的移動方式

View的移動方式View的移動方式View座標系scrollTo()/scrollBy()setTranslationX/Y、setX/setY使用平移動畫或者屬性動畫設置View的LayoutParams來移動Viewlayout

原创 HashMap實現原理分析

1. HashMap的數據結構 數據結構中有數組和鏈表來實現對數據的存儲,但這兩者基本上是兩個極端。       數組 數組存儲區間是連續的,佔用內存嚴重,故空間複雜的很大。但數組的二分查找時間複雜度小,爲O(1);數組的特點是:尋址容易

原创 View學習筆記(2)-View的座標系以及View的滑動1

筆記來自Android羣英傳與Android開發藝術探究。 View的滑動本質來說就是移動一個view,改變當前所處的位置,他的原理和動畫的實現非常相似,都是通過不斷改變view的座標來實現滑動效果。所以要實現view的滑動,需要監聽用戶

原创 自定義ViewGroup---measureChildren

1.遍歷所有的子view /** * 遍歷所有的子view去測量自己(跳過GONE類型View) * @param widthMeasureSpec 從父容器傳遞給子容器的佈局需求(寬) * @param h

原创 Gson解析泛型對象時TypeToken的使用方法

參考:https://www.jianshu.com/p/cdea9a8db18b package com.chen.fanxing; public class Foo<T> { T value; @Override p

原创 深入源碼解析Android中的Handler,Message,MessageQueue,Looper

轉載:https://blog.csdn.net/iispring/article/details/47180325 本文主要是對Handler和消息循環的實現原理進行源碼分析,如果不熟悉Handler可以參見博文《 Android中Ha

原创 Java內存管理

在Java中內存管理,引用分爲四大類,強引用HardReference、弱引用WeakReference、軟引用SoftReference和虛引用PhantomReference強引用HardReference:    HardRefer

原创 自定義ViewGroup---理解1

—–記錄自定義View學習過程中的點點滴滴,學習自定義ViewGroup的目的是爲了自定義控件 1.自定義ViewGroup之前要理解AndroidFrame中View的繪製過程 /** view的繪製過程: 當Activ

原创 深入理解IntentService(HandlerThread的經典應用)

IntentService 簡介 public abstract class IntentService extends Service { ....... } IntentService是一個抽象類,繼承Service

原创 Android Studio 出現 Gradle's dependency cache may be corrupt 錯誤分析

解決辦法: 重新配置gradle路徑。

原创 Java數據結構和算法(一)數組

Java數據結構和算法(一)數組 分類 初始化 存儲 數組爲何比鏈表查詢快? 使用場景 分類 基本類型數組 對象數組 初始化 靜態初始化 動態初始化 public static void main(String[] a

原创 組件化遇到的問題

1.TransformException: java.util.zip.ZipException: duplicate entry: android/support/design/widget/CoordinatorLayout$1.c

原创 設計模式之靜態代理與動態代理

1,什麼是代理模式?代理模式的作用是:爲其他對象提供一種代理以控制對這個對象的訪問。2,代理模式有什麼好處?在某些情況下,一個客戶不想或者不能直接引用另一個對象,而代理對象可以在客戶端和目標對象之間起到中介的作用。靜態代理模式代碼:pac

原创 深入理解HandlerThread

1.HandlerThread 是什麼? 英文解釋: Handy class for starting a new thread that has a looper. The looper can then be used to cr