我是Xamarin Android应用程序的新手。我使用Picasso组件来缓存和下载图像,它工作正常。
Picasso.With (this.Activity).Load ("Here I pass Url").Into (imageview);
现在我使用MvvmCross绑定,如:
<Mvx.MvxImageView
android:layout_width="120dp"
android:layout_height="140dp"
android:id="@+id/ProductImageView"
android:scaleType="fitXY"
local:MvxBind="ImageUrl URL" />
这里的URL是我在Viewmodel中设置的字符串。我的问题是,它下载图像但不能像picasso那样缓存该图像。任何人都建议我该怎么做? 如何使用Picasso绑定和缓存图像?
答案 0 :(得分:4)
没有关于MvxImageView
的 magic - 它的类是一个继承自ImageView
的类,并且公开了一个可以在绑定中使用的public string ImageUrl
属性。
您不必使用MvxImageView
- 您可以创建自己的PicassoImageView
并公开属性:
private string _i;
public string ImageUrl
{
get { return _i; }
set {
if (_i == value) return;
_i = value;
if (string.IsNullOrEmpty(value)) {
// what do you want to do here? clear the view? use a placeholder?
return;
}
Picasso.With (this.Context).Load (_i).Into (this);
}
}
那种事情应该有用......
...如果你博客/写下你如何开展这项工作以及你在学习过程中学到了什么(或者如果你发布了其他人可以使用的nuget包),还有奖励积分。
答案 1 :(得分:2)
您可以使用Picasso缓存图像,而无需在任何ImageViewer中加载它,如下所示:
Picasso. with(Context). load(ImageFile.Url). into(null);
但我不确定你以后如何使用它。
您可以尝试自己的缓存实现,这很简单,请查看article