原创 android 保存圖片(視頻)到相冊

概述 此功能麻煩的地方主要在機型適配上。 此功能實現步驟如下: 將圖片存儲到手機picture目錄下。(一般是從原位置複製過來) 將該文件掃描到相冊。 本文的例子是將應用自帶的內容存儲到picture目錄。 筆者看到目前市場

原创 android 註解入門(Acitivity路由demo)

參考《Java編程思想》 概述 近期接觸了路由和模塊間通信的內容,發現Java註解非常常用。 避免後面看各源碼被其阻塞,大致瞭解了下,作此文記錄之。 本文的Demo是 運行時註解的Demo。 編譯時註解將在其他文章講述,本文

原创 動態編譯 java ASM入門

概述 ASM 是java字節碼操作框架。 由於ASM性能好的原因,所以在動態編譯上往往比Javassist上使用的更加廣泛。 之前已經寫過了Javassist實現動態編譯的demo,對動態編譯不瞭解的讀者可以看下:動態編譯入門(g

原创 android 自定義圓角button(自定義View Demo)

概述 在平時開發過程中經常會碰到需要使用圓角button的情況,一般也會包括很多其他小功能,比如要在裏面添加img,設置不同的圓角大小等。 針對這樣的場景,直接使用創建多個shape,定義多個xml文件也是可以實現的。但是如果使用

原创 Android Fragment事件透傳

概述 近期使用Fragment,需要將事件透傳到下層(可能是Activity,也可能是其他Fragment),於是作此文記錄之。 原理其實很簡單,就是讓Fragment佈局中ViewGroup都會將觸摸事件傳遞到下層。主要是通過重

原创 fresco webp動圖只播放一次

概述 本文適合類似於以下這些需求: 要求webp動圖播放一遍後就暫停 要求webp動圖播放一遍後就消失 要求webp動圖播放一遍後做其他邏輯 具體實現 在ControllerListener中將Animatable對象轉化

原创 bindService 源碼解析(爲什麼是異步)

概述 Andromeda 源碼解析 (同步獲取服務):https://xujiajia.blog.csdn.net/article/details/104166843 前一篇文章分析了Andromeda的源碼,其中提到,bin

原创 android使用gradle優化多module的依賴管理

概述 在一個項目有多個module 的時候,不可避免的會存在不同的module會有相同的依賴的問題。 最一般的做法,我們開發要引入一個依賴的時候,就去看一下其他項目依賴了哪個版本,然後複製粘貼。 但是一旦發現其他多項目對同一個庫,

原创 Android針對快速點擊事件的處理

概述 當對一個按鈕快速點擊的時候,往往很可能會多次觸發同一個邏輯,在有些場景下,會顯得極度不合理。而且,這種情況在性能較低的手機上觸發概率更高。 比如,點擊一個按鈕打開登錄頁面,如果用戶點擊過快的話,完全可能會跳出兩個登錄頁面。

原创 android動畫如何更新UI(ValueAnimator源碼解析)

概述 android動畫經常會碰到卡頓,或者阻塞主進程之類的問題。 爲了排查此類問題,不得不對動畫原理了解一二,於是作此文。 此文圍繞兩個主線問題展開: ui更新的頻率是如何控制的? 比如,1秒內會更新多少次? 每次更新UI的時

原创 Android 可自由拖動的View

概述 近期寫過一個可自由拖動的View。 需求是能在屏幕中隨意拖動這個View,然後如果View最終停止在屏幕左邊就想左邊靠邊,如果停止在屏幕右邊就向右邊靠邊。 本文是直接把該控件設置成了一個View。 也可以使用PopupWi

原创 Android動畫總結 (valueAnimator、objectAnimator、AnimatorSet、PropertyValuesHolder、Interpolator)

參考官方文檔:https://developer.android.com/guide/topics/graphics/prop-animation#api-overview 概述 筆者近期接觸到android動畫,將諸多概念都

原创 android自定義動畫插值器(Interpolator)

前言 之前已經講過動畫相關的內容,沒有接觸過的讀者可以看下筆者之前對android動畫使用的整理。 Android動畫總結 (valueAnimator、objectAnimator、AnimatorSet、PropertyVa

原创 編譯時註解 AbstractProcessor (Activity路由Demo)

概述 前一篇文章已經整理過註解的一些概念,也是附上了運行時註解的Demo,如果對註解概念不是很熟的讀者建議先看下前一篇文章:android 註解入門(Acitivity路由demo) 此篇文章主要講一下編譯時註解的使用,同時也是以

原创 android Binder 實現異步回調

場景描述 此時有A、B兩個進程,期望A與B實現進程間通信,並且在邏輯執行完畢後再A進程觸發回調。期望過程如下: A進程 調用function() B進程 觸發function() B進程 調用callback() A進程 觸發c