Sök…


Introduktion

Fresco är ett kraftfullt system för att visa bilder i Android-applikationer.

I Android 4.x och lägre lägger Fresco bilder i ett speciellt Android-minne (kallat ashmem). Detta låter din applikation springa snabbare - och drabbas av den fruktade OutOfMemoryError mycket mindre ofta.

Fresco stöder också strömning av JPEG.

Anmärkningar

Så ställer du in beroenden i build.gradle-filen på appnivå:

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

Mer information finns här .

Komma igång med Fresco

Lägg först Fresco till din build.gradle som visas i avsnittet Anmärkningar:

Om du behöver ytterligare funktioner, som animerat GIF- eller WebP-stöd, måste du också lägga till motsvarande Fresco-artefakter .

Fresco måste initieras. Du bör bara göra det en gång, så det är bra att placera initieringen i din Application . Ett exempel på detta skulle vara:

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

Om du vill ladda fjärrbilder från en server behöver din app interntillstånd. Lägg bara till den i din AndroidManifest.xml :

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

Lägg sedan till en SimpleDraweeView i din XML-layout. Fresco stöder inte wrap_content för wrap_content eftersom du kan ha flera bilder med olika dimensioner (platshållarbild, felbild, faktisk bild, ...).

Så du kan antingen lägga till en SimpleDraweeView med fasta dimensioner (eller 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" />

Eller ange ett bildförhållande för din bild:

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

Slutligen kan du ställa in din bild-URI i Java:

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

Det är allt! Du bör se din platshållare rita tills nätverksbilden har hämtats.

Använda OkHttp 3 med Fresco

Först, förutom det normala Fresco Gradle-beroendet, måste du lägga till OkHttp 3-beroende till din build.gradle :

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

När du initialiserar Fresco (vanligtvis i din anpassade Application ) kan du nu ange din OkHttp-klient:

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 Streaming med Fresco med DraweeController

Detta exempel antar att du redan har lagt till Fresco till din app (se detta exempel ):

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow