Не могу получить GIF-анимацию - PullRequest
0 голосов
/ 13 февраля 2012

Я не могу получить анимированный GIF-анимацию в CLabel.Я также попробовал Label.

final CLabel lblSpinner = new CLabel(this, SWT.NONE);
lblSpinner.setImage(SWTResourceManager.getImage(Installation_4.class, "/resources/spinner_anim_16.gif"));

Что не так?Отображается только первый GIF.В RCP я должен анимировать программно, но в RAP это должна быть работа для браузера, как я думал.

1 Ответ

1 голос
/ 14 февраля 2012

Следующий фрагмент кода работает с RAP как с Label, так и с CLabel:

public class AnimatedGifSnippet implements IEntryPoint {

  public int createUI() {
    Display display = new Display();
    Shell shell = new Shell( display );
    shell.setLayout( new GridLayout() );

    Image image = createImage( display, "resources/loading.gif" );
    Label label = new Label( shell, SWT.NONE );
    label.setImage( image );

    shell.layout();
    shell.open();
    return 0;
  }

  private Image createImage( Display display, String resourceName ) {
    ClassLoader classLoader = getClass().getClassLoader();
    InputStream inputStream = classLoader.getResourceAsStream( resourceName );
    if( inputStream == null ) {
      throw new IllegalArgumentException( "Resource not found: " + resourceName );
    }
    try {
      return new Image( display, inputStream );
    } finally {
      try {
        inputStream.close();
      } catch( IOException exception ) {
        // TODO handle exception
      }
    }
  }
}

Если это не работает с вашим изображением, значит, проблема в самом изображении. В противном случае вы, должно быть, делаете что-то не так в вашем SWTResourceManager.getImage() методе. Обратите внимание, что если вы создадите Image из ImageData, они будут содержать только один кадр анимированного GIF.

...