Aplikace animací tvarů v prezentacích na Androidu
Úvod
Animace jsou vizuální efekty, které lze použít na texty, obrázky, tvary nebo grafy. Dodávají život prezentacím nebo jejich částem.
Proč používat animace v prezentacích?
- ovládat tok informací
- zdůraznit důležité body
- zvýšit zájem nebo zapojení publika
- usnadnit čtení nebo zpracování obsahu
- upoutat pozornost čtenářů či diváků na důležité části v prezentaci
PowerPoint poskytuje mnoho možností a nástrojů pro animace a animační efekty v kategoriích vstup, ukončení, zdůraznění a cesty pohybu.
Animace v Aspose.Slides
- Aspose.Slides poskytuje třídy a typy potřebné pro práci s animacemi v namespace
Aspose.Slides.Animation, - Aspose.Slides poskytuje více než 150 animačních efektů v enumeraci EffectType. Tyto efekty jsou v podstatě stejné (nebo ekvivalentní) efektům používaným v PowerPointu.
Použití animace na TextBox
Aspose.Slides pro Android přes Java vám umožňuje použít animaci na text ve tvaru.
- Vytvořte instanci třídy Presentation.
- Získejte referenci na snímek podle jeho indexu.
- Přidejte
rectangleIAutoShape. - Přidejte text do IAutoShape.TextFrame.
- Získejte hlavní sekvenci efektů.
- Přidejte animační efekt k IAutoShape.
- Nastavte vlastnost
TextAnimation.BuildTypena hodnotu z enumeraceBuildType. - Uložte prezentaci na disk jako soubor PPTX.
// Instancuje třídu prezentace, která představuje soubor prezentace.
Presentation pres = new Presentation();
try {
ISlide sld = pres.getSlides().get_Item(0);
// Přidá nový AutoShape s textem
IAutoShape autoShape = sld.getShapes().addAutoShape(ShapeType.Rectangle, 20, 20, 150, 100);
ITextFrame textFrame = autoShape.getTextFrame();
textFrame.setText("First paragraph \nSecond paragraph \n Third paragraph");
// Získá hlavní sekvenci snímku.
ISequence sequence = sld.getTimeline().getMainSequence();
// Přidá efekt Fade animace k tvaru
IEffect effect = sequence.addEffect(autoShape, EffectType.Fade, EffectSubtype.None, EffectTriggerType.OnClick);
// Animuje text tvaru podle odstavců první úrovně
effect.getTextAnimation().setBuildType(BuildType.ByLevelParagraphs1);
// Uloží soubor PPTX na disk
pres.save(path + "AnimText_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Použití animace na PictureFrame
- Vytvořte instanci třídy Presentation.
- Získejte referenci na snímek podle jeho indexu.
- Přidejte nebo získejte PictureFrame na snímku.
- Získejte hlavní sekvenci efektů.
- Přidejte animační efekt k PictureFrame.
- Uložte prezentaci na disk jako soubor PPTX.
// Instancuje třídu prezentace, která představuje soubor prezentace.
Presentation pres = new Presentation();
try {
// Načte obrázek, který bude přidán do kolekce obrázků prezentace
IPPImage picture;
IImage image = Images.fromFile("aspose-logo.jpg");
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) image.dispose();
}
// Přidá rámeček obrázku na snímek
IPictureFrame picFrame = pres.getSlides().get_Item(0).getShapes().addPictureFrame(ShapeType.Rectangle, 50, 50, 100, 100, picture);
// Získá hlavní sekvenci snímku.
ISequence sequence = pres.getSlides().get_Item(0).getTimeline().getMainSequence();
// Přidá efekt animace Fly zleva k rámečku obrázku
IEffect effect = sequence.addEffect(picFrame, EffectType.Fly, EffectSubtype.Left, EffectTriggerType.OnClick);
// Uloží soubor PPTX na disk
pres.save(path + "AnimImage_out.pptx", SaveFormat.Pptx);
} catch(IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Použití animace na tvar
- Vytvořte instanci třídy Presentation.
- Získejte referenci na snímek podle jeho indexu.
- Přidejte
rectangleIAutoShape. - Přidejte
BevelIAutoShape (když je tento objekt kliknut, animace se spustí). - Vytvořte sekvenci efektů na tvaru Bevel.
- Vytvořte vlastní
UserPath. - Přidejte příkazy pro pohyb k
UserPath. - Uložte prezentaci na disk jako soubor PPTX.
// Instancuje třídu Presentation, která představuje soubor PPTX.
Presentation pres = new Presentation();
try {
ISlide sld = pres.getSlides().get_Item(0);
// Vytvoří efekt PathFootball pro existující tvar od nuly.
IAutoShape ashp = sld.getShapes().addAutoShape(ShapeType.Rectangle, 150, 150, 250, 25);
ashp.addTextFrame("Animated TextBox");
// Přidá animační efekt PathFootBall
pres.getSlides().get_Item(0).getTimeline().getMainSequence().addEffect(ashp, EffectType.PathFootball,
EffectSubtype.None, EffectTriggerType.AfterPrevious);
// Vytvoří nějaký druh "tlačítka".
IShape shapeTrigger = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Bevel, 10, 10, 20, 20);
// Vytvoří sekvenci efektů pro toto tlačítko.
ISequence seqInter = pres.getSlides().get_Item(0).getTimeline().getInteractiveSequences().add(shapeTrigger);
// Vytvoří vlastní uživatelskou cestu. Náš objekt bude přesunut až po kliknutí na tlačítko.
IEffect fxUserPath = seqInter.addEffect(ashp, EffectType.PathUser, EffectSubtype.None, EffectTriggerType.OnClick);
// Přidá příkazy pro pohyb, protože vytvořená cesta je prázdná.
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);
// Uloží soubor PPTX na disk
pres.save("AnimExample_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Získání animačních efektů aplikovaných na tvar
Následující příklady ukazují, jak použít metodu getEffectsByShape z rozhraní ISequence k získání všech animačních efektů aplikovaných na tvar.
Příklad 1: Získání animačních efektů aplikovaných na tvar na běžném snímku
Dříve jste se naučili, jak přidávat animační efekty do tvarů v prezentacích PowerPoint. Následující ukázkový kód ukazuje, jak získat efekty aplikované na první tvar na prvním běžném snímku v prezentaci AnimExample_out.pptx.
Presentation presentation = new Presentation("AnimExample_out.pptx");
try {
ISlide firstSlide = presentation.getSlides().get_Item(0);
// Získá hlavní animační sekvenci snímku.
ISequence sequence = firstSlide.getTimeline().getMainSequence();
// Získá první tvar na prvním snímku.
IShape shape = firstSlide.getShapes().get_Item(0);
// Získá animační efekty aplikované na tvar.
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();
}
Příklad 2: Získání všech animačních efektů, včetně těch zděděných z placeholderů
Pokud má tvar na běžném snímku placeholdery, které jsou na snímku rozvržení a/nebo hlavním snímku, a na tyto placeholdery byly přidány animační efekty, pak budou během prezentace přehrány všechny efekty tvaru, včetně těch zděděných z placeholderů.
Předpokládejme, že máme soubor PowerPoint prezentace sample.pptx s jedním snímkem, který obsahuje pouze tvar zápatí s textem „Made with Aspose.Slides“ a na tvar je aplikován efekt Random Bars.

Předpokládejme také, že efekt Split je aplikován na placeholder zápatí na layout snímku.

A nakonec je efekt Fly In aplikován na placeholder zápatí na master snímku.

Následující ukázkový kód ukazuje, jak použít metodu getBasePlaceholder z rozhraní IShape k přístupu k placeholderům tvaru a získání animačních efektů aplikovaných na tvar zápatí, včetně těch zděděných z placeholderů umístěných na layoutu a master snímcích.
Presentation presentation = new Presentation("sample.pptx");
ISlide slide = presentation.getSlides().get_Item(0);
// Get animation effects of the shape on the normal slide.
IShape shape = slide.getShapes().get_Item(0);
IEffect[] shapeEffects = slide.getTimeline().getMainSequence().getEffectsByShape(shape);
// Get animation effects of the placeholder on the layout slide.
IShape layoutShape = shape.getBasePlaceholder();
IEffect[] layoutShapeEffects = slide.getLayoutSlide().getTimeline().getMainSequence().getEffectsByShape(layoutShape);
// Get animation effects of the placeholder on the master slide.
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);
}
}
Main sequence of shape effects:
Fly Bottom
Split VerticalIn
RandomBars Horizontal
Změna časových vlastností animačního efektu
Aspose.Slides pro Android přes Java vám umožňuje měnit časové vlastnosti animačního efektu.

