Animate GIF file in TTMSFMXHTMLText

Is there a way to animate GIF file in TTMSFMXHTMLText?

Sorry, there is at this time unfortunately not support for animated GIF files in TTMSFMXHTMLText.

Is there any update on your roadmap for this?

At this moment, all our resources are fully allocated. We can only consider this development when the current very high workload with a big ongoing project is somewhat relieved.  

I asked the question as I am trying to clone Skype. For animated GIF I am using TImage with FMX.GifUtils and put the TImage component in TTMSFMXHTMLText. If it support animate GIF then it will be easy. As now I have to calculate whole text along with the Emoticons and place them in TTMSFMXHTMLText. I have manage whole thing of Skype message part only problem is with the GIF file.

Alternatively, you could split up the gif in different image parts and add them to a TTMSFMXBitmapContainer which is hooked up to the TTMSFMXHTMLText. Starting a timer which increments a counter and forces a repaint of the TTMSFMXHTMLText which then references an image based on that container. This way, you'll have an animated image combined with HTML text.

How to add image of TTMSFMXBitmapContainer in TTMSFMXHTMLText?

You can use the img tag with a reference to the image name stored in the TTMSFMXBitmapContainer items collection. <img src="MyImage"/>

I have manage GIF animation using TTMSFMXBitmapContainer and it's working great. If you add multiple emoticon all emoticons are animated. Now I need tooltip to show hint of the GIF. Does 'title' attribute support on tmg tag?

Sorry, at this moment there is no such title attribute/tooltip support in TTMSFMXHTMLText

Timer event is not fireing on Linux (FMXLinux) and Android. Can you please suggest how to overcome it on thoese 2 platform. Windows and MacOS working well with Timer, I can't test on iPhone as I don't have iPhone. I create a new class to animate the TTMSFMXBitmapContainer's images on TTMSFMXHTMLText with TTimer as Pieter suggestion. I set TTimer interval to 50 as there will be many <img src="MyImage"/> on my message area which can't be limited. Like Skype there is no limit to insert Emoticons.

This is surprising.
Do you see the TTimer also not working when you use it on a standalone application targeting Android or Linux?

Actually in Linux it's a bit difference
https://mega.nz/#!PwNmBaJB!DcrZszxb2WNxs7K40BOvDIu7IFmKXEUVvRKiu5llsF0
https://mega.nz/#!XtsgHBIb!1B-70uwEad6wdYdaArJelZf9bRY8mT9fVEALnC6ZkbE

see those images in Linux, it's a weired. But in Android nothing is working.

Is the timer effectively triggering and are you effectively updating the control from the timer?

//this is my class for animate bitmapcontainer's bitmaps
  TEmoAnimate = class
  private
    fTimer: TTimer;
    fCurrentFrame: Integer;
    fMsgbox: TTMSFMXHTMLText;
    fEmoCount: Integer;
    fEmoName: String;
    fWidth, fHeight: Integer;
    vtext: String;
    fEmoText: String;
  protected
    procedure TimerOnTimer(Sender: TObject);
  public
    constructor Create(AOwner: TComponent; AMsgBox: TTMSFMXHTMLText;
      AEmoCount: Integer; AEmoName: String; AWidth, AHeight: Integer;
      AEmoText: String);
    destructor Destroy; override;
    procedure Animate;
  end;

{ TEmoAnimate }

procedure TEmoAnimate.Animate;
begin
  fTimer.Enabled := True;
end;

constructor TEmoAnimate.Create(AOwner: TComponent; AMsgBox: TTMSFMXHTMLText;
  AEmoCount: Integer; AEmoName: String; AWidth, AHeight: Integer;
  AEmoText: String);
begin
  fTimer := TTimer.Create(AOwner);
  fTimer.Interval := 50;
  fMsgbox := AMsgBox;
  fEmoCount := AEmoCount;
  fEmoName := AEmoName;
  fCurrentFrame := 1;
  fWidth := AWidth;
  fHeight := AHeight;
  fEmoText := AEmoText;
  vtext := '';
  fTimer.OnTimer := TimerOnTimer;
end;

destructor TEmoAnimate.Destroy;
begin
  fTimer.Free;
  inherited;
end;

procedure TEmoAnimate.TimerOnTimer(Sender: TObject);
begin
  if fCurrentFrame = fEmoCount + 1 then
    fCurrentFrame := 1;

  if vtext = '' then
    vtext := fEmoText;
  fMsgbox.Text := StringReplace(fMsgbox.Text, vtext,
    Format('<img src="%s,%d" width="%d" height="%d"/>',
    [fEmoName, fCurrentFrame, fWidth, fHeight]), [rfReplaceAll]);
  vtext := Format('<img src="%s,%d" width="%d" height="%d"/>',
    [fEmoName, fCurrentFrame, fWidth, fHeight]);
  Inc(fCurrentFrame);
end;

//this is where I call this class
var
  vemos: TList<TAddedEmoticon>;
  vemo: TAddedEmoticon;
  emoanimate: TEmoAnimate;
  vemotext: string;
  fTitle: string;
begin
    for vemo in vemos do
    begin
      fTitle := Format('%s %s', [vemo.Name, vemo.Key]);
      vemotext := Format('<img src="%s,%d" width="40" height="40"/>',
        [vemo.Name, 1]);
      emoanimate := TEmoAnimate.Create(Owner, fMsgbox.MyMsg, vemo.NumberOfFrame,
        vemo.Name, 40, 40, vemotext);
      emoanimate.Animate;
    end;
end;
fMsgbox.MyMsg is a TTMSFMXHTMLText

I fixed it by creating a new TTimer component with Annonomyus Timer method. Now it's working in all platform.

Thanks for informing.