Terapkan Animasi Bentuk dalam Presentasi di Android

Pendahuluan

Animasi adalah efek visual yang dapat diterapkan pada teks, gambar, bentuk, atau charts. Mereka memberikan kehidupan pada presentasi atau komponennya.

Mengapa Menggunakan Animasi dalam Presentasi?

Menggunakan animasi, Anda dapat

  • mengendalikan alur informasi
  • menekankan poin penting
  • meningkatkan minat atau partisipasi audiens Anda
  • membuat konten lebih mudah dibaca, dipahami, atau diproses
  • menarik perhatian pembaca atau pemirsa ke bagian penting dalam sebuah presentasi

PowerPoint menyediakan banyak opsi dan alat untuk animasi serta efek animasi pada kategori entrance, exit, emphasis, dan motion paths.

Animasi di Aspose.Slides

  • Aspose.Slides menyediakan kelas dan tipe yang Anda perlukan untuk bekerja dengan animasi di bawah namespace Aspose.Slides.Animation,
  • Aspose.Slides menyediakan lebih dari 150 efek animasi di bawah enumerasi EffectType. Efek-efek ini pada dasarnya sama (atau setara) dengan efek yang digunakan di PowerPoint.

Terapkan Animasi pada TextBox

Aspose.Slides untuk Android via Java memungkinkan Anda menerapkan animasi pada teks dalam sebuah bentuk.

  1. Buat instance dari kelas Presentation.
  2. Dapatkan referensi slide melalui indeksnya.
  3. Tambahkan sebuah rectangle IAutoShape.
  4. Tambahkan teks ke IAutoShape.TextFrame.
  5. Dapatkan urutan utama efek.
  6. Tambahkan efek animasi ke IAutoShape.
  7. Atur properti TextAnimation.BuildType ke nilai dari enumerasi BuildType.
  8. Simpan presentasi ke disk sebagai file PPTX.

Kode Java ini menunjukkan cara menerapkan efek Fade ke AutoShape dan mengatur animasi teks ke nilai By 1st Level Paragraphs:

