Android Fresco圖片載入庫基礎使用詳解
前言
圖片載入在 Android開發專案中是必不可少的,為了降低開發週期和難度,我們經常會選用一些圖片載入的開源庫,而Android發展到現在圖片載入開源庫也越來越多了,下面介紹 Fresco開源圖片載入庫.
簡介
Fresco
是由Facebook開源的一個圖片載入庫,Fresco是一個功能強大的系統,用於在Android應用程式中顯示影象.
功能介紹以及基礎使用
1.配置
- 在 build.gradle 中配置:
dependencies { // 其他依賴 compile 'com.facebook.fresco:fresco:0.12.0' }
- 下面的依賴需要根據需求新增:
dependencies { // 在 API < 14 上的機器支援 WebP 時,需要新增 compile 'com.facebook.fresco:animated-base-support:0.12.0' // 支援 GIF 動圖,需要新增 compile 'com.facebook.fresco:animated-gif:0.12.0' // 支援 WebP (靜態圖+動圖),需要新增 compile 'com.facebook.fresco:animated-webp:0.12.0' compile 'com.facebook.fresco:webpsupport:0.12.0' // 僅支援 WebP 靜態圖,需要新增 compile 'com.facebook.fresco:webpsupport:0.12.0' }
- Application中初始化Fresco
[MyApplication.java] public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); } }
- 在 AndroidManifest.xml 中指定你的 Application 類
<manifest ... > <uses-permission android:name="android.permission.INTERNET" /> <application ... android:label="@string/app_name" android:name=".MyApplication" > ... </application> ... </manifest>
- 新增網路許可權
<uses-permission android:name="android.permission.INTERNET"/>
- 在xml佈局檔案中, 加入SimpleDraweeView:
<com.facebook.drawee.view.SimpleDraweeView android:id="@+id/my_image_view" android:layout_width="130dp" android:layout_height="130dp" fresco:placeholderImage="@drawable/my_drawable" />
- 開始載入圖片
Uri uri = Uri.parse("https://raw.githubusercontent.com/facebook/fresco/gh-pages/static/logo.png"); SimpleDraweeView draweeView = (SimpleDraweeView) findViewById(R.id.my_image_view); draweeView.setImageURI(uri);
剩下的,Fresco會替你完成:
顯示佔位圖直到載入完成;
下載圖片;
快取圖片;
圖片不再顯示時,從記憶體中移除;
等等等等。
2.基本功能介紹&使用
- 可配置的所有選項
<com.facebook.drawee.view.SimpleDraweeView android:id="@+id/my_image_view" android:layout_width="20dp" android:layout_height="20dp" fresco:fadeDuration="300"//淡入淡出動畫持續時間 fresco:actualImageScaleType="focusCrop"//實際圖片縮放型別 fresco:placeholderImage="@color/wait_color"//佔位符 fresco:placeholderImageScaleType="fitCenter"//佔位符圖片縮放型別 fresco:failureImage="@drawable/error"//載入失敗顯示圖片 fresco:failureImageScaleType="centerInside"//縮放型別 fresco:retryImage="@drawable/retrying"//重新載入圖片 fresco:retryImageScaleType="centerCrop" fresco:progressBarImage="@drawable/progress_bar"//正在載入圖片 fresco:progressBarImageScaleType="centerInside"//縮放型別 fresco:progressBarAutoRotateInterval="1000"//正在載入圖片自動旋轉的時間間隔,直到圖片載入成功停止旋轉 fresco:backgroundImage="@color/blue"//背景圖片 fresco:overlayImage="@drawable/watermark"// 疊加圖 fresco:pressedStateOverlayImage="@color/red" fresco:roundAsCircle="false" //圓形圖 fresco:roundedCornerRadius="1dp"//圓角圖&半徑 fresco:roundTopLeft="true"//左上角 fresco:roundTopRight="false"//右上角圓 fresco:roundBottomLeft="false"//左下角 fresco:roundBottomRight="true"//右下角 fresco:roundWithOverlayColor="@color/corner_color"// 圓形&圓角邊框顏色 fresco:roundingBorderWidth="2dp"// 圓形&圓角邊框寬度 fresco:roundingBorderColor="@color/border_color"//圓形或圓角影象底下的疊加顏色 />
Drawees 不支援 wrap_content 屬性。
所下載的影象可能和佔位圖尺寸不一致,如果設定出錯圖或者重試圖的話,這些圖的尺寸也可能和所下載的圖尺寸不一致。
如果大小不一致,假設使用的是 wrap_content,影象下載完之後,View將會重新layout,改變大小和位置。這將會導致介面跳躍。
至此,Fresco的基本功能介紹&使用就講解完畢了,感謝閱讀