Zoeken…


Invoering

Fresco is een krachtig systeem voor het weergeven van afbeeldingen in Android-applicaties.

In Android 4.x en lager plaatst Fresco afbeeldingen in een speciale regio van Android-geheugen (ashmem genoemd). Hierdoor kan uw applicatie sneller werken - en veel minder vaak last hebben van de gevreesde OutOfMemoryError.

Fresco ondersteunt ook het streamen van JPEG's.

Opmerkingen

Hoe afhankelijkheden in het build.gradle-bestand op app-niveau in te stellen:

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

Meer informatie vindt u hier .

Aan de slag met Fresco

Voeg eerst Fresco toe aan je build.gradle zoals getoond in de sectie Opmerkingen:

Als u extra functies nodig hebt, zoals ondersteuning voor geanimeerde GIF of WebP, moet u ook de bijbehorende Fresco-artefacten toevoegen.

Fresco moet worden geïnitialiseerd. U moet dit maar 1 keer doen, dus het is een goed idee om de initialisatie in uw Application plaatsen. Een voorbeeld hiervan zou zijn:

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

Als u externe afbeeldingen van een server wilt laden, heeft uw app de interne machtiging nodig. Voeg het eenvoudig toe aan uw AndroidManifest.xml :

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

Voeg vervolgens een SimpleDraweeView aan uw XML-lay-out. Fresco biedt geen ondersteuning voor wrap_content voor afbeeldingsdimensies, omdat u mogelijk meerdere afbeeldingen met verschillende dimensies heeft (tijdelijke aanduiding, wrap_content , werkelijke afbeelding, ...).

U kunt dus een SimpleDraweeView met vaste afmetingen (of match_parent ) toevoegen:

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

Of geef een beeldverhouding voor uw afbeelding:

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

Ten slotte kunt u uw afbeeldings-URI in Java instellen:

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

Dat is het! U zou uw tijdelijke aanduiding moeten kunnen zien tekenen totdat de netwerkafbeelding is opgehaald.

OkHttp 3 gebruiken met Fresco

Eerst moet je, naast de normale Fresco Gradle-afhankelijkheid, de OkHttp 3-afhankelijkheid toevoegen aan je build.gradle :

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

Wanneer u Fresco initialiseert (meestal in uw aangepaste Application implementatie), kunt u nu uw OkHttp-client opgeven:

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 met Fresco met behulp van DraweeController

In dit voorbeeld wordt ervan uitgegaan dat u Fresco al aan uw app hebt toegevoegd (zie dit voorbeeld ):

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow