編輯:關於Android編程
圖片的優化策略比較多。
1、處理圖片的方式:
如果ListView中自定義的Item中有涉及到大量圖片的,一定要對圖片進行細心的處理,因為圖片占的內存是ListView 項中最頭疼的,處理圖片的方法大致有以下幾種:
①、不要直接拿路徑就去循環 BitmapFactory.decodeFile ;使用Options保存圖片大小、不要加載圖片到內存去。
②、對圖片一定要經過邊界壓縮尤其是比較大的圖片,如果你的圖片是後台服務器處理好的那就不需要了
③、在ListView中取圖片時也不要直接拿個路徑去取圖片,而是以WeakReference(使用WeakReference代替強引用。比如可以使用WeakReferencemContextRef)、SoftReference、WeakHashMap等的來存儲圖片信息。
④、在getView中做圖片轉換時,產生的中間變量一定及時釋放
2、異步加載圖片基本思想:
1)、 先從內存緩存中獲取圖片顯示(內存緩沖)
2)、獲取不到的話從SD卡裡獲取(SD卡緩沖)
3)、都獲取不到的話從網絡下載圖片並保存到 SD 卡同時加入內存並顯示(視情況看是否要顯示)
異步加載圖片的原理:
優化一:先從內存中加載,沒有則開啟線程從SD卡或網絡中獲取,這裡注意從SD卡獲取圖片是放在子線程裡執行的,否則快速滑屏的話會不夠流暢。
優化二:於此同時,在 adapter 裡有個 busy 變量,表示 listview 是否處於滑動狀態,如果是滑動狀態則僅從內存中獲取圖片,沒有的話無需再開啟線程去外存或網絡獲取圖片。
優化三:ImageLoader裡的線程使用了線程池,從而避免了過多線程頻繁創建和銷毀,如果每次總是new一個線程去執行這是非常不可取的,好一點的用的AsyncTask類,其實內部也是用到了線程池。在從網絡獲取圖片時,先是將其保存到 sd 卡,然後再加載到內存,這麼做的好處是在加載到內存時可以做個壓縮處理,以減少圖片所占內存。
ListView 中圖片錯位的問題是如何產生的
圖片錯位問題的本質源於我們的 listview 使用了緩存 convertView,假設一種場景,一個 listview 一屏顯示九個item,那麼在拉出第十個 item的時候,事實上該 item 是重復使用了第一個 item,也就是說在第一個 item從網絡中下載圖片並最終要顯示的時候,其實該 item 已經不在當前顯示區域內了,此時顯示的後果將可能在第十個 item 上輸 出圖像,這就導致了圖片錯位的問題。所以解決之道在於可見則顯示,不可見則不顯示。
什麼叫創建圖片的副本? 因為我們直接從BitmapFactory取出來的圖片是可讀的,是不可以修改的。 假設用戶想修改這張圖片,一般是先根據原圖在內存中創建和原圖一模一樣
錄制音頻的步驟: 1、創建錄音對象 2、指定錄音設備(初始化狀態) 3、設置錄制音頻的碼率 4、設置錄制音頻的編碼格式 5、設置錄制音頻存放的位置 6、准備錄音(准備狀態
怎樣才能寫出優秀的Android App,是每一個程序員追求的目標。那麼怎麼才能寫出一個優秀的App呢?相信很多初學者也會有這種迷茫。一句話來回答這個問題:細節很重要。今
廢話少說,我們直接開始吧。有興趣的就一起,我慢慢寫,咱們一起慢慢學。希望兩個月內能基本完成基於Xamarin的Android開發內容。還是一樣,先來安裝開發環境吧。跟著做