如何在android中使用fresco设置渐进式jpegs

时间:2016-11-05 16:20:01

标签: android facebook fresco

我刚开始使用壁画,我已按照文档中的步骤操作。我已经能够将URI加载到我的listview适配器中的SimpleDraweeView中,现在我正在尝试实现渐进式jpegs(图像在加载时质量会提高)。问题是他们在网站上提供的代码没有按预期工作。 Uri正在加载,但不是逐渐加载的(图像在加载时质量不会逐渐提高)。有什么我遗失或忘记添加?

这是我的构建依赖:

compile 'com.facebook.fresco:fresco:0.13.+'

我已经在我的应用程序类中添加了这个:

//For fresco
 Fresco.initialize(this);

这是我的xml

<com.facebook.drawee.view.SimpleDraweeView
                android:id="@+id/tag_iv_tu"
                android:layout_width="@dimen/tu_tag_side"
                android:layout_height="@dimen/tu_tag_height"
                android:layout_centerInParent="true"
                android:layout_gravity="center_horizontal"
                fresco:placeholderImage="@drawable/abc_ic_menu_share_mtrl_alpha" />

这是我的listview适配器中的getView()方法中的代码

ImageRequest request = ImageRequestBuilder.newBuilderWithSource(fileUri)
                            .setProgressiveRenderingEnabled(true)
                            .build();
                    DraweeController controller = Fresco.newDraweeControllerBuilder()
                            .setImageRequest(request)
                            .setOldController(holder.tag_iv_tu.getController())
                            .build();
                    holder.tag_iv_tu.setController(controller);

2 个答案:

答案 0 :(得分:2)

您必须为ImageRequst设置ResizeOption,因为它会逐步取决于ResizeOptions。

试试这个:

ResizeOptions options = new ResizeOptions(width, height);

ImageRequest request = ImageRequestBuilder
            .newBuilderWithSource(Uri.parse(uri))
            .setProgressiveRenderingEnabled(true).setResizeOptions(options)
            .build();

答案 1 :(得分:0)

使用此代码:

        String url ="http://...";
        Uri uri = Uri.parse(url);

        ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
                .setProgressiveRenderingEnabled(true)
                .build();

        DraweeController controller = Fresco.newDraweeControllerBuilder()
                .setImageRequest(request)
                .setOldController(image.getController())
                .build();

        mSimpleDraweeView.setController(controller);