Buscar..


Introducción

Fresco es un poderoso sistema para mostrar imágenes en aplicaciones de Android.

En Android 4.x e inferior, Fresco coloca las imágenes en una región especial de la memoria de Android (llamada ashmem). Esto permite que su aplicación se ejecute más rápido y sufra el temido OutOfMemoryError con mucha menos frecuencia.

Fresco también admite la transmisión de archivos JPEG.

Observaciones

Cómo configurar dependencias en el archivo build.gradle de nivel de aplicación:

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

Más información se puede encontrar aquí .

Empezando con Fresco

Primero, agregue Fresco a su build.gradle como se muestra en la sección de Comentarios:

Si necesita funciones adicionales, como soporte GIF animado o WebP, también debe agregar los artefactos de Fresco correspondientes.

Fresco necesita ser inicializado. Solo debe hacer esto 1 vez, por lo que es una buena idea colocar la inicialización en su Application . Un ejemplo para esto sería:

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

Si desea cargar imágenes remotas desde un servidor, su aplicación necesita el permiso interno. Simplemente AndroidManifest.xml a tu AndroidManifest.xml :

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

Luego, agregue un SimpleDraweeView a su diseño XML. Fresco no admite wrap_content para las dimensiones de la imagen, ya que puede tener varias imágenes con diferentes dimensiones (imagen de marcador de posición, imagen de error, imagen real, ...).

Entonces, puedes agregar un SimpleDraweeView con dimensiones fijas (o 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" />

O proporcione una relación de aspecto para su imagen:

<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" />

Finalmente, puedes configurar tu imagen URI en Java:

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

¡Eso es! Debería ver su marcador de posición dibujable hasta que se haya recuperado la imagen de red.

Usando OkHttp 3 con Fresco

Primero, además de la dependencia normal de Fresco Gradle, debe agregar la dependencia OkHttp 3 a su build.gradle :

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

Cuando inicializa Fresco (generalmente en la implementación de su Application personalizada), ahora puede especificar su cliente 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);

Streaming JPEG con Fresco utilizando DraweeController

Este ejemplo asume que ya ha agregado Fresco a su aplicación (vea este ejemplo ):

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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow