原创 androoid 漸變背景動畫實現

在安卓裏面,動畫的背景色漸變(比如又紅色變爲藍色)是依靠屬性動畫來完成的,屬性動畫大部分情況下是來實現View的運動動畫的,因爲View的背景也是View的屬性之一,所以屬性動畫自然也就可以讓view的背景產生漸變的效果,代碼如下:  

原创 Gc垃圾回收算法總結

Java虛擬機(JVM)導語:     JVM(Java Virtual Machine)即Java虛擬機,它可以通過類加載器把Class文件加載到自己運行時內存中去執行的虛擬機。虛擬機是運行在操作系統中的,而進程又是操作系統的執行單位,

原创 java常用23種設計模式

一、設計模式的分類 總體來說設計模式分爲三大類: 創建型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。 結構型模式,共七種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式

原创 HashMap的工作原理

HashMap的工作原理是近年來常見的Java面試題。幾乎每個Java程序員都知道HashMap,都知道哪裏要用HashMap,知道Hashtable和HashMap之間的區別,那麼爲何這道面試題如此特殊呢?是因爲這道題考察的深度很深。

原创 Android圖片壓縮方法

android中圖片是以bitmap形式存在的,那麼bitmap所佔內存,直接影響到了應用所佔內存大小,首先要知道bitmap所佔內存大小計算方式:圖片長度 x 圖片寬度 x 一個像素點佔用的字節數以下是圖片的壓縮格式:其中,A代表透明度

原创 App性能優化小建議

導語安卓大軍浩浩蕩蕩,發展已近十個年頭,技術優化日異月新,如今Android 8.0 Oreo 都發布了,Android系統性能已經非常流暢了。但是,到了各大廠商手裏,改源碼自定系統,使得Android原生系統變得魚龍混雜,然後到了不同層

原创 android 7.0 適配

項目運行兩個禮拜了,相機也在7.0以下運行的完美,突然早上同事拿他的7.0手機給我說 這是一個大bug.我一看調用相機直接崩潰。報的錯誤如下圖: 接着我以爲是我的文件路徑錯誤,找了老半天沒發現問題,仔細想想不太可能了。於是乎,開始求助

原创 hashmap排序問題

用的最多的HashMap,不保證映射的順序,特別是它不保證該順序恆久不變。LinkedHashMap,維持元素的插入順序。TreeMap中有一個傳入比較器的構造函數, Map中的元素可按此比較器進行排序。  以上3個知識點,前2個作爲複習

原创 Android高級進階書籍推薦

中級進階推薦看一下以下這幾本書: 《Android從入門到精通(附光盤)》 明日科技 編 《第一行代碼2 Android(第二版)》 郭霖 著 《Android開發進階 從小工到專家 》何紅輝 著 《Android進階之光 》劉望舒 著

原创 java中的WeakReference

java語言中爲對象的引用分爲了四個級別,分別爲 強引用 、軟引用、弱引用、虛引用。 本文只針對java中的弱引用進行一些分析,如有出入還請多指正。 在分析弱引用之前,先闡述一個概念:什麼是對象可到達和對象不可到達狀態。 其實很簡單,我舉

原创 Gc回收機制和回收算法解析

前言GC(Garbage Collection),和麪向對象一樣是java語言的一大特性之一,有了它,不用再像c/c++那樣麻煩且頻繁地free()和delete()。垃圾回收機制主要作用於java堆(Heap),也就是jvm用於存放對象

原创 Android 不依賴activity的全局懸浮窗實現

Android懸浮窗實現 實現基礎Android懸浮窗實現使用WindowManager ,WindowManager介紹  通過Context.getSystemService(Context.WINDOW_SERVICE)可以獲得 W

原创 Eventbus接不到消息的處理辦法

 最近積累了好多問題和學習記錄知識,但是最近公司項目實在太忙,抽不開身,後面有時間儘量都補上,今天先記錄一個遇到的小問題:eventbus無法接收到消息我仔細查看了消息體和訂閱方法,都沒找到問題,那麼應該是我訂閱註冊過程的問題了,經過lo

原创 Java 查找兩個集合中的相同元素和不同元素

1簡單元素的查找一、找到2個集合中相同和不同的元素本文分享的示例代碼實現提取2個集合中相同和不同的元素此處需要使用Collection集合所提供的一個方法:removeAll(Cellection list),removeAll方法用於從

原创 android中invalidate()的自動清屏含義以及屏幕刷新

invalidate()是用來刷新View的,必須是在UI線程中進行工作。比如在修改某個view的顯示時,調用invalidate()才能看到重新繪製的界面。invalidate()的調用是把之前的舊的view從主UI線程隊列中pop掉。