以xamarin形式加载位图图像

时间:2015-08-19 08:02:12

标签: xamarin xamarin-forms

我在xamarin表单列表视图中遇到了图像加载的内存问题,现在我需要在表单中实现位图图像但是我不能在xamarin表单中这样做我无法找到包含位图的任何命名空间xamarin形式 我有一个普通的数据绑定代码,也可以绑定图像

 public async void GetResult()
    //public  void GetResult()
    {
        try
        {
            IsBusy = true;
            var client = new HttpClient();
            var json = await client.GetStringAsync(string.Format(Url));
            var items = JsonConvert.DeserializeObject<ObservableCollection<cm_main_category>>(json.ToString());
            foreach (var item in items)
            {
                 item.image_url = "http://somelink.net" + item.image_url.Substring(1, item.image_url.Length - 1);
               // item.image_url = "http://127.0.0.1" + item.image_url.Substring(1, item.image_url.Length - 1);
                ListItems.Add(item);
            }
            IsBusy = false;
        }

现在我需要为这段代码实现位图应该是什么方法?

3 个答案:

答案 0 :(得分:1)

如果您想节省内存,可以尝试使用FFImageLoading CachedImage,它是Image API兼容的替代品,具有高级内存缓存和下采样功能。只需将Image替换为CachedImage,然后设置其中一个下采样属性。

https://github.com/molinch/FFImageLoading

答案 1 :(得分:0)

显然,您希望通过URI绑定图像。在Xamarin.Forms中这很容易。

您只需将ImageSourceProperty的{​​{1}}绑定到知道URI的属性即可。 可以在此处找到XAML绑定和C#绑定的一个很好的示例:https://www.syntaxismyui.com/xamarin-forms-listview-imagecell-recipe/

编辑: 从注释中复制:解决方案是将图像源设置为null并按照此处所述触发垃圾回收:OutOfMemoryError when loading an image

答案 2 :(得分:0)

 protected override void OnDisappearing()
    {
        BindingContext = null;
        Content = null;
        base.OnDisappearing();
        GC.Collect();
    }

在某些应用中,如果你的应用处理成千上万的数据,图像更好地添加位图

,这将有所帮助