Поиск…


Вступление

Fresco - мощная система для отображения изображений в приложениях Android.

В Android 4.x и ниже Fresco помещает изображения в особый регион памяти Android (называемый ashmem). Это позволяет вашему приложению работать быстрее - и страдать от ужасного OutOfMemoryError гораздо реже.

Fresco также поддерживает потоковое воспроизведение JPEG.

замечания

Как настроить зависимости в файле build.gradle на уровне приложения:

dependencies {
    // Your app's other dependencies.
    compile 'com.facebook.fresco:fresco:0.14.1' // Or a newer version if available.
}

Более подробную информацию можно найти здесь .

Начало работы с Fresco

Сначала добавьте Fresco в свой build.gradle как показано в разделе «Примечания»:

Если вам нужны дополнительные функции, такие как анимированная поддержка GIF или WebP, вам также необходимо добавить соответствующие артефакты Fresco .

Фреска должна быть инициализирована. Вы должны делать это только 1 раз, поэтому размещение инициализации в вашем Application - хорошая идея. Примером этого может быть:

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
    }
}

Если вы хотите загружать удаленные изображения с сервера, вашему приложению требуется разрешение интерната. Просто добавьте его в свой AndroidManifest.xml :

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

Затем добавьте SimpleDraweeView в свой XML-макет. Fresco не поддерживает wrap_content для размеров изображения, поскольку у вас может быть несколько изображений с различными размерами (изображение с образцом, изображение ошибки, фактическое изображение, ...).

Таким образом, вы можете добавить SimpleDraweeView с фиксированными параметрами (или match_parent ):

<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/my_image_view"
    android:layout_width="120dp"
    android:layout_height="120dp"
    fresco:placeholderImage="@drawable/placeholder" />

Или укажите пропорции для вашего изображения:

<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/my_image_view"
    android:layout_width="120dp"
    android:layout_height="wrap_content"
    fresco:viewAspectRatio="1.33"
    fresco:placeholderImage="@drawable/placeholder" />

Наконец, вы можете установить свой URI изображения в Java:

SimpleDraweeView draweeView = (SimpleDraweeView) findViewById(R.id.my_image_view);
draweeView.setImageURI("http://yourdomain.com/yourimage.jpg");

Это оно! Вы должны увидеть, что ваш placeholder доступен до тех пор, пока изображение сети не будет извлечено.

Использование OkHttp 3 с Fresco

Во-первых, в дополнение к нормальной зависимости Fresco Gradle вам нужно добавить зависимость OkHttp 3 к вашему build.gradle :

compile "com.facebook.fresco:imagepipeline-okhttp3:1.2.0" // Or a newer version.

Когда вы инициализируете Fresco (обычно в вашей пользовательской реализации Application ), вы можете указать свой клиент OkHttp:

OkHttpClient okHttpClient = new OkHttpClient(); // Build on your own OkHttpClient.

Context context = ... // Your Application context.
ImagePipelineConfig config = OkHttpImagePipelineConfigFactory
        .newBuilder(context, okHttpClient)
        .build();
Fresco.initialize(context, config);

Потоковое воспроизведение JPEG с помощью Fresco с помощью DraweeController

В этом примере предполагается, что вы уже добавили Fresco в свое приложение (см. Этот пример ):

SimpleDraweeView img = new SimpleDraweeView(context);
ImageRequest request = ImageRequestBuilder
        .newBuilderWithSource(Uri.parse("http://example.com/image.png"))
        .setProgressiveRenderingEnabled(true) // This is where the magic happens.
        .build();

DraweeController controller = Fresco.newDraweeControllerBuilder()
        .setImageRequest(request)
        .setOldController(img.getController()) // Get the current controller from our SimpleDraweeView.
        .build();

img.setController(controller); // Set the new controller to the SimpleDraweeView to enable progressive JPEGs.


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow