原创 關於判空邏輯的思考

        工作五年來,經歷過兩款線上App的android端開發,並且都是大廠的產品。發現代碼中有大量的判空邏輯,有的地方甚至已經到了令人髮指的程度,幾乎每個變量的使用都有判空邏輯。空指針異常號稱“billion-dollar mi

原创 android View架構總結

View的特點是靈活,每次學習View的時候都感覺學懂了;但是在實際開發的時候總也會遇到一些View的問題感覺比較神奇,最近在組內做了一個關於View的分享,主要是從View的繪製和View的事件傳遞兩個方面介紹View的體系架構。 一

原创 MVC、MVP、MVVM總結

1.MVC定義(總結自Head First設計模式) MVC架構像一塊夾心餅乾,視圖和模型是上下的餅乾層;控制器是中間的奶油層,負責黏連視圖和模型。                                MVC架構的目的是實現UI

原创 volatile關鍵字詳解

關鍵字volatile是Java虛擬機提供的最輕量級的同步機制。在Java API應用層,對volatile關鍵字的描述是具備以下兩個特點: (1)保證此變量對所有線程的可見性,這裏的“可見性”是指當一條線程修改了這個變量的值,新值對於其

原创 Android 監聽軟鍵盤的顯示與隱藏

在Android開發中,經常需要監聽軟鍵盤的顯示狀態,而有時候鍵盤的顯示或隱藏是由系統自動調用觸發的,但是對系統自動觸發的軟鍵盤的顯示或隱藏不太方便監聽。今天介紹兩種監聽軟鍵盤顯示和隱藏的方法。 第1種方法: 給佈局文件最外層的View

原创 可滑動Header控件的實現

最近在項目開發中經常遇到這樣的需求:在一個Activity中,上半部分是一個高度比較大(屏幕高度的1/3或者1/2)的Header,下半部分是ListView或者是ViewPager(裏面依然包含ListView)。如果Header不能向

原创 Android事件傳遞總結

Android中事件傳遞機制是非常重要但又很複雜的一個知識點,在實現一些自定義View、處理滑動衝突時都需要複寫事件傳遞相關的函數。本文總結了不同事件的傳遞過程,至於事件傳遞的dispatchTouchEvent()、onIntercep

原创 android項目中引入CoordinatorLayout控件問題總結

在項目開發中,爲了實現更好的滑動效果,使用了CoordinatorLayout等控件。在使用的過程遇到了幾個問題,總結出來。 CoordinatorLayout控件是在android support-v7包中提供的,所以要想使用Coor

原创 Android自定義View的動畫實現方法

最近,在項目中需要實現一個柱狀圖,並在刷新柱狀圖的時候有一個動畫(柱狀圖的柱子動態的畫出來)。 實現柱狀圖常用的方法就是,通過繼承View類,複寫onDraw()方法,根據產品的需求在onDraw()方法裏面畫相應的矩形(drawRec

原创 Binder通信學習總結

本文是筆者學習Binder通信機制的要點總結,並沒有對Binder通信機制進行詳細的介紹。 在開始本文之前,給大家推薦兩篇文章,第一篇是Android Binder設計與實現 – 設計篇,該文從宏觀上講解了Binder通信機制的四個模塊,

原创 ListView嵌套卡頓問題分析及解決

最重要的是在架構設計的時候儘量避免LiveView嵌套情況的發生,因爲ListView嵌套後,在一些手機上會發生卡頓現象,而且不容易解決。 然而,由於產品的設計,或者界面越來越複雜,有的時候ListView嵌套還是不可避免的發生了;Lis

原创 ListView恢復位置

前段時間實現了一個在ListView裏面切換tab的功能,兩個tab顯示的數據的數據對象一樣,只是數據類型不一樣,兩個tab共用了一個ListView對象和一個Adapter對象。(由於歷史原因沒有實現兩個Fragment, 在每個Fra

原创 Activity ActivityManagerService以及WindowManagerService之間的關係

作爲Android應用程序開發者,平時接觸最多的就是Activity,而很少用到ActivityManagerService和WindowManagerService。本文,通過應用程序開始啓動到第一個Activity的View內容在手機

原创 android View移動總結

android中View的移動分爲兩種,View位置的移動和View內容的移動。 一、 View位置移動的方法 修改mTranslationX或mTranslationY的值 設置MarginLayoutParams的margin值 設置

原创 根據文本內容的長度動態的設置TextView的高度

在做Android開發中,經常需要根據文本內容的長度和手機屏幕的大小動態的設置TextView的高度。設置TextView的高度後,再設置TextView可以滑動,就可以展示完整的文本,但是TextView的滑動效果不流暢;可以給Text