来自远程 URL 的光刻图像
Litho image from remote URL
我正在尝试从远程 URL 将图像加载到 Litho Image 小部件中,但 Litho 小部件将 "drawable" 作为设置图像的唯一道具。有没有人尝试在 Litho Image 小部件中从远程 URL 设置图像?
如果你真的想使用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 不支持远程图像。您必须在 gradle 中添加 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()
}
}
我正在尝试从远程 URL 将图像加载到 Litho Image 小部件中,但 Litho 小部件将 "drawable" 作为设置图像的唯一道具。有没有人尝试在 Litho Image 小部件中从远程 URL 设置图像?
如果你真的想使用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 不支持远程图像。您必须在 gradle 中添加 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()
}
}