Suche…


Einführung

Fresco ist ein leistungsfähiges System zum Anzeigen von Bildern in Android-Anwendungen.

In Android 4.x und niedriger legt Fresco Bilder in einem speziellen Bereich des Android-Speichers (Ashmem) ab. Dadurch läuft Ihre Anwendung schneller - und erleidet den gefürchteten OutOfMemoryError seltener.

Fresco unterstützt auch das Streaming von JPEGs.

Bemerkungen

So richten Sie Abhängigkeiten in der Build.gradle-Datei auf App-Ebene ein:

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

Weitere Informationen finden Sie hier .

Erste Schritte mit Fresco

build.gradle Sie zunächst Fresco zu Ihrem build.gradle wie im Abschnitt "Anmerkungen" gezeigt:

Wenn Sie zusätzliche Funktionen benötigen, beispielsweise animierte GIF- oder WebP-Unterstützung, müssen Sie auch die entsprechenden Fresco-Artefakte hinzufügen.

Fresko muss initialisiert werden. Sie sollten dies nur einmal tun, daher ist es eine gute Idee, die Initialisierung in Ihrer Application . Ein Beispiel dafür wäre:

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

Wenn Sie Remote-Images von einem Server laden möchten, benötigt Ihre App die Internt-Berechtigung. AndroidManifest.xml Sie es einfach zu Ihrem AndroidManifest.xml :

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

SimpleDraweeView dann Ihrem XML-Layout eine SimpleDraweeView . Fresco unterstützt wrap_content für Bildmaße, da Sie möglicherweise mehrere Bilder mit unterschiedlichen Abmessungen (Platzhalterbild, wrap_content , aktuelles Bild, ...) haben.

Sie können also entweder eine SimpleDraweeView mit festen Abmessungen hinzufügen (oder 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" />

Oder geben Sie ein Bildverhältnis für Ihr Bild an:

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

Zum Schluss können Sie Ihren Image-URI in Java festlegen:

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

Das ist es! Sie sollten Ihren Platzhalter so lange zeichnen, bis das Netzwerkimage abgerufen wurde.

OkHttp 3 mit Fresco verwenden

Zuerst müssen Sie zusätzlich zu der normalen Abhängigkeit von Fresco Gradle die Abhängigkeit von OkHttp 3 zu Ihrem build.gradle :

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

Wenn Sie Fresco initialisieren (normalerweise in Ihrer benutzerdefinierten Application ), können Sie jetzt Ihren OkHttp-Client angeben:

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 mit Fresco mit DraweeController

In diesem Beispiel wird davon ausgegangen, dass Sie Ihrer App bereits Fresco hinzugefügt haben (siehe folgendes Beispiel ):

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow