原创 引用其他project的module,根據參數自動配置依賴,repo管理多個 Project

前言 在開發中遇到這樣一個問題,在工作的project(以下簡稱Project A)中,用到了Fragmentation(以下簡稱Project B) 庫的三個module,這個庫是我在維護,平時更改庫中的一些bug,需要先使用

原创 Android 在動畫結束回調onAnimationEnd()中remove view的崩潰解決方法及源碼分析

問題: 問題描述起來很簡單,就是在動畫結束的時候,調用父view刪除子view,出現崩潰,信息如下: java.lang.NullPointerException Attempt to read from field 'int a

原创 Fragment.setNextAnim(int) on a null object 解決方法及源碼詳解

前言 相信遇到這個問題的小夥伴,一定很無奈,要想知道這個問題的原因,並根治這個問題,需要研究fragment系列的大部分源碼。網上很多文章,只是簡單描述了這個問題如何出現(使用的方法很麻煩,下面我回介紹一種更容易去重現這個問題的方

原创 記錄我修改JakeWharton的ButterKnife bug的實戰經驗

前言 不得不說ButterKnife是一個很有學習價值的項目。我從學習源碼,修改bug後,最後pull request,學到了很多東西。如果你對Butterknife 源碼還不瞭解,建議先看一下這篇文章。本文章不介紹基礎的源碼流程

原创 Android View 的scroll相關方法屬性 以及Scroller彈性滑動原理

最近在修改fragmentation 的bug時,其中SwipeBackLayout 的實現使用是ViewDragHelper ,而ViewDragHelper 使用的是OverScroller,OverScroller 在大部分

原创 Android 仿微信表情雨 、紅包雨 支持資源回收再利用

Github 項目:https://github.com/JantHsueh/EmojiRain 爲了後續能及時看到更新,建議star一下,歡迎issue 表情雨 ViewGroup 微信聊天中的表情雨效果一樣。 相比於其他項目

原创 Android 微信 圖片無法分享

最近在做微信分享的功能,圖片分享,小程序分享,由於圖片的原因,有的圖片總是分享不出去。於是對這塊進行了一些深入分析 分析過程 1、關於進程間通信 經過查看log日誌,發現已經調用了微信的WXEntryActivity,並且我的Ap

原创 調用removeViewInternal、removeView 屏幕還是顯示被刪除界面 的解決方法和源碼分析

這是在使用Fragmentation時遇到一個問題,在這個庫中很多人都遇到這個問題。追求極致體驗的我,只好對源碼進行修改了。源碼的問題,我已經修改了,會在近期開源出來。 下面把這個問題的核心抽取出來,進行分析。 問題: 1、rem

原创 Android N 7.0 應用間共享文件(FileProvider)

Android N 之前的 Uri 常規Uri有兩種: 媒體文件的Uri是content://, 表示這是一個數據庫數據。去數據庫查詢正常返回。 其他的文件Uri是file://, 表示這個是一個文件。這個uri是通過Uri.f

原创 安裝完APP後,點擊“打開”按鈕,打開APP。回到桌面,點擊桌面icon打開APP,出現多個app實例

問題 安裝完APP後,點擊“打開”按鈕,打開APP。回到桌面,點擊桌面icon打開APP,出現多個app實例 How to prevent multiple instances of an Activity when it is

原创 Fragment has not been attached yet 解決方法及源碼詳解

前言 在使用Fragment的時候,在內存重啓的後,很容易出現一些難以預期的bug,下面將繼續一邊分析源碼,一邊看看這個bug是怎麼產生的。 這個報錯的原因,可能和你的情況並不盡然相同。但是你可以通過對源碼的理解,來加深對frag

原创 TextView 在xml 中設置圖片大小

TextView xml中只能設置圖片的位置,但是不能再xml中設置圖片的大小 android:drawableStart="@drawable/pic" 在代碼中可以啊對textview 的圖片進行設置,主要代碼如下: //

原创 Java AnnotationProcessor 和 Kotlin Kapt 編譯期調試代碼——實踐與原理

前言 Java 的註解處理器AnnotationProcessor 和 Kotlin的註解處理器 Kapt 會在編譯期,根據代碼的註解,生成代碼。對處理註解的代碼進行調試,可以更快的定位問題。那麼就需要在編譯期調試代碼 網上很多文

原创 RxJava之七——RxJava 2.0 圖文分析create()、 subscribe()、map()、observeOn()、subscribeOn()源碼

前言 16年 的時候寫過兩篇關於Rxjava 1.0 的源碼分析,時過境遷,現在早已是2.0 了。2.0 的代碼邏輯,封裝,更爲易懂,也包含了 一些新特性背壓,面向切面等等。所以決定,寫篇文章分析RxJava 2.0 關於RxJa

原创 parameter must be a descendant of this view 報錯解決方案及Android 獲取View焦點源碼分析

前言 最近的一系列源碼分析,都是基於一個錯誤,逐步深入源碼。這樣更有目的性的看源碼,思路會更清楚一點。 網絡上有文章給出了有針對性的解決方案。我通過源碼給出更普通的解決思路,這個問題,沒有特定的解決方案,所以只能領會精髓後,隨機應