// Membuat instance kelas presentasi yang mewakili file presentasi.
Presentation pres = new Presentation();
try {
    ISlide sld = pres.getSlides().get_Item(0);

    // Menambahkan AutoShape baru dengan teks
    IAutoShape autoShape = sld.getShapes().addAutoShape(ShapeType.Rectangle, 20, 20, 150, 100);

    ITextFrame textFrame = autoShape.getTextFrame();
    textFrame.setText("First paragraph \nSecond paragraph \n Third paragraph");

    // Mendapatkan urutan utama slide.
    ISequence sequence = sld.getTimeline().getMainSequence();

    // Menambahkan efek animasi Fade ke shape
    IEffect effect = sequence.addEffect(autoShape, EffectType.Fade, EffectSubtype.None, EffectTriggerType.OnClick);

    // Menganimasikan teks shape per paragraf tingkat pertama
    effect.getTextAnimation().setBuildType(BuildType.ByLevelParagraphs1);

    // Menyimpan file PPTX ke disk
    pres.save(path + "AnimText_out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Terapkan Animasi pada PictureFrame

  1. Buat instance dari kelas Presentation.
  2. Dapatkan referensi slide melalui indeksnya.
  3. Tambahkan atau dapatkan sebuah PictureFrame pada slide.
  4. Dapatkan urutan utama efek.
  5. Tambahkan efek animasi ke PictureFrame.
  6. Simpan presentasi ke disk sebagai file PPTX.

Kode Java ini menunjukkan cara menerapkan efek Fly ke bingkai gambar:

// Membuat instance kelas presentasi yang mewakili file presentasi.
Presentation pres = new Presentation();
try {
    // Memuat gambar yang akan ditambahkan ke koleksi gambar presentasi
    IPPImage picture;
    IImage image = Images.fromFile("aspose-logo.jpg");
    try {
        picture = pres.getImages().addImage(image);
    } finally {
        if (image != null) image.dispose();
    }

    // Menambahkan bingkai gambar ke slide
    IPictureFrame picFrame = pres.getSlides().get_Item(0).getShapes().addPictureFrame(ShapeType.Rectangle, 50, 50, 100, 100, picture);

    // Mendapatkan urutan utama slide.
    ISequence sequence = pres.getSlides().get_Item(0).getTimeline().getMainSequence();

    // Menambahkan efek animasi Fly dari Kiri ke bingkai gambar
    IEffect effect = sequence.addEffect(picFrame, EffectType.Fly, EffectSubtype.Left, EffectTriggerType.OnClick);

    // Menyimpan file PPTX ke disk
    pres.save(path + "AnimImage_out.pptx", SaveFormat.Pptx);
} catch(IOException e) {
} finally {
    if (pres != null) pres.dispose();
}

Terapkan Animasi pada Shape

  1. Buat instance dari kelas Presentation.
  2. Dapatkan referensi slide melalui indeksnya.
  3. Tambahkan sebuah rectangle IAutoShape.
  4. Tambahkan sebuah Bevel IAutoShape (ketika objek ini diklik, animasi akan diputar).
  5. Buat urutan efek pada bentuk bevel.
  6. Buat UserPath kustom.
  7. Tambahkan perintah untuk bergerak ke UserPath.
  8. Simpan presentasi ke disk sebagai file PPTX.

Kode Java ini menunjukkan cara menerapkan efek PathFootball (path football) ke sebuah shape:

// Membuat instance kelas Presentation yang mewakili file PPTX.
Presentation pres = new Presentation();
try {
    ISlide sld = pres.getSlides().get_Item(0);

    // Membuat efek PathFootball untuk shape yang ada dari awal.
    IAutoShape ashp = sld.getShapes().addAutoShape(ShapeType.Rectangle, 150, 150, 250, 25);
    ashp.addTextFrame("Animated TextBox");

    // Menambahkan efek animasi PathFootBall
    pres.getSlides().get_Item(0).getTimeline().getMainSequence().addEffect(ashp, EffectType.PathFootball,
            EffectSubtype.None, EffectTriggerType.AfterPrevious);

    // Membuat semacam "button".
    IShape shapeTrigger = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Bevel, 10, 10, 20, 20);

    // Membuat urutan efek untuk tombol ini.
    ISequence seqInter = pres.getSlides().get_Item(0).getTimeline().getInteractiveSequences().add(shapeTrigger);

     // Membuat jalur pengguna kustom. Objek kami akan dipindahkan hanya setelah tombol diklik.
    IEffect fxUserPath = seqInter.addEffect(ashp, EffectType.PathUser, EffectSubtype.None, EffectTriggerType.OnClick);

     // Menambahkan perintah untuk bergerak karena jalur yang dibuat kosong.
    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);

     // Menulis file PPTX ke disk
    pres.save("AnimExample_out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Dapatkan Efek Animasi yang Diterapkan pada Shape

Contoh berikut menunjukkan cara menggunakan metode getEffectsByShape dari antarmuka ISequence untuk mendapatkan semua efek animasi yang diterapkan pada sebuah shape.

Contoh 1: Dapatkan efek animasi yang diterapkan pada shape di slide normal

Sebelumnya, Anda telah mempelajari cara menambahkan efek animasi ke shape dalam presentasi PowerPoint. Kode contoh berikut menunjukkan cara mendapatkan efek yang diterapkan pada shape pertama di slide normal pertama dalam presentasi AnimExample_out.pptx.

Presentation presentation = new Presentation("AnimExample_out.pptx");
try {
    ISlide firstSlide = presentation.getSlides().get_Item(0);

    // Mendapatkan urutan animasi utama slide.
    ISequence sequence = firstSlide.getTimeline().getMainSequence();

    // Mendapatkan shape pertama pada slide pertama.
    IShape shape = firstSlide.getShapes().get_Item(0);

    // Mendapatkan efek animasi yang diterapkan pada shape.
    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();
}

Contoh 2: Dapatkan semua efek animasi, termasuk yang diwarisi dari placeholder

Jika sebuah shape pada slide normal memiliki placeholder yang berada pada slide layout dan/atau master, dan efek animasi telah ditambahkan ke placeholder tersebut, maka semua efek shape akan diputar selama tayangan slide, termasuk yang diwarisi dari placeholder.

Misalkan kita memiliki file presentasi PowerPoint sample.pptx dengan satu slide yang hanya berisi shape footer dengan teks “Made with Aspose.Slides” dan efek Random Bars diterapkan pada shape tersebut.

Slide shape animation effect

Dan juga asumsikan bahwa efek Split diterapkan pada placeholder footer di slide layout.

Layout shape animation effect

Dan akhirnya, efek Fly In diterapkan pada placeholder footer di slide master.

Master shape animation effect

Kode contoh berikut menunjukkan cara menggunakan metode getBasePlaceholder dari antarmuka IShape untuk mengakses placeholder shape dan mendapatkan efek animasi yang diterapkan pada shape footer, termasuk yang diwarisi dari placeholder yang berada pada slide layout dan 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

Ubah Properti Penjadwalan Efek Animasi

Aspose.Slides untuk Android via Java memungkinkan Anda mengubah properti Timing dari sebuah efek animasi.

Ini adalah panel Penjadwalan Animasi di Microsoft PowerPoint:

example1_image

Berikut kesesuaian antara Penjadwalan PowerPoint dan properti Effect.Timing :

Berikut cara mengubah properti Timing Efek:

  1. Apply atau dapatkan efek animasi.
  2. Atur nilai baru untuk properti Effect.Timing yang Anda perlukan.
  3. Simpan file PPTX yang telah dimodifikasi.

Kode Java ini mendemonstrasikan operasi tersebut:

// Membuat instance kelas presentasi yang mewakili file presentasi.
Presentation pres = new Presentation("AnimExample_out.pptx");
try {
    // Mendapatkan urutan utama slide.
    ISequence sequence = pres.getSlides().get_Item(0).getTimeline().getMainSequence();

    // Mendapatkan efek pertama dari urutan utama.
    IEffect effect = sequence.get_Item(0);

    // Mengubah TriggerType efek menjadi mulai pada klik
    effect.getTiming().setTriggerType(EffectTriggerType.OnClick);

    // Mengubah Durasi efek
    effect.getTiming().setDuration(3f);

    // Mengubah TriggerDelayTime efek
    effect.getTiming().setTriggerDelayTime(0.5f);

    // Menyimpan file PPTX ke disk
    pres.save("AnimExample_changed.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Suara Efek Animasi

Aspose.Slides menyediakan properti-properti berikut untuk memungkinkan Anda bekerja dengan suara dalam efek animasi:

Tambahkan Suara Efek Animasi

Kode Java ini menunjukkan cara menambahkan suara efek animasi dan menghentikannya ketika efek berikutnya dimulai:

Presentation pres = new Presentation("AnimExample_out.pptx");
try {
    // Menambahkan audio ke koleksi audio presentasi
    IAudio effectSound = pres.getAudios().addAudio(Files.readAllBytes(Paths.get("sampleaudio.wav")));

    ISlide firstSlide = pres.getSlides().get_Item(0);

    // Mendapatkan urutan utama slide.
    ISequence sequence = firstSlide.getTimeline().getMainSequence();

    // Mendapatkan efek pertama dari urutan utama
    IEffect firstEffect = sequence.get_Item(0);

    // Memeriksa efek untuk "No Sound"
    if (!firstEffect.getStopPreviousSound() && firstEffect.getSound() == null)
    {
        // Menambahkan suara untuk efek pertama
        firstEffect.setSound(effectSound);
    }

    // Mendapatkan urutan interaktif pertama dari slide.
    ISequence interactiveSequence = firstSlide.getTimeline().getInteractiveSequences().get_Item(0);

    // Mengatur flag efek "Stop previous sound"
    interactiveSequence.get_Item(0).setStopPreviousSound(true);

    // Menulis file PPTX ke disk
    pres.save("AnimExample_Sound_out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Ekstrak Suara Efek Animasi

  1. Buat instance dari kelas Presentation .
  2. Dapatkan referensi slide melalui indeksnya.
  3. Dapatkan urutan utama efek.
  4. Ekstrak setSound(IAudio value) yang tertanam pada setiap efek animasi.

Kode Java ini menunjukkan cara mengekstrak suara yang tertanam dalam sebuah efek animasi:

// Membuat instance kelas presentasi yang mewakili file presentasi.
Presentation presentation = new Presentation("EffectSound.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    // Mendapatkan urutan utama slide.
    ISequence sequence = slide.getTimeline().getMainSequence();

    for (IEffect effect : sequence)
    {
        if (effect.getSound() == null)
            continue;

        // Mengekstrak suara efek dalam array byte
        byte[] audio = effect.getSound().getBinaryData();
    }
} finally {
    if (presentation != null) presentation.dispose();
}

Setelah Animasi

Aspose.Slides untuk Android via Java memungkinkan Anda mengubah properti After animation dari sebuah efek animasi.

Ini adalah panel Efek Animasi dan menu ekstensi di Microsoft PowerPoint:

example1_image

Dropdown After animation pada PowerPoint cocok dengan properti-properti berikut:

Kode Java ini menunjukkan cara mengubah efek after animation:

// Membuat instance kelas presentasi yang mewakili file presentasi
Presentation pres = new Presentation("AnimImage_out.pptx");
try {
    ISlide firstSlide = pres.getSlides().get_Item(0);

    // Mendapatkan efek pertama dari urutan utama
    IEffect firstEffect = firstSlide.getTimeline().getMainSequence().get_Item(0);

    // Mengubah tipe after animation menjadi Color
    firstEffect.setAfterAnimationType(AfterAnimationType.Color);

    // Menetapkan warna after animation dim
    firstEffect.getAfterAnimationColor().setColor(Color.BLUE);

    // Menulis file PPTX ke disk
    pres.save("AnimImage_AfterAnimation.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Animasi Teks

Aspose.Slides menyediakan properti-properti berikut untuk memungkinkan Anda bekerja dengan blok Animate text pada sebuah efek animasi:

Berikut cara Anda dapat mengubah properti Animate text pada Efek:

  1. Apply atau dapatkan efek animasi.
  2. Atur properti setBuildType(int value) ke nilai BuildType.AsOneObject untuk mematikan mode animasi By Paragraphs.
  3. Atur nilai baru untuk properti setAnimateTextType(int value) dan setDelayBetweenTextParts(float value).
  4. Simpan file PPTX yang telah dimodifikasi.

Kode Java ini mendemonstrasikan operasi:

// Membuat instance kelas presentasi yang mewakili file presentasi.
Presentation pres = new Presentation("AnimTextBox_out.pptx");
try {
    ISlide firstSlide = pres.getSlides().get_Item(0);

    // Mendapatkan efek pertama dari urutan utama
    IEffect firstEffect = firstSlide.getTimeline().getMainSequence().get_Item(0);

    // Mengubah tipe animasi teks efek menjadi "As One Object"
    firstEffect.getTextAnimation().setBuildType(BuildType.AsOneObject);

    // Mengubah tipe animasi teks efek menjadi "By word"
    firstEffect.setAnimateTextType(AnimateTextType.ByWord);

    // Menetapkan jeda antar kata menjadi 20% dari durasi efek
    firstEffect.setDelayBetweenTextParts(20f);

    // Menulis file PPTX ke disk
    pres.save("AnimTextBox_AnimateText.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

FAQ

Bagaimana saya dapat memastikan animasi tetap terjaga saat mempublikasikan presentasi ke web?

Export to HTML5 dan aktifkan options yang menangani animasi shape dan transition. HTML biasa tidak memutar animasi slide, sedangkan HTML5 melakukannya.

Bagaimana mengubah urutan z-order (urutan lapisan) shape memengaruhi animasi?

Animasi dan urutan gambar bersifat independen: sebuah efek mengatur waktu dan tipe muncul/menyusut, sementara z-order menentukan apa yang menutupi apa. Hasil visual ditentukan oleh kombinasi keduanya. (Ini adalah perilaku umum PowerPoint; model efek-dan-shape Aspose.Slides mengikuti logika yang sama.)

Apakah ada keterbatasan ketika mengonversi animasi ke video untuk efek tertentu?

Secara umum, animasi didukung, tetapi kasus langka atau efek tertentu mungkin dirender secara berbeda. Disarankan untuk menguji dengan efek yang Anda gunakan serta versi perpustakaan.