Applica animazioni di forma nelle presentazioni su Android
Introduzione
Le animazioni sono effetti visivi che possono essere applicati a testi, immagini, forme o grafici. Danno vita alle presentazioni o ai loro componenti.
Perché usare le animazioni nelle presentazioni?
- controllare il flusso di informazioni
- enfatizzare i punti importanti
- aumentare l’interesse o la partecipazione del pubblico
- rendere il contenuto più facile da leggere, assimilare o elaborare
- attirare l’attenzione dei lettori o spettatori su parti importanti di una presentazione
PowerPoint fornisce molte opzioni e strumenti per le animazioni e gli effetti di animazione nelle categorie entrata, uscita, enfasi e percorsi di movimento.
Animazioni in Aspose.Slides
- Aspose.Slides fornisce le classi e i tipi necessari per lavorare con le animazioni nello spazio dei nomi
Aspose.Slides.Animation, - Aspose.Slides fornisce più di 150 effetti di animazione nell’enumerazione EffectType. Questi effetti sono sostanzialmente gli stessi (o equivalenti) utilizzati in PowerPoint.
Applicare un’animazione a una TextBox
Aspose.Slides per Android via Java consente di applicare animazioni al testo in una forma.
- Creare un’istanza della classe Presentation.
- Ottenere un riferimento a una diapositiva tramite il suo indice.
- Aggiungere una IAutoShape di tipo
rectangle. - Aggiungere testo a IAutoShape.TextFrame.
- Recuperare la sequenza principale degli effetti.
- Aggiungere un effetto di animazione a IAutoShape.
- Impostare la proprietà
TextAnimation.BuildTypeal valore dell’enumerazioneBuildType. - Scrivere la presentazione su disco come file PPTX.
Questo codice Java mostra come applicare l’effetto Fade a AutoShape e impostare l’animazione del testo al valore By 1st Level Paragraphs:
// Instanzia una classe di presentazione che rappresenta un file di presentazione.
Presentation pres = new Presentation();
try {
ISlide sld = pres.getSlides().get_Item(0);
// Aggiunge una nuova AutoShape con testo
IAutoShape autoShape = sld.getShapes().addAutoShape(ShapeType.Rectangle, 20, 20, 150, 100);
ITextFrame textFrame = autoShape.getTextFrame();
textFrame.setText("First paragraph \nSecond paragraph \n Third paragraph");
// Ottiene la sequenza principale della diapositiva.
ISequence sequence = sld.getTimeline().getMainSequence();
// Aggiunge l'effetto di animazione Fade alla forma
IEffect effect = sequence.addEffect(autoShape, EffectType.Fade, EffectSubtype.None, EffectTriggerType.OnClick);
// Anima il testo della forma per paragrafi di primo livello
effect.getTextAnimation().setBuildType(BuildType.ByLevelParagraphs1);
// Salva il file PPTX su disco
pres.save(path + "AnimText_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Applicare un’animazione a un PictureFrame
- Creare un’istanza della classe Presentation.
- Ottenere un riferimento a una diapositiva tramite il suo indice.
- Aggiungere o ottenere un PictureFrame sulla diapositiva.
- Recuperare la sequenza principale degli effetti.
- Aggiungere un effetto di animazione a PictureFrame.
- Scrivere la presentazione su disco come file PPTX.
Questo codice Java mostra come applicare l’effetto Fly a un picture frame:
// Instanzia una classe di presentazione che rappresenta un file di presentazione.
Presentation pres = new Presentation();
try {
// Carica l'immagine da aggiungere alla collezione di immagini della presentazione
IPPImage picture;
IImage image = Images.fromFile("aspose-logo.jpg");
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) image.dispose();
}
// Aggiunge un frame immagine alla diapositiva
IPictureFrame picFrame = pres.getSlides().get_Item(0).getShapes().addPictureFrame(ShapeType.Rectangle, 50, 50, 100, 100, picture);
// Ottiene la sequenza principale della diapositiva.
ISequence sequence = pres.getSlides().get_Item(0).getTimeline().getMainSequence();
// Aggiunge l'effetto di animazione Fly da sinistra al frame immagine
IEffect effect = sequence.addEffect(picFrame, EffectType.Fly, EffectSubtype.Left, EffectTriggerType.OnClick);
// Salva il file PPTX su disco
pres.save(path + "AnimImage_out.pptx", SaveFormat.Pptx);
} catch(IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Applicare un’animazione a una Shape
- Creare un’istanza della classe Presentation.
- Ottenere un riferimento a una diapositiva tramite il suo indice.
- Aggiungere una IAutoShape di tipo
rectangle. - Aggiungere un
BevelIAutoShape (quando questo oggetto viene cliccato, l’animazione viene riprodotta). - Creare una sequenza di effetti sulla forma bevel.
- Creare un
UserPathpersonalizzato. - Aggiungere comandi per spostarsi al
UserPath. - Scrivere la presentazione su disco come file PPTX.
Questo codice Java mostra come applicare l’effetto PathFootball (path football) a una shape:
// Istanzia una classe Presentation che rappresenta un file PPTX.
Presentation pres = new Presentation();
try {
ISlide sld = pres.getSlides().get_Item(0);
// Crea l'effetto PathFootball per una shape esistente da zero.
IAutoShape ashp = sld.getShapes().addAutoShape(ShapeType.Rectangle, 150, 150, 250, 25);
ashp.addTextFrame("Animated TextBox");
// Aggiunge l'effetto di animazione PathFootball
pres.getSlides().get_Item(0).getTimeline().getMainSequence().addEffect(ashp, EffectType.PathFootball,
EffectSubtype.None, EffectTriggerType.AfterPrevious);
// Crea una sorta di "pulsante".
IShape shapeTrigger = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Bevel, 10, 10, 20, 20);
// Crea una sequenza di effetti per questo pulsante.
ISequence seqInter = pres.getSlides().get_Item(0).getTimeline().getInteractiveSequences().add(shapeTrigger);
// Crea un percorso utente personalizzato. Il nostro oggetto verrà spostato solo dopo il click del pulsante.
IEffect fxUserPath = seqInter.addEffect(ashp, EffectType.PathUser, EffectSubtype.None, EffectTriggerType.OnClick);
// Aggiunge comandi per il movimento poiché il percorso creato è vuoto.
IMotionEffect motionBvh = ((IMotionEffect)fxUserPath.getBehaviors().get_Item(0));
Point2D.Float[] pts = new Point2D.Float[1];
pts[0] = new Point2D.Float(0.076f, 0.59f);
motionBvh.getPath().add(MotionCommandPathType.LineTo, pts, MotionPathPointsType.Auto, true);
pts[0] = new Point2D.Float(-0.076f, -0.59f);
motionBvh.getPath().add(MotionCommandPathType.LineTo, pts, MotionPathPointsType.Auto, false);
motionBvh.getPath().add(MotionCommandPathType.End, null, MotionPathPointsType.Auto, false);
// Scrive il file PPTX su disco
pres.save("AnimExample_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Ottenere gli effetti di animazione applicati a una Shape
Gli esempi seguenti mostrano come usare il metodo getEffectsByShape dell’interfaccia ISequence per ottenere tutti gli effetti di animazione applicati a una shape.
Esempio 1: Ottenere gli effetti di animazione applicati a una shape su una diapositiva normale
Precedentemente, hai imparato come aggiungere effetti di animazione alle shape nelle presentazioni PowerPoint. Il codice di esempio seguente mostra come ottenere gli effetti applicati alla prima shape sulla prima diapositiva normale nella presentazione AnimExample_out.pptx.
Presentation presentation = new Presentation("AnimExample_out.pptx");
try {
ISlide firstSlide = presentation.getSlides().get_Item(0);
// Ottiene la sequenza principale di animazione della diapositiva.
ISequence sequence = firstSlide.getTimeline().getMainSequence();
// Ottiene la prima forma sulla prima diapositiva.
IShape shape = firstSlide.getShapes().get_Item(0);
// Ottiene gli effetti di animazione applicati alla forma.
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();
}
Esempio 2: Ottenere tutti gli effetti di animazione, inclusi quelli ereditati dai segnaposto
Se una shape su una diapositiva normale ha segnaposti che si trovano sulla diapositiva layout e/o master, e sono stati aggiunti effetti di animazione a questi segnaposti, allora tutti gli effetti della shape verranno riprodotti durante la presentazione, inclusi quelli ereditati dai segnaposti.
Supponiamo di avere un file di presentazione PowerPoint sample.pptx con una diapositiva contenente solo una shape di piè di pagina con il testo “Made with Aspose.Slides” e l’effetto Random Bars applicato alla shape.

Assumiamo inoltre che l’effetto Split sia applicato al segnaposto del piè di pagina sulla diapositiva layout.

Infine, l’effetto Fly In è applicato al segnaposto del piè di pagina nella diapositiva master.

Il codice di esempio seguente mostra come usare il metodo getBasePlaceholder dell’interfaccia IShape per accedere ai segnaposto della shape e ottenere gli effetti di animazione applicati alla shape di piè di pagina, inclusi quelli ereditati da segnaposto situati sui layout e sui master.
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);
}
}
Output:
Main sequence of shape effects:
Fly Bottom
Split VerticalIn
RandomBars Horizontal
Modificare le proprietà di temporizzazione dell’effetto di animazione
Aspose.Slides per Android via Java consente di modificare le proprietà di Timing di un effetto di animazione.
Questa è la finestra Timing dell’animazione in Microsoft PowerPoint:

