一,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. */