一,Fresco的使用,(fresico是類似於picasso的glide的加載圖片的框架,)
步驟:
1,添加依賴:compile 'com.facebook.fresco:fresco:0.7.0+'
2,在佈局中添加控件com.facebook.drawee.view.SimpleDraweeView
3,進行控件聲明與初始化的操作:
如下:注意事項(庫的初始化Fresco.initialize(this);要在綁定視圖之前使用,否則會報錯);
package com.kaelli.frescodemo;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.drawee.view.SimpleDraweeView;
public class MainActivity extends Activity {
private SimpleDraweeViewmSimpleDraweeView;
@Override
protected void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
//注意此處初始化在綁定佈局前邊
Fresco.initialize(this);
//綁定佈局
setContentView(R.layout.activity_main);
mSimpleDraweeView =(SimpleDraweeView)findViewById(R.id.simpleDraweeView);
//通過url的方式將圖片進行加載。
mSimpleDraweeView.setImageURI(Uri.parse("http://f2.topit.me/2/79/0a/1175191760a730a792o.jpg"));
}
}
不要使用那些被@Deprecated的方法,儘管這些方法(如setImageResource或者setImageBitmap)是可用的,但在以後的版本中也許就作廢了。Fresco的建議是,直接用setImageURI的方法來設置圖片,即使是本地的圖片也用這種方法
//佈局部分,關於此佈局中有很多自定屬性,下面我會詳細的進行講解:
<?xmlversion="1.0" encoding="utf-8"?>
<com.facebook.drawee.view.SimpleDraweeView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:fresco="http://schemas.android.com/apk/res-auto"
android:id="@+id/simpleDraweeView"
android:layout_width="match_parent"
android:layout_height="match_parent"
fresco:fadeDuration="300"
fresco:actualImageScaleType="fitCenter"
fresco:placeholderImage="@drawable/image1"
fresco:placeholderImageScaleType="fitCenter"
fresco:failureImage="@drawable/image1"
fresco:failureImageScaleType="fitCenter" />
如果屬性在佈局文件中寫死了,有時候在和其他控件或者佈局進行包裹或嵌套式一些自定義的屬性會失效;這裏沒辦法只能動態的添加屬性,這裏做了份動態的僅供參考:
GenericDraweeHierarchyBuilderbuilder =new GenericDraweeHierarchyBuilder(getResources());
GenericDraweeHierarchyhierarchy =builder
.setActualImageScaleType(ScalingUtils.ScaleType.FIT_CENTER)
.setPlaceholderImage(getResources().getDrawable(R.drawable.image1), ScalingUtils.ScaleType.FIT_CENTER)
.setFailureImage(getResources().getDrawable(R.drawable.image1), ScalingUtils.ScaleType.FIT_CENTER)
.build();
mSimpleDraweeView.setHierarchy(hierarchy);
§ SimpleDraweeView的width和height屬性必須是明確值,而不能直接用wrap_content這種內容填充的數值,當然有一種情況例外,就是寬度和高度有一個是固定的,然後設置了二者的比例,則另一個可以用wrap_content,其實相當於二者都是固定的。
下面對於各種屬性分別進行描述:
1. /**
2. * FrescoDraweeView在xml中設置的屬性說明:
3. * android:id="@+id/my_image_view" 【屬性說明】id
4. * android:layout_width="20dp" 【屬性說明】設置寬度,不支持wrap,如果要設置寬高比, 需要在Java代碼中指定,setAspectRatio(1.33f);
5. * android:layout_height="20dp" 【屬性說明】設置高度,不支持wrap
6. * fresco:fadeDuration="300" 【屬性說明】顯示動畫設置時長,單位毫秒
7. * fresco:actualImageScaleType="focusCrop" 【屬性說明】設置圖片縮放. 通常使用focusCrop,該屬性值會通過算法把人頭像放在中間
8. * fresco:placeholderImage="@color/wait_color" 【屬性說明】默認圖片(下載成功之前顯示的圖片)
9. * fresco:placeholderImageScaleType="fitCenter"
10. * fresco:failureImage="@drawable/error" 【屬性說明】加載失敗的時候顯示的圖片
11. * fresco:failureImageScaleType="centerInside"
12. * fresco:retryImage="@drawable/retrying" 【屬性說明】加載失敗,提示用戶點擊重新加載的圖片(會覆蓋failureImage的圖片)
13. * fresco:retryImageScaleType="centerCrop"
14. * fresco:progressBarImage="@drawable/progress_bar" 【屬性說明】提示用戶正在加載,和加載進度無關
15. * fresco:progressBarImageScaleType="centerInside"
16. * fresco:progressBarAutoRotateInterval="1000"
17. * fresco:backgroundImage="@color/blue"
18. * fresco:overlayImage="@drawable/watermark"
19. * fresco:pressedStateOverlayImage="@color/red"
20. * fresco:roundAsCircle="false" 【屬性說明】是不是設置圓圈
21. * fresco:roundedCornerRadius="1dp" 【屬性說明】圓角角度,180的時候會變成圓形圖片
22. * fresco:roundTopLeft="true"
23. * fresco:roundTopRight="false"
24. * fresco:roundBottomLeft="false"
25. * fresco:roundBottomRight="true"
26. * fresco:roundWithOverlayColor="@color/corner_color"
27. * fresco:roundingBorderWidth="2dp"
28. * fresco:roundingBorderColor="@color/border_color"
29. */