原创 Android Studio 高級配置

前面的話 Android Studio 提供了一個非常方便的功能幫助我們導入或者導出設置。因此我們在安裝一個新的 Android Studio 的時候通常會導入一個之前的設置。但是,最近發生了一件悲劇的事情-我丟失了我的設置文件(幸

原创 RecyclerView 監聽滾動到底部

據個人嘗試 以下這種方案能準確監聽到是否滾動到底部,可以做上拉加載更多protected boolean isSlideToBottom(RecyclerView recyclerView) { if (recyclerVie

原创 ListView分析和getItemViewType的用法

ListView 和 Adapter 的基礎 工作原理: ListView 針對List中每個item,要求 adapter “給我一個視圖” (getView)。一個新的視圖被返回並顯示 如果我們有上億個項目要顯示怎麼辦?爲

原创 【已解決】github中git push origin master出錯:error: failed to push some refs to

【背景】 折騰: 【記錄】將googlecode上面的crifanLib遷移到Github上 期間出錯: ? 1 2 3 4 5 6 7 8 9 10 11

原创 【內存優化】查看app(進程)的內存佔用

1、官方有篇文章,詳細的寫了,可以通過哪些工具查看內存佔用的情況https://developer.android.com/studio/profile/investigate-ram.html2、較常用的 adb 命令,adb shel

原创 【內存優化】用LeakCanary尋找App中的內存泄漏問題

簡述在性能優化中,內存是一個不得不聊的話題;然而內存泄漏,顯示已經成爲內存優化的一個重量級的方向。當前流行的內存泄漏分析工具中,不得不提的就是LeakCanary框架;這是一個集成方便, 使用便捷,配置超級簡單的框架,實現的功能卻是極爲強

原创 Android 命名規範 (提高代碼可讀性)

在講解命名規範前,先初略介紹下當前主要的標識符命名法和英文縮寫規則。標識符命名法標識符命名法最要有四種:1 駝峯(Camel)命名法:又稱小駝峯命名法,除首單詞外,其餘所有單詞的第一個字母大寫。2 帕斯卡(pascal)命名法:又稱大駝

原创 【內存優化】內存溢出(OOM)和內存泄露的引發原因及優化方案

一、內存泄露垃圾回收器無法回收原本應該被回收的對象,這個對象就引發了內存泄露。內存泄露的危害: (1)過多的內存泄露最終會導致內存溢出(OOM)(2)內存泄露導致可用內存不足,會觸發頻繁GC,不管是Android2.2以前的單線程GC還是

原创 RecyclerView添加Header的正確方式

問題如何爲RecyclerView添加Header如何讓Header適配各種LayoutManager在有Header的情況下,我們的分割線該怎麼畫作爲一個懶惰的程序員,如何將這些做到最簡便如果爲RecyclerView添加Header大

原创 Android 一些新特性

 1.RTL(左右翻轉的界面風格 支持 Android 4.2(API 17) 和 更新的版本) 適配RTL(從右到左) 只要把佈局 xml 裏面的所有 Left 屬性改爲 Start,Right 屬性改爲 End 就好了 例如:marg

原创 DrawerLayout禁用側邊滑動

使用DrawerLayout的時候有時會出現側邊欄只能滑出一小部分,然後在手指擡起之後側邊欄並沒有彈出來的情況,我不清楚這是否是一個BUG,但是個人感覺有些影響體驗,索性直接將側邊滑動給禁用掉。 DrawerLayout的側邊滑動可以

原创 【內存優化】內存泄漏 之 MAT工具的使用

1 內存泄漏的排查方法 Dalvik Debug Monitor Server (DDMS) 是 ADT插件的一部分,其中有兩項功能可用於內存檢查 :·    heap 查看堆的分配情況·    allocation tracker跟蹤內

原创 Intellij idea破解辦法

最開始的時候intellij用得是社區版,因爲博主沒有錢去買專業版。。。但是後來發現社區版的功能確實弱了很多,比如流弊閃閃的Diagrams功能就沒有…比如社區版不支持web項目,想起個tomcat跑個web項目都沒法搞。於是,博主重新

原创 ExpandableListView的首次加載全部展開,並且點擊Group不收縮,去掉Group左邊的箭頭

1、首次加載全部展開: mExpandableListView.setAdapter(mExpandableListViewAdapter); for (int i = 0; i < mDataGroup.size(); i++) {