Лито изображение с удаленного 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()
}
}