原创 【Android Meditation】選取第三方SDK需要謹慎

爲什麼使用開源項目 如何選擇開源項目 總結 建議 爲什麼使用開源項目 don’t repeat yourself 不要重複造輪子 共享 互聯網快速發展,引入開源項目節省人力和時間,加快業務發展速度 但是,

原创 Android自定義View之如期相遇的百分比進度條RatioProgress

需求 簡述 實際應用效果圖 Demo效果圖 分析 自定義View的基本步驟 自定義View屬性 RatioProgress分析 佈局以及代碼中的使用 佈局文件 實際java代碼中的控制 其它 Demo下載 參考鏈接

原创 【Android Meditation】從客戶端和服務端看APP版本兼容問題

前言 思考 做好兼容和容錯 前言 業務調整,需求變動,客戶端和服務端代碼的改動如何最大限度地照顧到老版本的兼容性 思考 面向對象的六大原則中,一個很重要的原則叫做開閉原則,具體說來就是,軟件應向擴展開放,

原创 單例模式

1、定義 確保某一個類只有一個實例,而且自行實例化並向整個系統提供這個實例 2、使用場景 確保某個類有且只有一個對象的場景,避免產生多個對象消耗過多的資源,或者某種類型的對象只應該有且只有一個。 3、五種常見的單例模式 1)餓漢單例模

原创 簡單工廠方法、工廠方法以及抽象工廠方法的區別

1、定義 工廠模式:定義一個用於創建對象的接口,讓子類決定實例化哪個類 抽象工廠模式:爲創建一組相關或相互依賴的對象提供一個接口,而且無需指定他們的具體類 2、工廠方法與抽象工廠方法的區別 3、簡單工廠方法、工廠方法以及抽象工

原创 原型模式

1、定義 用原型實例指定創建對象的種類,並通過拷貝這些原型創建新的對象 2、使用場景 1) 類初始化需要消耗比較多的資源 2) 通過new產生一個對象需要非常繁瑣的數據準備或訪問權限 3) 一個對象需要提供給其它對象訪問,而且各個調用者可

原创 Android View的事件分發機制

前言 Activity的事件分發邏輯 ViewGroup以及View的事件分發邏輯 總結和參考 前言 關於Android View事件分發機制的一個小結,基於他人分析以及個人理解,方便自己記錄以及回憶,使用了一些UM

原创 基於ToolBar等MD相關控件實現的沉浸式聯動效果

前言 綜述 功能點 各個突破 設置ToolBar OnOffsetChangedListener聯動顯示 自定義溢出菜單樣式 Toolbar中Menu中圖標不顯示的問題 toolbar menu中appshowAsAc

原创 【Android實戰】EventBus 更少的代碼 更好的體驗

簡介 優點 項目實戰 需求背景 步驟 相關介紹 線程模型 訂閱優先級以及事件取消 粘性事件 總結 簡介 事件總線庫,極大地簡化了 Activities, Fragments, Threads, Servic

原创 【Android Meditation】AS中同一個工程module太多導致編譯慢

問題 原因 解決方案 問題 編譯一個工程要好幾分鐘,特別是clean的時候,時間會更長 原因 其實這個很好理解,每個module中都有一個build.gradle,編譯的時候,每個module的build.gr

原创 VerticalViewPager與VertialTabLayout的結合使用

前言 問題 源碼下載 參考鏈接 前言 在開發中,我們常常需要ViewPager結合Fragment一起使用.我們可以使用三方開源的PagerSlidingTabStrip去實現,或者viewpagerindicat

原创 【Android工具】時間工具類

主要功能 詳情請參考如下代碼 主要功能: 判斷兩個時間是否爲同一天 將日期信息轉換成今天、明天、後天、星期 把timestamp轉化成yyyy/MM/dd kk:mm:ss等各種形式 將一個時間戳轉換成提示性時

原创 sushuai.tech全新上線

更新日誌 -------- 調整網站主題 ---------- 添加頁面統計功能 ---------- 完善評論功能和打賞功能 ----------- 關於標籤送上絕美配圖 傳送門 ----------- 這個挺有意思,哈哈

原创 建造者模式

1、定義 將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示 2、在什麼情況下使用建造模式 1. 需要生成的產品對象有複雜的內部結構,每一個內部成分本身可以是對象,也可以僅僅是一個對象(即產品對象)的一個組成部分

原创 原生TextView實現富文本展示

前言 代碼 參考鏈接 更新 前言 實現如下效果:開頭顯示圖片,而後文字依次排列,並且換行開頭和圖片對齊 代碼 只需要使用原生的TextView,然後通過如下方法調用: textview.setText(ImgTe