Queste sono le corrispondenze tra PowerPoint Timing e le proprietà Effect.Timing :
- L’elenco a discesa Start di PowerPoint Timing corrisponde alla proprietà Effect.Timing.TriggerType .
- PowerPoint Timing Duration corrisponde alla proprietà Effect.Timing.Duration . La durata di un’animazione (in secondi) è il tempo totale necessario affinché l’animazione completi un ciclo.
- PowerPoint Timing Delay corrisponde alla proprietà Effect.Timing.TriggerDelayTime .
Ecco come modificare le proprietà di Timing dell’effetto:
- Applicare o ottenere l’effetto di animazione.
- Impostare nuovi valori per le proprietà Effect.Timing di cui hai bisogno.
- Salvare il file PPTX modificato.
Questo codice Java dimostra l’operazione:
// Instanzia una classe Presentation che rappresenta un file di presentazione.
Presentation pres = new Presentation("AnimExample_out.pptx");
try {
// Ottiene la sequenza principale della diapositiva.
ISequence sequence = pres.getSlides().get_Item(0).getTimeline().getMainSequence();
// Ottiene il primo effetto della sequenza principale.
IEffect effect = sequence.get_Item(0);
// Cambia il TriggerType dell'effetto per avviarlo al click
effect.getTiming().setTriggerType(EffectTriggerType.OnClick);
// Cambia la durata dell'effetto
effect.getTiming().setDuration(3f);
// Cambia il TriggerDelayTime dell'effetto
effect.getTiming().setTriggerDelayTime(0.5f);
// Salva il file PPTX su disco
pres.save("AnimExample_changed.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Suono dell’effetto di animazione
Aspose.Slides fornisce queste proprietà per consentire di gestire i suoni negli effetti di animazione:
Aggiungere un suono all’effetto di animazione
Questo codice Java mostra come aggiungere un suono all’effetto di animazione e interromperlo quando inizia l’effetto successivo:
Presentation pres = new Presentation("AnimExample_out.pptx");
try {
// Aggiunge audio alla collezione audio della presentazione
IAudio effectSound = pres.getAudios().addAudio(Files.readAllBytes(Paths.get("sampleaudio.wav")));
ISlide firstSlide = pres.getSlides().get_Item(0);
// Ottiene la sequenza principale della diapositiva.
ISequence sequence = firstSlide.getTimeline().getMainSequence();
// Ottiene il primo effetto della sequenza principale
IEffect firstEffect = sequence.get_Item(0);
// Controlla se l'effetto ha "No Sound"
if (!firstEffect.getStopPreviousSound() && firstEffect.getSound() == null)
{
// Aggiunge il suono al primo effetto
firstEffect.setSound(effectSound);
}
// Ottiene la prima sequenza interattiva della diapositiva.
ISequence interactiveSequence = firstSlide.getTimeline().getInteractiveSequences().get_Item(0);
// Imposta il flag "Stop previous sound" dell'effetto
interactiveSequence.get_Item(0).setStopPreviousSound(true);
// Scrive il file PPTX su disco
pres.save("AnimExample_Sound_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Estrarre il suono di un effetto di animazione
- Creare un’istanza della classe Presentation.
- Ottenere un riferimento a una diapositiva tramite il suo indice.
- Recuperare la sequenza principale degli effetti.
- Estrarre il setSound(IAudio value) incorporato in ogni effetto di animazione.
Questo codice Java mostra come estrarre il suono incorporato in un effetto di animazione:
// Istanzia una classe di presentazione che rappresenta un file di presentazione.
Presentation presentation = new Presentation("EffectSound.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
// Ottiene la sequenza principale della diapositiva.
ISequence sequence = slide.getTimeline().getMainSequence();
for (IEffect effect : sequence)
{
if (effect.getSound() == null)
continue;
// Estrae il suono dell'effetto in un array di byte
byte[] audio = effect.getSound().getBinaryData();
}
} finally {
if (presentation != null) presentation.dispose();
}
Dopo l’animazione
Aspose.Slides per Android via Java consente di modificare la proprietà After animation di un effetto di animazione.
Questa è la finestra dell’effetto di animazione e il menu esteso in Microsoft PowerPoint:

L’elenco a discesa After animation di PowerPoint corrisponde a queste proprietà:
- La proprietà setAfterAnimationType(int value) che descrive il tipo di After animation:
- PowerPoint More Colors corrisponde al tipo AfterAnimationType.Color;
- PowerPoint Don’t Dim corrisponde al tipo AfterAnimationType.DoNotDim (tipo predefinito);
- PowerPoint Hide After Animation corrisponde al tipo AfterAnimationType.HideAfterAnimation;
- PowerPoint Hide on Next Mouse Click corrisponde al tipo AfterAnimationType.HideOnNextMouseClick;
- La proprietà setAfterAnimationColor(IColorFormat value) che definisce un formato di colore after animation. Questa proprietà funziona in combinazione con il tipo AfterAnimationType.Color. Se cambi il tipo in un altro, il colore after animation verrà cancellato.
Questo codice Java mostra come modificare un effetto after animation:
// Istanzia una classe Presentation che rappresenta un file di presentazione
Presentation pres = new Presentation("AnimImage_out.pptx");
try {
ISlide firstSlide = pres.getSlides().get_Item(0);
// Ottiene il primo effetto della sequenza principale
IEffect firstEffect = firstSlide.getTimeline().getMainSequence().get_Item(0);
// Modifica il tipo di after animation a Color
firstEffect.setAfterAnimationType(AfterAnimationType.Color);
// Imposta il colore di after animation
firstEffect.getAfterAnimationColor().setColor(Color.BLUE);
// Scrive il file PPTX su disco
pres.save("AnimImage_AfterAnimation.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Animare il testo
Aspose.Slides fornisce queste proprietà per consentire di gestire il blocco Animate text di un effetto di animazione:
- La proprietà setAnimateTextType(int value) che descrive il tipo di animazione del testo dell’effetto. Il testo della shape può essere animato:
- Tutto in una volta (AnimateTextType.AllAtOnce tipo)
- Per parola (AnimateTextType.ByWord tipo)
- Per lettera (AnimateTextType.ByLetter tipo)
- La proprietà setDelayBetweenTextParts(float value) imposta un ritardo tra le parti di testo animate (parole o lettere). Un valore positivo specifica la percentuale della durata dell’effetto. Un valore negativo specifica il ritardo in secondi.
Ecco come è possibile modificare le proprietà Animate text dell’effetto:
- Applicare o ottenere l’effetto di animazione.
- Impostare la proprietà setBuildType(int value) su BuildType.AsOneObject per disattivare la modalità di animazione By Paragraphs.
- Impostare nuovi valori per le proprietà setAnimateTextType(int value) e setDelayBetweenTextParts(float value).
- Salvare il file PPTX modificato.
Questo codice Java dimostra l’operazione:
// Istanzia una classe Presentation che rappresenta un file di presentazione.
Presentation pres = new Presentation("AnimTextBox_out.pptx");
try {
ISlide firstSlide = pres.getSlides().get_Item(0);
// Ottiene il primo effetto della sequenza principale
IEffect firstEffect = firstSlide.getTimeline().getMainSequence().get_Item(0);
// Modifica il tipo di animazione del testo dell'effetto a "As One Object"
firstEffect.getTextAnimation().setBuildType(BuildType.AsOneObject);
// Modifica il tipo di animazione del testo dell'effetto a "By word"
firstEffect.setAnimateTextType(AnimateTextType.ByWord);
// Imposta il ritardo tra le parole al 20% della durata dell'effetto
firstEffect.setDelayBetweenTextParts(20f);
// Scrive il file PPTX su disco
pres.save("AnimTextBox_AnimateText.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
FAQ
Come posso garantire che le animazioni siano preservate durante la pubblicazione della presentazione sul web?
Export to HTML5 e abilitare le options responsabili per le animazioni di shape e di transition. L’HTML puro non riproduce le animazioni delle diapositive, mentre l’HTML5 lo fa.
Come influisce la modifica dell’ordine Z (ordine dei livelli) delle shape sull’animazione?
L’ordine Z determina cosa copre cosa, mentre l’effetto controlla il timing e il tipo di comparsa/scomparsa. Il risultato visibile è definito dalla loro combinazione. (Questo è il comportamento generale di PowerPoint; il modello di effetti e shape di Aspose.Slides segue la stessa logica.)
Ci sono limitazioni nella conversione delle animazioni in video per alcuni effetti?
In generale, le animazioni sono supportate [/slides/it/androidjava/convert-powerpoint-to-video/], ma casi rari o effetti specifici potrebbero essere renderizzati diversamente. Si consiglia di testare con gli effetti utilizzati e con la versione della libreria.