Ricerca…


introduzione

Fresco è un potente sistema per la visualizzazione di immagini in applicazioni Android.

In Android 4.xe versioni precedenti, Fresco inserisce le immagini in una regione speciale della memoria Android (chiamata ashmem). Ciò consente alla tua applicazione di funzionare più velocemente e subisce il temuto OutOfMemoryError molto meno spesso.

Affresco supporta anche lo streaming di file JPEG.

Osservazioni

Come impostare le dipendenze nel file build.gradle a livello di app:

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

Maggiori informazioni possono essere trovate qui .

Iniziare con Affresco

Per prima cosa aggiungi Fresco al tuo build.gradle come mostrato nella sezione Note:

Se sono necessarie funzionalità aggiuntive, come GIF animate o supporto WebP, è necessario aggiungere anche gli artefatti da affresco corrispondenti.

L'affresco deve essere inizializzato. Dovresti farlo solo 1 volta, quindi posizionare l'inizializzazione nella tua Application è una buona idea. Un esempio per questo sarebbe:

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

Se vuoi caricare immagini remote da un server, la tua app necessita dell'autorizzazione interna. Basta aggiungerlo al tuo AndroidManifest.xml :

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

Quindi, aggiungi un SimpleDraweeView al tuo layout XML. Affresco non supporta wrap_content per le dimensioni dell'immagine poiché potresti avere più immagini con dimensioni diverse (immagine segnaposto, immagine di errore, immagine reale, ...).

Quindi puoi aggiungere un SimpleDraweeView con dimensioni fisse (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" />

Oppure fornisci proporzioni per la tua immagine:

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

Infine, puoi impostare l'URI dell'immagine in Java:

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

Questo è tutto! Dovresti vedere il tuo segnaposto disegnabile fino a quando l'immagine di rete è stata recuperata.

Usando OkHttp 3 con Affresco

Innanzitutto, oltre alla normale dipendenza di Fresco Gradle, devi aggiungere la dipendenza di OkHttp 3 al tuo build.gradle :

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

Quando si inizializza Fresco (di solito nell'implementazione Application personalizzata), ora è possibile specificare il client 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 affresco utilizzando DraweeController

Questo esempio presume che tu abbia già aggiunto Fresco alla tua app (vedi questo esempio ):

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow