原创 Optional

Optional 作爲一名Java開發者,在開發過程中,判斷是否爲空是讓我糾結的幾個點之一,聽說Java 8提供了一個Optional類用於解決這個問題,我已經迫不及待要去了解他了。 作用 經過研究使用之後,得出一個結論:

原创 Android仿微信聊天圖片縮略圖裁剪

本文地址:http://blog.csdn.net/Jaden_hool/article/details/49642297 效果圖: 1、橫圖原圖: 橫圖聊天界面縮略圖: 2、豎圖原圖: 豎圖聊天界面縮略圖:

原创 Android Studio、Git 解決合併衝突

合併分支,解決衝突 Android Studio自帶了解決衝突的工具,以下是操作步驟 選中項目->右鍵->Git->Resolve Conflicts 會出現一個彈窗,顯示了衝突的文件,選擇某個文件後,點擊Merge 會出現三

原创 解決在現有Android項目中集成Flutter遇到的問題

如何添加Flutter到現有Android項目 Flutter官方有詳細的文檔, 參考文檔即可。 集成過程中遇到的神坑 主Module名稱一定要爲"app" 如果主Module名稱不是"app", 執行Flutter#createVi

原创 ConstraintLayout

官網 添加約束 父佈局的約束 如圖添加了A控件和其父佈局左側的約束,它們之間的間距可以調整。 互相約束 控件可以兩兩之間約束,B在A右側,C在A下方。B和A不必上下對齊,B可以上下移動。 對齊 控件之間可以在相同一側對齊,對齊

原创 ANR分析

產生ANR的原因 While your activity is in the foreground, your app has not responded to an input event or BroadcastReceiver (

原创 Gradle中的常量

定義常量 以Android爲例,在根目錄下有一個gradle.properties文件,可以在該文件中定義常量: BUILD_TOOLS_VERSION = 26.0.2 //字符串不要加引號。 COMPILE_SDK_VERSION =

原创 Kotlin的inline內聯函數

方法調用流程 調用一個方法是一個壓棧和出棧的過程,調用方法時將棧針壓入方法棧,然後執行方法體,方法結束時將棧針出棧,這個壓棧和出棧的過程會耗費資源,這個過程中傳遞形參也會耗費資源。 爲什麼需要inline 有些簡單的方法會被頻繁調用,什麼

原创 Android搜狗輸入法搜索欄

背景:採用搜狗輸入法在應用中所有的中文輸入框輸入內容時,搜狗的聯想搜索欄都會出現,而且不會頂起輸入框,導致輸入框被蓋住。 結論 搜狗輸入法有一個應用名單,通過包名進行判斷。例如UC瀏覽器、手機迅雷等應用就會開啓搜索欄;微信、QQ等應

原创 內存不足導致應用進程被殺

應用處於後臺時,如果手機內存不足,應用進程會被強制殺掉. 如果通過最近打開的應用列表回到應用,那麼首先會調起Application, 然後會恢復被殺之前的Activity, 如果Activity中含有Fragment, 那麼Fragme

原创 Android 圓角邊框RoundRect原理

繪製圓角矩形的方法 /** * Draw the specified round-rect using the specified paint. The roundrect will be filled or * f

原创 Git快速克隆大項目

有些項目非常龐大,例如android源碼,如果只是想獲取項目的代碼以及之後的更新,而不需要care該項目的歷史提交記錄,那麼可以只克隆某個分支的最後一次提交。 選擇克隆單個分支 git clone --branch <branch_n

原创 MVP-MVVM

MVP Model Model提供用戶界面需要顯示的數據,包括從服務器獲取數據、從本地緩存獲取數據等數據操作。 View View層應該儘量的精簡,負責顯示數據和用戶交互。MVP下Activity和Fragment體現在了這一層,Act

原创 獲取User-Agent

/** * @return 瀏覽器的userAgent, 某些機型含有中文。 */ public static String getUserAgent() { String userAgent = getWebViewUser

原创 Git 情景處理

本地代碼尚不能提交,但是又必須同步服務器代碼 執行git stash :將本地代碼保存; 執行git pull origin (rBranch):(lBranch) :同步服務器代碼; 執行git stash apply [(stash