This commit is contained in:
Adrian Knight 2016-11-27 14:17:24 -06:00 коммит произвёл Rui Marinho
Родитель 4ba2f0999e
Коммит 31eada25bd
3 изменённых файлов: 51 добавлений и 29 удалений

Просмотреть файл

@ -1,4 +1,5 @@
using Xamarin.Forms.CustomAttributes;
using System.Collections.Generic;
using Xamarin.Forms.CustomAttributes;
using Xamarin.Forms.Internals;
#if UITEST
@ -59,6 +60,24 @@ namespace Xamarin.Forms.Controls.Issues
}
}
public class CellViewPage : ContentPage
{
public CellViewPage()
{
var list = new List<int>();
for (var i = 0; i < 50; i++)
list.Add(i);
var listView = new ListView
{
ItemsSource = list,
ItemTemplate = new DataTemplate(() => new ImageCell { ImageSource = "cartman" })
};
Content = listView;
}
}
public class LandingPage : ContentPage
{
public LandingPage()
@ -96,6 +115,14 @@ namespace Xamarin.Forms.Controls.Issues
};
stackLayout.Children.Add(button3);
var button4 = new Button
{
Text = "Test cell views",
Command = new Command(() => { Navigation.PushAsync(new CellViewPage()); }),
HorizontalOptions = LayoutOptions.Center
};
stackLayout.Children.Add(button4);
scrollView.Content = stackLayout;
Content = scrollView;
}

Просмотреть файл

@ -193,7 +193,6 @@ namespace Xamarin.Forms.Platform.Android
_imageView.SetImageResource(global::Android.Resource.Color.Transparent);
Bitmap bitmap = null;
IImageSourceHandler handler;
if (source != null && (handler = Registrar.Registered.GetHandler<IImageSourceHandler>(source.GetType())) != null)
@ -211,9 +210,12 @@ namespace Xamarin.Forms.Platform.Android
}
}
_imageView.SetImageBitmap(bitmap);
if (bitmap != null)
bitmap.Dispose();
if (bitmap == null && source is FileImageSource)
_imageView.SetImageResource(ResourceManager.GetDrawableByName(((FileImageSource)source).File));
else
_imageView.SetImageBitmap(bitmap);
bitmap?.Dispose();
}
}
}

Просмотреть файл

@ -68,10 +68,6 @@ namespace Xamarin.Forms.Platform.Android
if (Device.IsInvokeRequired)
throw new InvalidOperationException("Image Bitmap must not be updated from background thread");
Bitmap bitmap = null;
ImageSource source = Element.Source;
if (previous != null && Equals(previous.Source, Element.Source))
return;
@ -82,27 +78,22 @@ namespace Xamarin.Forms.Platform.Android
Control.SetImageResource(global::Android.Resource.Color.Transparent);
if (source != null)
{
IImageSourceHandler handler;
if ((handler = Registrar.Registered.GetHandler<IImageSourceHandler>(source.GetType())) != null)
{
try
{
bitmap = await handler.LoadImageAsync(source, Context);
}
catch (TaskCanceledException)
{
}
catch (IOException ex)
{
Log.Warning("Xamarin.Forms.Platform.Android.ImageRenderer", "Error updating bitmap: {0}", ex);
}
}
ImageSource source = Element.Source;
Bitmap bitmap = null;
IImageSourceHandler handler;
if (bitmap == null && source is FileImageSource)
if (source != null && (handler = Registrar.Registered.GetHandler<IImageSourceHandler>(source.GetType())) != null)
{
try
{
Control.SetImageResource(ResourceManager.GetDrawableByName(((FileImageSource)Element.Source).File));
bitmap = await handler.LoadImageAsync(source, Context);
}
catch (TaskCanceledException)
{
}
catch (IOException ex)
{
Log.Warning("Xamarin.Forms.Platform.Android.ImageRenderer", "Error updating bitmap: {0}", ex);
}
}
@ -114,7 +105,9 @@ namespace Xamarin.Forms.Platform.Android
if (!_isDisposed)
{
if (bitmap != null)
if (bitmap == null && source is FileImageSource)
Control.SetImageResource(ResourceManager.GetDrawableByName(((FileImageSource)source).File));
else
Control.SetImageBitmap(bitmap);
bitmap?.Dispose();