Fresco加载图片模版

来源:互联网 发布:史克威尔艾尼克斯 知乎 编辑:程序博客网 时间:2024/05/22 05:25

(1)在项目的build.grade文件里添加依赖(注意:因为Fresco进行了包的拆分,用到哪个功能就添加对应的依赖,可以减少APP的体积)

dependencies {
  //Fresco,无论使用哪个模块的功能,都必须要添加的基础依赖
 compile 'com.facebook.fresco:fresco:0.14.1'

  //下面的依赖根据需求,用到哪个模块,就导入对应的依赖即可.

  // 仅支持 WebP 静态图,需要添加

  compile 'com.facebook.fresco:webpsupport:0.14.1'

  // 支持 GIF 动图,需要添加

  compile 'com.facebook.fresco:animated-gif:0.14.1'

  // 支持 WebP静态图及 WebP 动图,需要添加

  compile 'com.facebook.fresco:animated-webp:0.14.1'

  compile 'com.facebook.fresco:webpsupport:0.14.1'

 

  // 在 API < 14 上的机器支持 WebP 时,需要添加

  compile 'com.facebook.fresco:animated-base-support:0.14.1'

}  

(2)在application中初始化Fresco(记得在清单文件里配置application)

   Fresco.initialize(this);

(3)配置网络权限 

   <uses-permission android:name="android.permission.INTERNET"/> 

(4)在xml布局文件中,加入命名空间

<!-- 其他元素-->

<LinearLayout

    xmlns:fresco="http://schemas.android.com/apk/res-auto">

(5)在xml中引入SimpleDraweeView控件(fresco:placeholderImage="@drawable/my_drawable":默认占位图片)

<com.facebook.drawee.view.SimpleDraweeView

    android:id="@+id/my_image_view"

    android:layout_width="130dp"

    android:layout_height="130dp"

    fresco:placeholderImage="@drawable/my_drawable"

  />

2.Fresco的基本使用

(1)在Java代码中开始加载图片

   //加载网络图片的网址

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);

加载本地图片:

Uri uri = Uri.parse("res://包名(实际可以是任何字符串甚至留空)/" + R.drawable.ic_launcher);

加载SD卡图片:

String fileName = "/11111.jpg";String sdcardPath = Environment.getExternalStorageDirectory().getPath();loadFile(myImageView,sdcardPath+fileName,120,120);//加载SD卡图片,图片选绝对路径
方法:

public static void loadFile(final SimpleDraweeView draweeView, String filePath, final int reqWidth, final int reqHeight) {    Uri uri = new Uri.Builder()            .scheme(UriUtil.LOCAL_FILE_SCHEME)            .path(filePath)            .build();    ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)            .setRotationOptions(RotationOptions.autoRotate())            .setLocalThumbnailPreviewsEnabled(true)            .setResizeOptions(new ResizeOptions(reqWidth, reqHeight))            .build();    DraweeController controller = Fresco.newDraweeControllerBuilder()            .setImageRequest(request)            .setOldController(draweeView.getController())            .setControllerListener(new BaseControllerListener<ImageInfo>() {                @Override                public void onFinalImageSet(String id, @Nullable ImageInfo imageInfo, @Nullable Animatable anim) {                    if (imageInfo == null) {                        return;                    }                    ViewGroup.LayoutParams vp = draweeView.getLayoutParams();                    vp.width = reqWidth;                    vp.height = reqHeight;                    draweeView.requestLayout();                }            })            .build();    draweeView.setController(controller);}


布局改变图片形状:

fresco:roundAsCircle="true" 圆形图

fresco:roundedCornerRadius="25dp"圆角图

原创粉丝点击