Android SketchImageView 載入Gif圖片,解決介面不流暢卡頓問題
遇到的問題
列表載入gif圖片,用Fresco,Glide,android-gif-drawable等都能實現簡單的單個Gif圖片的載入,如果在列表上載入圖片,不做記憶體優化處理,那麼OOM就會黏著你,對於專案比較緊急,時間有限的童鞋來說,優化無疑是雪上加霜,SO,那麼給大家推薦一個簡單載入Gif圖片的控制元件,超級好用!
簡介
Sketch 是 Android 上一個強大且全面的圖片載入器,支援 GIF,手勢縮放以及分塊顯示超大圖片。Sketch is a powerful and comprehensive image loader on Android, with support for GIF, gesture zooming, block display super large image
Sketch 是 Android 上一款強大且全面的圖片載入器,除了圖片載入的必備功能外,還支援 GIF,手勢縮放、分塊顯示超大圖片、自動糾正圖片方向、顯示視訊縮圖等功能
特效
支援的特性
多種 URI 支援
. 支援http://
、https://
、asset://
、content://
、file:///sdcard/sample.jpg
、/sdcard/sample.jpg
、drawable://
、data:image/
、data:img/
、android.resource://
、apk.icon://
、app.icon://
等 URI,通過支援 gif 圖片
. 集成了 android-gif-drawable 1.2.10 可以方便的顯示 gif 圖片支援手勢縮放
. 支援手勢縮放功能,在 PhotoView 的基礎上進行了優化,增加了滾動條,定位等功能支援分塊顯示超大圖
. 支援分塊顯示超大圖功能,從此再大的圖片也不怕了支援三級快取
. 通過 LruMemoryCache、LruDiskCache 複用圖片,加快顯示時間;通過 LruBitmapPool 複用 Bitmap,減少因 GC 而造成的卡頓支援糾正圖片方向
支援顯示 APK 或 APP 圖示
. 支援顯示本地 APK 檔案的圖示或根據包名和版本號顯示已安裝APP的圖示支援 Base64 圖片
. 支援解析 Base64 格式的圖片支援各種列表
. 在各種列表(ListView、RecyclerView)中迴圈使用不錯位,並且不佔用 setTag() 方法自動防止載入過大 Bitmap
可通過 maxSize 來控制載入到記憶體的圖片的尺寸,預設為 ImageView的 layout_width 和 layout_height 或螢幕的寬高獨家 TransitionDrawable 支援
. 獨家支援任意尺寸的兩張圖片使用 TransitionDrawable 過渡顯示,保證不變形只加載或只下載
. 除了 display() 方法可以顯示圖片之外,你還可以通過 load() 方法只加載圖片到記憶體中或通過 download() 方法只下載圖片到本地移動資料下暫停下載
. 內建了移動資料下暫停下載圖片的功能,你只需開啟即可自動選擇合適的 Bitmap.Config
. 根據圖片的 MimeType 自動選擇合適的 Bitmap.Config,減少記憶體浪費,例如對於 JPEG 格式的圖片就會使用 Bitmap.Config.RGB_565 解碼-
強大且靈活的自定義
. 可自定義 URI 支援、HTTP、下載、快取、解碼、處理、顯示、佔位圖等各個環節
支援的URI
Type | Scheme |
---|---|
File in network | http://, https:// |
File in SDCard | /, file:// |
Content Resolver | content:// |
Asset Resource | asset:// |
Drawable Resource | drawable:// |
Base64 | data:image/, data:/img/ |
APK Icon | apk.icon:// |
APP Icon | app.icon:// |
Android Resource | android.resource:// |
開始使用
匯入 Sketch
在 app 的 build.gradle 檔案的 dependencies 節點中加入依賴
implementation'me.panpf:sketch-gif:2.6.1'
Android Studio 會自動合併 AAR 中所包含的許可權和混淆配置
SketchImageViewsketchImageView=(SketchImageView) findViewById(R.id.image_main);
//預設播放gif圖片
sketchImageView.getOptions().setDecodeGifImage(true);
//設定gif資源圖片
sketchImageView.displayImage("http://t.cn/RShdS1f");
使用方法就是這麼簡單,詳細API大家可以去檢視SketchImageView
歡迎大家進群探討Android相關技術 群號:548154942