Лито изображение с удаленного URL

Я пытаюсь загрузить изображение с удаленного URL в виджет Litho Image, но виджет Litho имеет "drawable" в качестве единственной опоры для установки изображения. Кто-нибудь пытался установить изображение с удаленного URL в виджете Litho Image?

2 ответа

Решение

Если вы действительно хотите использовать LithoВы можете загрузить изображение и преобразовать его в Drawable объект.

public static Drawable drawableFromUrl(String url) throws IOException {
    Bitmap b = null;

    HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
    connection.connect();
    InputStream input = connection.getInputStream();

    b = BitmapFactory.decodeStream(input);

    return new BitmapDrawable(b);
}

Обратите внимание, что вам нужно вызывать этот метод отдельно Thread или же AsyncTask так как это сетевая операция.

Вы можете использовать FrescoComponent, который будет использовать библиотеку загрузки изображений Fresco для загрузки и рендеринга изображения. В качестве альтернативы вы можете использовать интеграцию с Glide: https://github.com/pavlospt/litho-glide/tree/master/litho-glide

Litho-Fresco не поддерживает удаленное изображение. Вы должны добавитьimplementation 'com.facebook.fresco:fresco:1.13.0' вместе с implementation 'com.facebook.litho:litho-fresco:0.31.0'в твоей школе. Затем вы можете загружать удаленные изображения следующим образом:

@LayoutSpec
object MovieComponentSpec {

fun getImageController(imageUrl : String) = Fresco.newDraweeControllerBuilder()
    .setUri(imageUrl)
    .build()


@JvmStatic
@OnCreateLayout
internal fun onCreateLayout(
    c: ComponentContext,
    @Prop title: String,
    @Prop imageUrl: String
): Component {

    return Column.create(c)
        .paddingDip(ALL, 16f)
        .backgroundColor(Color.WHITE)
        .child(
            FrescoImage.create(c).controller(getImageController(imageUrl))
        )
        .child(
            Text.create(c)
                .text(title)
                .textSizeSp(10f)
        )
        .build()
    }

}
Другие вопросы по тегам