原创 Binder框架

Binder是一種架構,包含服務端接口、Binder驅動、客戶端接口三個模塊。 Binder服務端,實際上就是一個Binder類的對象。該對象一旦創建,內部會啓動一個隱藏線程 ,該線程負責接收Binder驅動發送來的消息。 Binder驅

原创 Framework概述

Framework框架,同樣包含三個部分:服務端、客戶端和Linux驅動。 服務端包含兩個重要的類 ActivityManagerService.java 管理應用程序中的Activity WindowManagerService.jav

原创 項目構建工具Gradle詳解

1、Gradle介紹 簡單的說,Gradle就是用來構建項目的一個工具。 基於JVM 像Ant一樣通用靈活 像Maven一樣約定優於配置 支持多工程構建 強大的依賴管理(基於Apache Ivy) 對已有的maven和ivy倉庫全面支

原创 團隊管理經驗

過去3年來,MIUI所取得的成績,除了與很好的產品思路有關,還與團隊的執行效率密不可分。MIUI團隊採用扁平化的管理方式,沒有複雜繁冗的管理流程,極大地降低了溝通成本,提高了團隊執行力。 設計主管任恬坦言,他們沒有像其他公司的一些奇怪

原创 首次進入Activity、動畫卡頓問題的解決方案

初步思路,等待Activity的轉場動畫完成後,再開始頁面內的動畫 /** * Activities cannot draw during the period that their windows are animat

原创 Android刮獎控件,需要的直接拿去用

直接上效果圖 功能特色: 1、可以設置刮開後顯示文字或圖片 2、可以統計已刮開區域所佔百分比 Demo下載地址: RubberDemo.rar 下面是源碼: @SuppressLint("HandlerLeak") public c

原创 可拖動重排GridView

先上效果圖(動態圖不會做,見諒): 控件功能特色: 1、長按item可以拖動重排 2、可以自定義重排的方式 3、被移動位置和將要移動到的位置有圖形顯示 這個控件前身來自於Github,針對其做了以下改進: 1、修復了被拖動的View到邊

原创 創建窗口的過程

過程概述 從WmS的角度來看,一個窗口並不是Window類,而是一個View類。WmS接收到用戶消息後,按一定規則判斷哪個窗口處於活動狀態,然後把消息給該窗口的W類,W類再把消息傳遞給View變量,剩下的消息處理由View對象完成。窗口分

原创 Android Gradle Plugin獲取依賴API詳解

1. VariantConfiguration // 獲取參與編譯的依賴 getCompileDependencies() // 獲取參與打包的依賴 getPackageDependencies() 這兩個API返回的都是Dependen

原创 Android的Canvas學習筆記

第1節clipRect()和translate()區別 初步研究得出了一些結論,首先在自定義View的onDraw()方法的代碼如下: @Override protected void onDraw(Canvas canvas) {

原创 Android插件化基礎--Binder機制

Binder是一套基於CS的架構。下面以一個極簡的例子來學習Binder。 1.首先定義一個IMedia.aidl文件。 interface IMedia { boolean start(); boolean stop()

原创 APP混淆後Cookie不能正確保存的解決辦法

背景: 使用OkHttp做網絡請求,並且用到了持久化Cookie,app沒有混淆一切正常,但是混淆之後,不能正常讀取cookie了。 經過排查發現是序列化的cookie字符串不正確,自然而然的想到要keep住實現了Serializabl

原创 View的層次結構

setContentView(R.layout.activity_main) 這行代碼添加的是我們自定義的視圖,那它的上層都是些什麼呢? 從最上面開始 ViewRootImpl          |   DecorView    

原创 Android動畫fillAfter和fillBefore

fillBefore是指動畫結束時畫面停留在此動畫的第一幀; fillAfter是指動畫結束是畫面停留在此動畫的最後一幀。   java代碼設置如下:     Java代碼   /*****動畫結束時,停留在最後一幀*

原创 獲取類的泛型

RuntimeException 是那些可能在 Java 虛擬機正常運行期間拋出的異常的超類。 可能在執行方法期間拋出但未被捕獲的 RuntimeException 的任何子類都無需在 throws 子句中進行聲明。 也就是說,非R