原创 Android啓動Activity的方式原理分析

一.啓動 Activity 的分類 在android 種啓動4大組件的方式有很多種,但是不管再多,都從調用方式上分爲以下2種: 1、顯示調用(Intent顯示跳轉) 顯式調用明確指定了調用的組件名稱,對於顯式調用的

原创 盲人輔助模式Accessibility剖析

現在很多的App都有考慮到要適配一些特殊人羣,不如盲人,對於盲人模式這個輔助功能的適配,參考Google官方文檔:http://developer.android.com/intl/zh-cn/guide/topics/ui/ac

原创 Android WebView探索

一、引言 WebView(網絡視圖)作用相當於一個迷你的瀏覽器,採用Webkit內核,因此完美支持html,javascript,css等。有時候,我們完 全可以把UI甚至數據處理都交給WebView,配合PHP等服務端程序,這樣

原创 Android Handler引起的內存泄漏分析與解決

在開發中我們經常用Handler來進行子線程修改UI界面,進程間通訊等等,在用的過程中稍不注意就有可能發出handler leaks的警告,即“This Handler class should be static or le

原创 ViewPager的PageTransformer 實現各種Page變換動畫效果分析

一,PageTransformer 的簡單介紹 從Android 3.0開始,ViewPager提供了PageTransformer接口來幫助應用方便實現各種切換效果,該接口是在ViewPager滑動的時候被調用的

原创 Mutildex解決Android應用Dex方法數限制

作爲一個Android開發者,在開發應用時,隨着業務規模發展到一定程度,不斷地加入新功能,添加新的類庫,代碼在急劇的膨脹,相應的APK包的大小也在相應地增加。那麼可能有一天,你的應用會拋出這樣一個error信息: Conversi

原创 Android 中的貝塞爾曲線分析詳解

什麼是貝塞爾曲線,貝塞爾曲線有什麼用?貝塞爾曲線是應用於二維圖形應用程序的數學曲線。 曲線定義:數據點(起始點、終止點)、控制點。通過調整控制點,貝塞爾曲線的形狀會發生變化。一句話概括貝塞爾曲線:將任意一條曲線轉化爲精確的數學公式

原创 Android 放大鏡效果實現

放大鏡就是直接調用相機,使用放大縮小的功能實現,調用相機有兩種方式,一種是直接調用系統的;另一種是自定義相機,需要自定義一個預覽界面,下面簡單介紹自定義相機方式: 參考:http://developer.android.com/

原创 EventBus基本使用簡介

一、背景介紹 在編程過程中,當我們想通知其他組件某些事情發生時,我們通常使用觀察者模式,正是因爲觀察者模式非常常見,所以在jdk1.5中已經幫助我們實現了觀察者模式,我們只需要簡單的繼承一些類就可以快速使用觀察者模式,在Andr

原创 從源碼上剖析Android內存泄露工具LeakCanary

內存泄露在開發過程中我們會經常遇到,分析內存泄露的工具經常會用到Heap Tool 與 Memory Analyzer tool(MAT)。Heap Tool可以查看當前的內存快照,從數據裏可以看到當前內存的佔用和回收情況,每次垃

原创 Android 視圖渲染過程的源碼分析

我相信大部分Android開發工程師都知道通過 setContentView(@LayoutRes int layoutResID)就可以把自己layout佈局文件的視圖結構顯示出來。但是鮮有人去研究Android系統是怎麼把這些

原创 從源碼上分析Android View保存數據狀態

在Android開發旅途中,經常會遇到系統控件無法滿足我們的視覺,交互效果,這個時候我們常常需要自己自定義控件來滿足我們的需求。在這個開發探索過程中,我們不可避免得遇到View要保存狀態信息這樣的問題。剛開始接觸控件自定義開發的時

原创 由動畫Animator.end()引發的問題總結

最近在工作過程遇到過一個關於調用Animator.end()方法引發的Bug,下面讓我來說說是怎麼回事。 在開發過程中,由於一些業務或者需求功能的需要,我們經常需要在某些環節中同時或者連續播放多個動畫,這是我們一般會new 一個

原创 WindowManagerService如何管理應用程序窗口

一、引言 如果對於Android窗口視圖是怎麼顯示的還不是很清楚的話,可以看看我上一篇博文Android視圖渲染過程分析,我們已經知道每一個Activity組件都有一個對應的ViewRoot對象、View對象以及WindowMan

原创 從源碼上深度剖析View invalidate 、 postInvalidate、requestLayout

對於Android View的自定義來說,這三兄弟簡直是我們必須要拿下的坎,那麼這三個方法有什麼本質上的區別呢? 我個人認爲要從本質上來認識這三者的區別,那麼你肯定要對Android View的繪製流程瞭如指掌。首先我們先來看看