標籤:android style blog http 使用 資料
在我們的使用Android系統時,經常能看到很多表徵圖上線會標有一些數字,比如簡訊數量,郵件數量等等,這很好奇, 這是怎麼實現的呢?且他會根據實際情況不斷的變化,很是神奇呀,預設Android是不支援的,那我們今天就來慢慢的講講,他是怎麼實現的。
今天介紹兩種方法,一種是應用捷徑, 第二種是修改Iauncher 代碼來達到動態icon的效果,配合其他應用來實現。
在應用中發現,普通的應用都可以,這就更神奇了,比如豌豆莢,它會提示你有幾個應用要升級,很好奇,研究了一番,發現他是有兩個應用表徵圖,我們知道應用程式真正的只有一個表徵圖的,那另外一個是什麼呢?對啦,是應用程式的捷徑,他可以建立多個或者一個,那我們就找到了今天的第一種方法去實現它啦。
第一種就是就是很簡單的,我們進行變通,可以使用傳統型程式建立的捷徑去實現這個,當我們的應用程式資料變化改變的時候就重新安裝 一個新的捷徑,且它上面標識著我們的一些資料,這樣就實現了以假亂真的情況。哪些icon我們可以提前放在程式裡面,關於如何載入捷徑,可以看看前面轉載的一篇文章http://blog.csdn.net/wx_962464/article/details/7457939 。
第二種方式就是修改launcher的代碼,然後配合其他的應用來實現動態icon 的效果,在實現它之前,先要大致瞭解在launcher在應用安裝,卸載,更新的時候是怎麼做的,這裡大概介紹下,在應用安裝,更新,卸載的時候,都會有廣播發出,launcher在LauncherApplication 中註冊廣播,在LauncherModel中處理接收到廣播的訊息,廣播帶的參數為應用程式套件的數組,然後在一個線程Task中去重新載入更新這幾個包相應的內容,比如icon,文字等,那麼我就可以類比這樣的效果,在application中也註冊一個廣播,比如appchanged 等然後在Launchermodel中處理,處理可以類比應用程式更新的部分,進行一個線程處理,最主要的是在Launcher allApp 介面的表徵圖怎麼變,我們發現Launcher中的文字和表徵圖在PagedViewIcon 這個類裡面產生的,它實際是一個Textview,只是進行了重寫,添加了相關的屬性,表徵圖是在這個方法setCompoundDrawablesWithIntrinsicBounds(null, new FastBitmapDrawable(mIcon), null, null); 中設定的,這個在很多的view中都有這個方法。他可以設定控制項上下左右的表徵圖,Launcher allApp 介面的表徵圖就是用TextView 設定的圖片,所以在這裡可以根據應用程式的包名然後進行一些特殊的屬性進行判斷,然後設定顯示不同的表徵圖,對於表徵圖的大小我們可以使用Utilities 類的createIconBitmap 方法適配Launcher 中表徵圖。在別的應用程式中發送appchanged廣播,並帶上包名參數,當達到pagedViewIcon 中指定的條件,設定指定的圖片,就可以實現動態變化了,這個依賴外來程式的廣播,這樣就可以實現動態icon了。
上面只是說出了,我最近做動態icon的做法,並實現了,希望有同樣的需求的可以參考,沒有進行圖文解釋,但是思想是這樣的,有什麼不明白的,說的不好的請給我留言,我將一一回複。