Применение анимаций фигур в презентациях на Android
Анимация — это визуальные эффекты, которые можно применять к тексту, изображениям, фигурам или диаграммам. Они оживляют презентации и их содержимое.
Почему использовать анимацию в презентациях?
С помощью анимации вы можете
- контролировать поток информации
- выделять важные моменты
- повышать интерес и вовлечённость аудитории
- упрощать чтение, восприятие и обработку контента
- привлекать внимание читателей или зрителей к важным частям презентации
PowerPoint предоставляет множество параметров и инструментов для анимаций и анимационных эффектов в категориях вход, выход, акцент и траектории движения.
Анимация в Aspose.Slides
- Aspose.Slides предоставляет классы и типы, необходимые для работы с анимациями в пространстве имён
Aspose.Slides.Animation, - Aspose.Slides предлагает более 150 анимационных эффектов в перечислении EffectType. Эти эффекты практически идентичны (или эквивалентны) тем, что использует PowerPoint.
Применение анимации к TextBox
Aspose.Slides for Android via Java позволяет применять анимацию к тексту в фигуре.
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте
rectangleIAutoShape. - Добавьте текст в IAutoShape.TextFrame.
- Получите главную последовательность эффектов.
- Добавьте анимационный эффект к IAutoShape.
- Установите свойство
TextAnimation.BuildTypeв значение из перечисленияBuildType. - Запишите презентацию на диск в виде файла PPTX.
В этом Java‑коде показано, как применить эффект Fade к AutoShape и задать анимацию текста со значением By 1st Level Paragraphs:
// Создает экземпляр класса презентации, представляющего файл презентации.
Presentation pres = new Presentation();
try {
ISlide sld = pres.getSlides().get_Item(0);
// Добавляет новый AutoShape с текстом
IAutoShape autoShape = sld.getShapes().addAutoShape(ShapeType.Rectangle, 20, 20, 150, 100);
ITextFrame textFrame = autoShape.getTextFrame();
textFrame.setText("First paragraph \nSecond paragraph \n Third paragraph");
// Получает основную последовательность слайда.
ISequence sequence = sld.getTimeline().getMainSequence();
// Добавляет эффект анимации Fade к фигуре
IEffect effect = sequence.addEffect(autoShape, EffectType.Fade, EffectSubtype.None, EffectTriggerType.OnClick);
// Анимирует текст фигуры по абзацам первого уровня
effect.getTextAnimation().setBuildType(BuildType.ByLevelParagraphs1);
// Сохраняет файл PPTX на диск
pres.save(path + "AnimText_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Применение анимации к PictureFrame
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте или получите PictureFrame на слайде.
- Получите главную последовательность эффектов.
- Добавьте анимационный эффект к PictureFrame.
- Запишите презентацию на диск в виде файла PPTX.
В этом Java‑коде показано, как применить эффект Fly к рамке изображения:
// Создает экземпляр класса презентации, представляющего файл презентации.
Presentation pres = new Presentation();
try {
// Загружает изображение, которое будет добавлено в коллекцию изображений презентации
IPPImage picture;
IImage image = Images.fromFile("aspose-logo.jpg");
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) image.dispose();
}
// Добавляет кадр изображения на слайд
IPictureFrame picFrame = pres.getSlides().get_Item(0).getShapes().addPictureFrame(ShapeType.Rectangle, 50, 50, 100, 100, picture);
// Получает основную последовательность слайда.
ISequence sequence = pres.getSlides().get_Item(0).getTimeline().getMainSequence();
// Добавляет эффект анимации Fly слева к кадру изображения
IEffect effect = sequence.addEffect(picFrame, EffectType.Fly, EffectSubtype.Left, EffectTriggerType.OnClick);
// Сохраняет файл PPTX на диск
pres.save(path + "AnimImage_out.pptx", SaveFormat.Pptx);
} catch(IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Применение анимации к Shape
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте
rectangleIAutoShape. - Добавьте
BevelIAutoShape (при щелчке по этому объекту будет воспроизводиться анимация). - Создайте последовательность эффектов для фигуры с фаской.
- Создайте пользовательский
UserPath. - Добавьте команды перемещения по
UserPath. - Запишите презентацию на диск в виде файла PPTX.
В этом Java‑коде показано, как применить эффект PathFootball (трасса «футбол») к фигуре:
// Создает экземпляр класса Presentation, представляющего файл PPTX.
Presentation pres = new Presentation();
try {
ISlide sld = pres.getSlides().get_Item(0);
// Создает эффект PathFootball для существующей фигуры с нуля.
IAutoShape ashp = sld.getShapes().addAutoShape(ShapeType.Rectangle, 150, 150, 250, 25);
ashp.addTextFrame("Animated TextBox");
// Добавляет анимационный эффект PathFootBall
pres.getSlides().get_Item(0).getTimeline().getMainSequence().addEffect(ashp, EffectType.PathFootball,
EffectSubtype.None, EffectTriggerType.AfterPrevious);
// Создает некую «кнопку».
IShape shapeTrigger = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Bevel, 10, 10, 20, 20);
// Создает последовательность эффектов для этой кнопки.
ISequence seqInter = pres.getSlides().get_Item(0).getTimeline().getInteractiveSequences().add(shapeTrigger);
// Создает пользовательский путь. Наш объект будет перемещён только после нажатия кнопки.
IEffect fxUserPath = seqInter.addEffect(ashp, EffectType.PathUser, EffectSubtype.None, EffectTriggerType.OnClick);
// Добавляет команды перемещения, так как созданный путь пуст.
IMotionEffect motionBhv = ((IMotionEffect)fxUserPath.getBehaviors().get_Item(0));
Point2D.Float[] pts = new Point2D.Float[1];
pts[0] = new Point2D.Float(0.076f, 0.59f);
motionBhv.getPath().add(MotionCommandPathType.LineTo, pts, MotionPathPointsType.Auto, true);
pts[0] = new Point2D.Float(-0.076f, -0.59f);
motionBhv.getPath().add(MotionCommandPathType.LineTo, pts, MotionPathPointsType.Auto, false);
motionBhv.getPath().add(MotionCommandPathType.End, null, MotionPathPointsType.Auto, false);
// Записывает файл PPTX на диск
pres.save("AnimExample_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Получение анимационных эффектов, применённых к Shape
Ниже приведены примеры, показывающие, как воспользоваться методом getEffectsByShape интерфейса ISequence для получения всех анимационных эффектов, применённых к фигуре.
Пример 1: Получить анимационные эффекты, применённые к фигуре на обычном слайде
Ранее вы изучали, как добавлять анимационные эффекты к фигурам в презентациях PowerPoint. Следующий пример кода демонстрирует, как получить эффекты, применённые к первой фигуре на первом обычном слайде в презентации AnimExample_out.pptx.
Presentation presentation = new Presentation("AnimExample_out.pptx");
try {
ISlide firstSlide = presentation.getSlides().get_Item(0);
// Получает основную последовательность анимаций слайда.
ISequence sequence = firstSlide.getTimeline().getMainSequence();
// Получает первую фигуру на первом слайде.
IShape shape = firstSlide.getShapes().get_Item(0);
// Получает анимационные эффекты, применённые к фигуре.
IEffect[] shapeEffects = sequence.getEffectsByShape(shape);
if (shapeEffects.length > 0)
System.out.println("The shape " + shape.getName() + " has " + shapeEffects.length + " animation effects.");
} finally {
if (presentation != null) presentation.dispose();
}
Пример 2: Получить все анимационные эффекты, включая унаследованные от плейсхолдеров
Если фигура на обычном слайде имеет плейсхолдеры, находящиеся в шаблоне слайда и/или в главном слайде, и к этим плейсхолдерам добавлены анимационные эффекты, то все эффекты фигуры будут воспроизводиться во время показа, включая унаследованные от плейсхолдеров.
Предположим, у нас есть файл презентации PowerPoint sample.pptx с одним слайдом, содержащим только нижний колонтитул с текстом «Made with Aspose.Slides», к которому применён эффект Random Bars.

Допустим, к плейсхолдеру нижнего колонтитула на шаблонном слайде применён эффект Split.

И, наконец, к плейсхолдеру нижнего колонтитула на главном слайде применён эффект Fly In.

Следующий пример кода показывает, как воспользоваться методом getBasePlaceholder интерфейса IShape для доступа к плейсхолдерам фигуры и получения анимационных эффектов, применённых к нижнему колонтитулу, включая унаследованные от плейсхолдеров, расположенных в шаблоне и главном слайдах.
Presentation presentation = new Presentation("sample.pptx");
ISlide slide = presentation.getSlides().get_Item(0);
// Получить анимационные эффекты фигуры на обычном слайде.
IShape shape = slide.getShapes().get_Item(0);
IEffect[] shapeEffects = slide.getTimeline().getMainSequence().getEffectsByShape(shape);
// Получить анимационные эффекты заполнителя на слайде макета.
IShape layoutShape = shape.getBasePlaceholder();
IEffect[] layoutShapeEffects = slide.getLayoutSlide().getTimeline().getMainSequence().getEffectsByShape(layoutShape);
// Получить анимационные эффекты заполнителя на главном слайде.
IShape masterShape = layoutShape.getBasePlaceholder();
IEffect[] masterShapeEffects = slide.getLayoutSlide().getMasterSlide().getTimeline().getMainSequence().getEffectsByShape(masterShape);
System.out.println("Main sequence of shape effects:");
printEffects(masterShapeEffects);
printEffects(layoutShapeEffects);
printEffects(shapeEffects);
presentation.dispose();
static void printEffects(IEffect[] effects)
{
for (IEffect effect : effects)
{
String typeName = EffectType.getName(EffectType.class, effect.getType());
String subtypeName = EffectSubtype.getName(EffectSubtype.class, effect.getSubtype());
System.out.println(typeName + " " + subtypeName);
}
}
Output:
Main sequence of shape effects:
Fly Bottom
Split VerticalIn
RandomBars Horizontal
Изменение свойств времени анимационного эффекта
Aspose.Slides for Android via Java позволяет изменять свойства Timing (время) анимационного эффекта.
Это панель Timing в Microsoft PowerPoint:

Соответствия между Timing PowerPoint и свойствами Effect.Timing:
- Выпадающий список Start в PowerPoint соответствует свойству Effect.Timing.TriggerType.
- Duration в PowerPoint соответствует свойству Effect.Timing.Duration. Длительность анимации (в секундах) — это общее время, необходимое для завершения одного цикла анимации.
- Delay в PowerPoint соответствует свойству Effect.Timing.TriggerDelayTime.
Как изменить свойства Timing эффекта:
- Примените или получите анимационный эффект.
- Установите новые значения свойств Effect.Timing по необходимости.
- Сохраните изменённый файл PPTX.
Этот Java‑код демонстрирует указанную операцию:
// Создает экземпляр класса презентации, представляющего файл презентации.
Presentation pres = new Presentation("AnimExample_out.pptx");
try {
// Получает основную последовательность слайда.
ISequence sequence = pres.getSlides().get_Item(0).getTimeline().getMainSequence();
// Получает первый эффект основной последовательности.
IEffect effect = sequence.get_Item(0);
// Изменяет TriggerType эффекта, чтобы запускать по щелчку
effect.getTiming().setTriggerType(EffectTriggerType.OnClick);
// Изменяет длительность эффекта
effect.getTiming().setDuration(3f);
// Изменяет время задержки TriggerDelayTime эффекта
effect.getTiming().setTriggerDelayTime(0.5f);
// Сохраняет файл PPTX на диск
pres.save("AnimExample_changed.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Звук анимационного эффекта
Aspose.Slides предоставляет следующие свойства для работы со звуками в анимационных эффектах:
Добавление звука к анимационному эффекту
Этот Java‑код показывает, как добавить звук к анимационному эффекту и остановить его, когда начинается следующий эффект:
Presentation pres = new Presentation("AnimExample_out.pptx");
try {
// Добавляет аудио в коллекцию аудио презентации
IAudio effectSound = pres.getAudios().addAudio(Files.readAllBytes(Paths.get("sampleaudio.wav")));
ISlide firstSlide = pres.getSlides().get_Item(0);
// Получает основную последовательность слайда.
ISequence sequence = firstSlide.getTimeline().getMainSequence();
// Получает первый эффект основной последовательности
IEffect firstEffect = sequence.get_Item(0);
// Проверяет эффект на отсутствие звука
if (!firstEffect.getStopPreviousSound() && firstEffect.getSound() == null)
{
// Добавляет звук к первому эффекту
firstEffect.setSound(effectSound);
}
// Получает первую интерактивную последовательность слайда.
ISequence interactiveSequence = firstSlide.getTimeline().getInteractiveSequences().get_Item(0);
// Устанавливает флаг «Остановить предыдущий звук» для эффекта
interactiveSequence.get_Item(0).setStopPreviousSound(true);
// Сохраняет файл PPTX на диск
pres.save("AnimExample_Sound_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Извлечение звука из анимационного эффекта
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Получите главную последовательность эффектов.
- Извлеките встроенный в каждый анимационный эффект метод setSound(IAudio value).
Этот Java‑код показывает, как извлечь звук, встроенный в анимационный эффект:
// Создаёт экземпляр класса презентации, представляющего файл презентации.
Presentation presentation = new Presentation("EffectSound.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
// Получает основную последовательность слайда.
ISequence sequence = slide.getTimeline().getMainSequence();
for (IEffect effect : sequence)
{
if (effect.getSound() == null)
continue;
// Извлекает звук эффекта в массив байтов
byte[] audio = effect.getSound().getBinaryData();
}
} finally {
if (presentation != null) presentation.dispose();
}
After Animation
Aspose.Slides for Android via Java позволяет изменять свойство After animation (после анимации) анимационного эффекта.
Это панель Animation Effect и расширенное меню в Microsoft PowerPoint:

Выпадающий список After animation в PowerPoint соответствует следующим свойствам:
- Свойство setAfterAnimationType(int value) описывает тип After animation:
- Пункт More Colors соответствует типу AfterAnimationType.Color;
- Пункт Don’t Dim соответствует типу AfterAnimationType.DoNotDim (по умолчанию);
- Пункт Hide After Animation соответствует типу AfterAnimationType.HideAfterAnimation;
- Пункт Hide on Next Mouse Click соответствует типу AfterAnimationType.HideOnNextMouseClick.
- Свойство setAfterAnimationColor(IColorFormat value) определяет формат цвета после анимации. Оно работает совместно с типом AfterAnimationType.Color. При изменении типа на иной цвет будет сброшен.
Этот Java‑код показывает, как изменить эффект after animation:
// Создает экземпляр класса презентации, представляющего файл презентации
Presentation pres = new Presentation("AnimImage_out.pptx");
try {
ISlide firstSlide = pres.getSlides().get_Item(0);
// Получает первый эффект основной последовательности
IEffect firstEffect = firstSlide.getTimeline().getMainSequence().get_Item(0);
// Изменяет тип After animation на Color
firstEffect.setAfterAnimationType(AfterAnimationType.Color);
// Устанавливает цвет затемнения After animation
firstEffect.getAfterAnimationColor().setColor(Color.BLUE);
// Сохраняет файл PPTX на диск
pres.save("AnimImage_AfterAnimation.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Animate Text
Aspose.Slides предоставляет следующие свойства для работы с блоком Animate text анимационного эффекта:
- setAnimateTextType(int value) описывает тип анимации текста эффекта. Текст фигуры может анимироваться:
- Всё сразу (AnimateTextType.AllAtOnce);
- По словам (AnimateTextType.ByWord);
- По буквам (AnimateTextType.ByLetter).
- setDelayBetweenTextParts(float value) задаёт задержку между анимированными частями текста (словами или буквами). Положительное значение указывает процент длительности эффекта, отрицательное — задержку в секундах.
Как изменить свойства Animate text эффекта:
- Примените или получите анимационный эффект.
- Установите свойство setBuildType(int value) в значение BuildType.AsOneObject, чтобы отключить режим By Paragraphs.
- Установите новые значения для свойств setAnimateTextType(int value) и setDelayBetweenTextParts(float value).
- Сохраните изменённый файл PPTX.
Этот Java‑код демонстрирует операцию:
// Создает экземпляр класса презентации, представляющего файл презентации.
Presentation pres = new Presentation("AnimTextBox_out.pptx");
try {
ISlide firstSlide = pres.getSlides().get_Item(0);
// Получает первый эффект основной последовательности
IEffect firstEffect = firstSlide.getTimeline().getMainSequence().get_Item(0);
// Меняет тип анимации текста эффекта на "As One Object"
firstEffect.getTextAnimation().setBuildType(BuildType.AsOneObject);
// Меняет тип Animate text эффекта на "By word"
firstEffect.setAnimateTextType(AnimateTextType.ByWord);
// Устанавливает задержку между словами в 20% длительности эффекта
firstEffect.setDelayBetweenTextParts(20f);
// Записывает файл PPTX на диск
pres.save("AnimTextBox_AnimateText.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
FAQ
Как гарантировать сохранение анимаций при публикации презентации в веб?
Экспорт в HTML5 и включение опций для анимации shape и transition. Обычный HTML не воспроизводит анимацию слайдов, тогда как HTML5 — делает.
Как изменение порядка слоёв (z‑order) фигур влияет на анимацию?
Порядок анимации и порядок отрисовки независимы: эффект управляет временем и типом появления/исчезновения, тогда как z‑order определяет, что покрывает что. Видимый результат формируется их совместным действием. (Это общее поведение PowerPoint; модель Aspose.Slides «эффекты‑и‑фигуры» следует той же логике.)
Есть ли ограничения при конвертации анимаций в видео для некоторых эффектов?
В целом анимации поддерживаются, но редкие случаи или специфические эффекты могут быть отрендерены иначе. Рекомендуется протестировать используемые эффекты и выбранную версию библиотеки.