原创 圖片的局部伸縮

目標 效果仿照美圖秀秀中的增高功能,主要實現圖片部分區域的伸縮處理。 效果分析 從效果看,明顯的是一個FrameLayout上設置2層,底層爲被操作的圖片,上層是要操作的選擇其餘。上層選好操作區域,通過接口回調把選擇區域的2條高度

原创 廣播小結

1 分類及區別 分類一: 標準廣播(Normal broadcasts):完全異步;沒任何先後順序;不能攔截; 有序廣播(Ordered broadcasts):同步執行;有先後順序;可以攔截(後續接收的還是最開始傳遞的

原创 invalidate()和postInvalidate()的區別

前者必須在UI線程調用,後者是非UI線程; 自定義View中的刷新直接使用前者; 外部調用自定義View進行刷新有2種方法,一種是直接使用後者,另一種就是使用Handler+invalidate();

原创 簡易計算器之ButterKnife應用

引言 自制一個簡易的計算器,怎奈按鈕過多,需要添加大量的監聽。怎麼辦?ButterKnife前來報道。 ButterKnife的Github地址:https://github.com/JakeWharton/butterknif

原创 多線程基礎小結

1 實現方式 線程的實現有2種方式: 繼承Thread; 實現Runnable;(推薦使用) 2 實現Runnable好處 將線程的任務從線程的子類中分離出來,進行了單獨的封裝。按照面向對象的思想將任務封裝成對象。 避

原创 Fragment的使用

1 Fragment的生命週期 Fragment是依附於Activity而存在的,故而Activity的額生命週期直接影響到Fragment的生命週期。先來看下官網給的生命週期圖。 從上面可以看出,Fragment多了以下幾

原创 ContentProvider小結

1 簡介 主要用於多進程,用來實現跨進程的數據交互。不同於文件存儲和 SharedPreferences 存儲中的兩種全局可讀寫操作模式,內容提供器可以選擇只對哪一部分數據進行共享,從而保證我們程序中的隱私數據不會有泄漏的風險。

原创 DataBinding學習(三)

1 Observable Binding 前面2節學習了綁定屬性和綁定方法,但在使用過程中,我們會發現我的實例對象的屬性變了,可UI卻沒有進行更新,這是萬萬不能忍的。幸虧安卓官方爲我們提供瞭解決辦法。 文檔說明如下: Any

原创 DataBinding學習(一)

1 引言 DataBinding,即數據綁定,可使用MVVM(Model-View-ViewModel)模式,讓項目結構清晰明瞭。通過ViewModel連接View和Model,使得View與Model層解耦,分層後各司其職,維護

原创 解析XML數據

1 原始數據 assets包下的 Book.xml文件 <?xml version="1.0" encoding="utf-8"?> <books> <book> <id>1001</id>

原创 Android性能優化小結

1 佈局優化 1 16ms的由來 畫面的幀數在40~60之間的時候,人眼看起來是流暢的。在安卓系統裏,系統通過VSYNC信號觸發對UI的渲染、重繪,比較合適的時間就是16ms。其意思就是1000ms裏面顯示60幀。一旦時間大於該值

原创 DataBinding學習(四)

1 自定義Binding類名稱 默認情況下,Binding類的命名是基於所述layout文件的名稱,用大寫開頭,除去下劃線()以及()後的第一個字母大寫,然後添加“Binding”後綴。這個類將被放置在一個模塊封裝包裏的datab

原创 談談Android中的OOM

1 產生原因 OOM 異常是 Android 中經常遇到的一個問題,程序員稍微不注意可能就導致其產生。因爲 Android 的每一個應用都是一個 Davlik 虛擬機,該虛擬機的默認堆內存只有 16M ,遠遠無法跟我們的 PC 機

原创 Bitmap的高效加載

1 加載方式 BitmaFactory 類提供了四類的加載方法: decodeFile:從系統文件加載 decodeResource:從資源文件加載 decodeStream:從輸入流加載 decodeByt

原创 Gson解析Json數據的通用方法

1 環境配置 引入Gson的依賴包即可。 2 原始數據 String gs = "{" + "country:{" + "city:{" + "persons:[" + "{name:gaofeng,age:22},"+ "{n