2017-02-06 3 views
0

Я пытаюсь воспроизвести изображения GIF с помощью проекта Xamarin.Forms (Portable). Я реализовал следующий код, но не смог воспроизвести GIF, я не вижу события статического изображения.Невозможно воспроизвести изображение GIF в Xamarin.Forms (Portable)

В этом коде отсутствует ошибка или сбой, но я не могу видеть изображение GIF .

В коде есть что-то неправильное?

Интерфейс:

public interface IGif 
{ 
    string Get(); 
} 

IOS Реализация:

[assembly: Dependency(typeof(GifView_iOS))] 
namespace Project.iOS 
{ 
public class GifView_iOS : IGif 
{ 
    public string Get() 
    { 
    return NSBundle.MainBundle.BundlePath; 
    } 
} 
} 

Android Реализация:

[assembly: Dependency(typeof(GifView_Droid))] 
namespace Project.Droid 
{ 
public class GifView_Droid : IGif 
{ 
    public string Get() 
    { 
    return "file:///android_asset/"; 
    } 
} 
} 

GIF класс Image:

public class Gif: WebView 
{ 
    public string GifSource 
    { 
    set 
    { 
     string imgSource = DependencyService.Get<IGif>.Get() + value; 
     var html = new HtmlWebViewSource(); 
     html.Html = String.Format 
      (@"<html><body style='background: #000000;'><img src='{0}' /></body></html>", 
      imgSource); 
     SetValue(SourceProperty, html); 
    } 
    } 
} 

И, наконец, я добавил в StackLayout.

Gif gifimage = new Gif(); 
gifimage.GifSource = "loading.gif"; 
StackGif.Children.Add(gifimage); 

Я не тестировал этот код в iPhone, возможно, он работает в iPhone.

Благодарим вас заблаговременно.

+1

Что происходит?Это крушение? Разве это ничего не показывает? Вы получили сообщение об ошибке? Трассировки стека? Пожалуйста, прочитайте [здесь] (http://stackoverflow.com/help/how-to-ask) о том, как задать хороший вопрос в StackOverflow. –

+0

На самом деле, нет проблем или сбоев, но я не вижу изображение 'GIF'. –

ответ

0

Это была глупая ошибка, я должен указать размер изображения внутри веб-представления и класса GIF.

Вот обновленный код.

Мой GIF Класс:

public class Gif: WebView 
{ 
    public string GifSource 
    { 
     set 
     { 
      string imgSource = DependencyService.Get<Dependency.IGif>().Get() + value; 
      var html = new HtmlWebViewSource(); 
      html.Html = String.Format(@"<html><body><img src='{0}' style='width: 100px; height: 100px;' /></body></html>", imgSource); 
      SetValue(SourceProperty, html); 
     } 
    } 
} 

и инициализация в ContentPage:

Helpers.Controls.Gif gifImage = new Helpers.Controls.Gif(); 
gifImage.GifSource = "loading.gif"; 
gifImage.HorizontalOptions = LayoutOptions.Center; 
gifImage.VerticalOptions = LayoutOptions.FillAndExpand; 
gifImage.HeightRequest = 120; 
gifImage.BackgroundColor = Color.Transparent; 
GridLoad.Children.Add(gifImage); 

Примечание: Я до сих пор работает на фоновую часть, так как она выглядит как прикрепленного изображения, я хотите прозрачный фон в веб-представлении.

Изображение: enter image description here

+0

. Вы не можете сделать прозрачный WebView без пользовательских рендерингов. –

+1

Этого достаточно, чтобы задать запрос размера. Вам не нужно устанавливать размер изображения внутри вашего html –

0

По умолчанию StackLayout занимает все свободное место, но WebView этого не делает. Вместо просто

Gif gifimage = new Gif(); 

использование

public WebViewProgrammaticallyPage() 
     { 
      var StackGif = new StackLayout() 
      { 
       BackgroundColor=Color.Red, 
      }; 
      Gif gifimage = new Gif() 
      { 
       WidthRequest = 120, 
       HorizontalOptions = LayoutOptions.CenterAndExpand, 
       HeightRequest = 80, 
       VerticalOptions = LayoutOptions.CenterAndExpand, 
      }; 
      gifimage.GifSource = "icon1.png"; 
      StackGif.Children.Add(gifimage); 

      Content = StackGif; 
     } 

enter image description here

Прозрачность WebView отличается проблема. Вы должны использовать пользовательские визуализаторы https://forums.xamarin.com/discussion/34957/creating-a-webview-with-a-transparent-background

+0

Позвольте мне попробовать и вернуться к вам. –

+0

нет. Это не работает. Я попытался добавить тест в HTML, но все же не работает от меня. ' hello ' –

+0

Фактически, я пробовал этот код, и это тоже не работает для меня, есть что-то, что мне не хватает. 'https: // developer.xamarin.com/руководства/xamarin-forms/user-interface/webview/# HTML_Strings' –

Смежные вопросы