Fresco图片加载框架的简单使用(设置缓存路径)

1.导入依赖

	//Fresco图片加载框架
	implementation 'com.facebook.fresco:fresco:1.12.1'

记得添加网络权限

2.在xml布局中写入控件

<com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/fresco"
        android:layout_width="50dp"
        android:layout_height="50dp"
        fresco:roundAsCircle="true"
        fresco:roundedCornerRadius="180dp"
        fresco:actualImageScaleType="focusCrop"
        android:layout_centerVertical="true"/>

3.新建一个App.java注册初始化Fresco
public class App extends Application {

@Override
    public void onCreate() {
        super.onCreate();
        
        DiskCacheConfig config = DiskCacheConfig.newBuilder(this)
                .setBaseDirectoryName("images")
                .setBaseDirectoryPath(Environment.getExternalStorageDirectory())
                .build();
        ImagePipelineConfig build = ImagePipelineConfig.newBuilder(this)
                .setMainDiskCacheConfig(config)
                .build();
        Fresco.initialize( this,build );//初始化  上下文&build
    }

}

简单配置最大的缓存大小 --也写在app类中(oncreate的方法外 最好在上面)

private static int MAX_MEM = 30* ByteConstants.MB;

private ImagePipelineConfig getConfigureCaches(Context context) {
        final MemoryCacheParams bitmapCacheParams = new MemoryCacheParams(
                // 内存缓存中总图片的最大大小,以字节为单位。
                MAX_MEM,
                // 内存缓存中图片的最大数量。
                Integer.MAX_VALUE,
                // 内存缓存中准备清除但尚未被删除的总图片的最大大小,以字节为单位。
                MAX_MEM,
                // 内存缓存中准备清除的总图片的最大数量。
                Integer.MAX_VALUE,
                // 内存缓存中单个图片的最大大小。
                Integer.MAX_VALUE);

        Supplier<MemoryCacheParams> mSupplierMemoryCacheParams = new Supplier<MemoryCacheParams>() {
            @Override
            public MemoryCacheParams get() {
                return bitmapCacheParams;
            }
        };
        ImagePipelineConfig.Builder builder = ImagePipelineConfig.newBuilder(context);
        builder.setBitmapMemoryCacheParamsSupplier(mSupplierMemoryCacheParams);
        return builder.build();
    }

    private void frescoInit() {
        Fresco.initialize(this, getConfigureCaches(this));
//        Fresco.initialize(this);
    }

记得在清单文件中注册我们的App.java类

4.查找控件

        SimpleDraweeView fresco = findViewById( R.id.fresco );

5.给控件(fresco)设置路径

Uri uri = Uri.parse(http://b.hiphotos.baidu.com/image/pic/item/e78.jpg);
fresco.setImageURI( uri  );

完成

下面介绍一些fresco的常用属性,通过这些属性我们可以很方便的定制一些效果

<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/my_image_view"
android:layout_width=“20dp” // 不支持wrap_content 如果要设置宽高比, 需要在Java代码中指定setAspectRatio(1.33f);
android:layout_height=“20dp” // 不支持wrap_content
fresco:fadeDuration=“300”
fresco:actualImageScaleType=“focusCrop” // 设置图片缩放. 通常使用focusCrop,该属性值会通过算法把人头像放在中间
fresco:placeholderImage="@color/wait_color" // 下载成功之前显示的图片
fresco:placeholderImageScaleType=“fitCenter”
fresco:failureImage="@drawable/error" // 加载失败的时候显示的图片
fresco:failureImageScaleType=“centerInside”
fresco:retryImage="@drawable/retrying" // 加载失败,提示用户点击重新加载的图片(会覆盖failureImage的图片)
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” // 圆角角度,180的时候会变成圆形图片
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"
/>

修改图片尺寸
Uri uri = “file:///mnt/sdcard/MyApp/myfile.jpg”;
int width = 50, height = 50;
ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
.setResizeOptions(new ResizeOptions(width, height))
.build();
PipelineDraweeController controller = Fresco.newDraweeControllerBuilder()
.setOldController(mDraweeView.getController())
.setImageRequest(request)
.build();
mSimpleDraweeView.setController(controller);

自动旋转
ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
.setAutoRotateEnabled(true)
.build();

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值