Jedná se o odpovídající položky mezi časováním PowerPointu a vlastnostmi Effect.Timing:
- Rozbalovací seznam Start v časování PowerPointu odpovídá vlastnosti Effect.Timing.TriggerType.
- Časování PowerPoint Duration odpovídá vlastnosti Effect.Timing.Duration. Délka animace (v sekundách) je celkový čas potřebný k dokončení jednoho cyklu animace.
- Časování PowerPoint Delay odpovídá vlastnosti Effect.Timing.TriggerDelayTime.
Takto změníte vlastnosti časování efektu:
- Použijte nebo získejte animační efekt.
- Nastavte nové hodnoty pro požadované vlastnosti Effect.Timing.
- Uložte upravený soubor PPTX.
// Instancuje třídu prezentace, která představuje soubor prezentace.
Presentation pres = new Presentation("AnimExample_out.pptx");
try {
// Získá hlavní sekvenci snímku.
ISequence sequence = pres.getSlides().get_Item(0).getTimeline().getMainSequence();
// Získá první efekt hlavní sekvence.
IEffect effect = sequence.get_Item(0);
// Změní TriggerType efektu na spuštění kliknutím
effect.getTiming().setTriggerType(EffectTriggerType.OnClick);
// Změní délku trvání efektu
effect.getTiming().setDuration(3f);
// Změní TriggerDelayTime efektu
effect.getTiming().setTriggerDelayTime(0.5f);
// Uloží soubor PPTX na disk
pres.save("AnimExample_changed.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Zvuk animačního efektu
Aspose.Slides poskytuje tyto vlastnosti, které umožňují pracovat se zvuky v animačních efektech:
Přidání zvuku animačního efektu
Tento Java kód ukazuje, jak přidat zvuk animačního efektu a zastavit jej, když začne další efekt:
Presentation pres = new Presentation("AnimExample_out.pptx");
try {
// Přidá zvuk do kolekce audia prezentace
IAudio effectSound = pres.getAudios().addAudio(Files.readAllBytes(Paths.get("sampleaudio.wav")));
ISlide firstSlide = pres.getSlides().get_Item(0);
// Získá hlavní sekvenci snímku.
ISequence sequence = firstSlide.getTimeline().getMainSequence();
// Získá první efekt hlavní sekvence
IEffect firstEffect = sequence.get_Item(0);
// Kontroluje efekt na "No Sound"
if (!firstEffect.getStopPreviousSound() && firstEffect.getSound() == null)
{
// Přidá zvuk k prvnímu efektu
firstEffect.setSound(effectSound);
}
// Získá první interaktivní sekvenci snímku.
ISequence interactiveSequence = firstSlide.getTimeline().getInteractiveSequences().get_Item(0);
// Nastaví příznak "Stop previous sound" pro efekt
interactiveSequence.get_Item(0).setStopPreviousSound(true);
// Uloží soubor PPTX na disk
pres.save("AnimExample_Sound_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Extrahování zvuku animačního efektu
- Vytvořte instanci třídy Presentation.
- Získejte referenci na snímek podle jeho indexu.
- Získejte hlavní sekvenci efektů.
- Extrahujte vložený setSound(IAudio value) ke každému animačnímu efektu.
// Instancuje třídu prezentace, která představuje soubor prezentace.
Presentation presentation = new Presentation("EffectSound.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
// Získá hlavní sekvenci snímku.
ISequence sequence = slide.getTimeline().getMainSequence();
for (IEffect effect : sequence)
{
if (effect.getSound() == null)
continue;
// Extrahuje zvuk efektu do pole bajtů
byte[] audio = effect.getSound().getBinaryData();
}
} finally {
if (presentation != null) presentation.dispose();
}
Po animaci
Aspose.Slides pro Android přes Java vám umožňuje změnit vlastnost After animation (po animaci) animačního efektu.

Rozbalovací seznam PowerPoint efektu After animation odpovídá těmto vlastnostem:
- Vlastnost setAfterAnimationType(int value) , která popisuje typ After animation:
- PowerPoint More Colors odpovídá typu AfterAnimationType.Color;
- PowerPoint Don’t Dim odpovídá typu AfterAnimationType.DoNotDim (výchozí typ po animaci);
- PowerPoint Hide After Animation odpovídá typu AfterAnimationType.HideAfterAnimation;
- PowerPoint Hide on Next Mouse Click odpovídá typu AfterAnimationType.HideOnNextMouseClick;
- Vlastnost setAfterAnimationColor(IColorFormat value) , která definuje formát barvy po animaci. Tato vlastnost funguje ve spojení s typem AfterAnimationType.Color. Pokud typ změníte na jiný, barva po animaci bude vymazána.
// Instancuje třídu prezentace, která představuje soubor prezentace
Presentation pres = new Presentation("AnimImage_out.pptx");
try {
ISlide firstSlide = pres.getSlides().get_Item(0);
// Získá první efekt hlavní sekvence
IEffect firstEffect = firstSlide.getTimeline().getMainSequence().get_Item(0);
// Změní typ after animation na Color
firstEffect.setAfterAnimationType(AfterAnimationType.Color);
// Nastaví barvu po animaci
firstEffect.getAfterAnimationColor().setColor(Color.BLUE);
// Uloží soubor PPTX na disk
pres.save("AnimImage_AfterAnimation.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Animovat text
Aspose.Slides poskytuje tyto vlastnosti, které umožňují pracovat s blokem Animate text animačního efektu:
- Vlastnost setAnimateTextType(int value) , která popisuje typ animace textu efektu. Text tvaru lze animovat:
- Vše najednou (AnimateTextType.AllAtOnce typ)
- Poslovně (AnimateTextType.ByWord typ)
- Po písmenu (AnimateTextType.ByLetter typ)
- setDelayBetweenTextParts(float value) nastavuje zpoždění mezi částmi animovaného textu (slovy nebo písmeny). Kladná hodnota udává procento trvání efektu. Záporná hodnota udává zpoždění v sekundách.
Takto můžete změnit vlastnosti Animate text efektu:
- Použijte nebo získejte animační efekt.
- Nastavte vlastnost setBuildType(int value) na hodnotu BuildType.AsOneObject , čímž vypnete režim animace By Paragraphs.
- Nastavte nové hodnoty pro vlastnosti setAnimateTextType(int value) a setDelayBetweenTextParts(float value).
- Uložte upravený soubor PPTX.
// Instancuje třídu prezentace, která představuje soubor prezentace.
Presentation pres = new Presentation("AnimTextBox_out.pptx");
try {
ISlide firstSlide = pres.getSlides().get_Item(0);
// Získá první efekt hlavní sekvence
IEffect firstEffect = firstSlide.getTimeline().getMainSequence().get_Item(0);
// Změní typ textové animace efektu na "As One Object"
firstEffect.getTextAnimation().setBuildType(BuildType.AsOneObject);
// Změní typ animace textu efektu na "By word"
firstEffect.setAnimateTextType(AnimateTextType.ByWord);
// Nastaví zpoždění mezi slovy na 20% trvání efektu
firstEffect.setDelayBetweenTextParts(20f);
// Uloží soubor PPTX na disk
pres.save("AnimTextBox_AnimateText.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Často kladené otázky
Jak mohu zajistit, že animace jsou zachovány při publikování prezentace na web?
Export do HTML5 a povolte možnosti odpovědné za animace shape a transition. Prostý HTML neumožňuje přehrávat animace snímků, zatímco HTML5 ano.
Jak ovlivní změna pořadí z (z‑order) vrstev tvarů animaci?
Animace a pořadí kreslení jsou nezávislé: efekt řídí časování a typ zobrazování/skrývání, zatímco z-order určuje, co co překrývá. Viditelný výsledek je definován jejich kombinací. (Jedná se o obecné chování PowerPointu; model efektů a tvarů Aspose.Slides následuje stejnou logiku.)
Existují omezení při převodu animací na video u některých efektů?
Obecně jsou animace podporovány, ale v ojedinělých případech nebo u specifických efektů může dojít k odlišnému vykreslení. Doporučuje se testovat s efekty, které používáte, a s konkrétní verzí knihovny.