Load Fresco image on button press only

Summary: Only load the image when clicking on the "button"

Reviewed By: oprisnik

Differential Revision: D14165707

fbshipit-source-id: d07fb76562f8b91fc945713d779319b976e17016
This commit is contained in:
Pascal Hartig
2019-02-22 02:46:51 -08:00
committed by Facebook Github Bot
parent cbfb280783
commit 156a0c17c6
2 changed files with 21 additions and 4 deletions

View File

@@ -9,7 +9,6 @@ package com.facebook.flipper.sample;
import android.app.Application; import android.app.Application;
import android.content.Context; import android.content.Context;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.facebook.common.memory.manager.NoOpDebugMemoryManager;
import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.flipper.android.AndroidFlipperClient; import com.facebook.flipper.android.AndroidFlipperClient;
import com.facebook.flipper.core.FlipperClient; import com.facebook.flipper.core.FlipperClient;

View File

@@ -20,9 +20,12 @@ import com.facebook.litho.ClickEvent;
import com.facebook.litho.Column; import com.facebook.litho.Column;
import com.facebook.litho.Component; import com.facebook.litho.Component;
import com.facebook.litho.ComponentContext; import com.facebook.litho.ComponentContext;
import com.facebook.litho.StateValue;
import com.facebook.litho.annotations.LayoutSpec; import com.facebook.litho.annotations.LayoutSpec;
import com.facebook.litho.annotations.OnCreateLayout; import com.facebook.litho.annotations.OnCreateLayout;
import com.facebook.litho.annotations.OnEvent; import com.facebook.litho.annotations.OnEvent;
import com.facebook.litho.annotations.OnUpdateState;
import com.facebook.litho.annotations.State;
import com.facebook.litho.fresco.FrescoImage; import com.facebook.litho.fresco.FrescoImage;
import com.facebook.litho.widget.Text; import com.facebook.litho.widget.Text;
import java.io.IOException; import java.io.IOException;
@@ -37,7 +40,7 @@ import okhttp3.Response;
public class RootComponentSpec { public class RootComponentSpec {
@OnCreateLayout @OnCreateLayout
static Component onCreateLayout(final ComponentContext c) { static Component onCreateLayout(final ComponentContext c, @State boolean displayImage) {
final DraweeController controller = final DraweeController controller =
Fresco.newDraweeControllerBuilder().setUri("https://fbflipper.com/img/icon.png").build(); Fresco.newDraweeControllerBuilder().setUri("https://fbflipper.com/img/icon.png").build();
return Column.create(c) return Column.create(c)
@@ -62,10 +65,16 @@ public class RootComponentSpec {
.child( .child(
Text.create(c) Text.create(c)
.text("Diagnose connection issues") .text("Diagnose connection issues")
.key("3") .key("4")
.textSizeSp(20) .textSizeSp(20)
.clickHandler(RootComponent.openDiagnostics(c))) .clickHandler(RootComponent.openDiagnostics(c)))
.child(FrescoImage.create(c).controller(controller)) .child(
Text.create(c)
.text("Load Fresco image")
.key("5")
.textSizeSp(20)
.clickHandler(RootComponent.loadImage(c)))
.child(displayImage ? FrescoImage.create(c).controller(controller) : null)
.build(); .build();
} }
@@ -145,4 +154,13 @@ public class RootComponentSpec {
c.getAndroidContext().startActivity(intent); c.getAndroidContext().startActivity(intent);
} }
@OnUpdateState
static void updateDisplayImage(StateValue<Boolean> displayImage) {
displayImage.set(true);
}
@OnEvent(ClickEvent.class)
static void loadImage(final ComponentContext c) {
RootComponent.updateDisplayImageAsync(c);
}
} }