اعمال انیمیشن‌های شکل در ارائه‌ها روی اندروید

معرفی

انیمیشن‌ها جلوه‌های بصری هستند که می‌توانند بر روی متن‌ها، تصاویر، اشکال یا نمودارها اعمال شوند. آن‌ها زندگی به ارائه‌ها یا اجزای آن می‌بخشند.

چرا در ارائه‌ها از انیمیشن استفاده کنیم؟

با استفاده از انیمیشن، می‌توانید

  • کنترل جریان اطلاعات
  • تأکید بر نکات مهم
  • افزایش علاقه یا مشارکت مخاطبان
  • آسان‌تر کردن خواندن یا هضم یا پردازش محتوا
  • جلب توجه خوانندگان یا بینندگان به بخش‌های مهم در یک ارائه

PowerPoint گزینه‌ها و ابزارهای متعددی برای انیمیشن‌ها و اثرهای انیمیشن در دسته‌های ورود, خروج, تاکید و مسیرهای حرکتی فراهم می‌کند.

انیمیشن‌ها در Aspose.Slides

  • Aspose.Slides کلاس‌ها و نوع‌هایی را که برای کار با انیمیشن‌ها نیاز دارید، تحت فضای نام Aspose.Slides.Animation فراهم می‌کند،
  • Aspose.Slides بیش از 150 اثر انیمیشن را تحت شمارش‌گر EffectType ارائه می‌دهد. این اثرها در اصل همان اثرهای (یا معادل) مورد استفاده در PowerPoint هستند.

اعمال انیمیشن بر TextBox

Aspose.Slides برای Android از طریق Java به شما امکان می‌دهد انیمیشن را به متن داخل یک شکل اعمال کنید.

  1. یک نمونه از کلاس Presentation ایجاد کنید.
  2. مرجع یک اسلاید را از طریق ایندکس آن بدست آورید.
  3. یک rectangle IAutoShape اضافه کنید.
  4. متن را به IAutoShape.TextFrame اضافه کنید.
  5. یک دنباله اصلی از اثرها را دریافت کنید.
  6. یک اثر انیمیشن به IAutoShape اضافه کنید.
  7. ویژگی TextAnimation.BuildType را به مقداری از شمارش‌گر BuildType تنظیم کنید.
  8. ارائه را به صورت فایل 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

  1. یک نمونه از کلاس Presentation ایجاد کنید.
  2. مرجع اسلاید را از طریق ایندکس آن بدست آورید.
  3. یک PictureFrame را به اسلاید اضافه یا دریافت کنید.
  4. دنباله اصلی اثرها را دریافت کنید.
  5. یک اثر انیمیشن به PictureFrame اضافه کنید.
  6. ارائه را به صورت فایل PPTX روی دیسک بنویسید.

این کد Java نشان می‌دهد چگونه اثر Fly را به یک فریم تصویر اعمال کنید:

// یک کلاس Presentation را که نمایانگر یک فایل ارائه است، نمونه‌سازی می‌کند.
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

  1. یک نمونه از ‎Presentation‎ ایجاد کنید.
  2. مرجع اسلاید را از طریق ایندکس آن بدست آورید.
  3. یک rectangle IAutoShape اضافه کنید.
  4. یک Bevel IAutoShape اضافه کنید (زمانی که این شیء کلیک شود، انیمیشن اجرا می‌شود).
  5. یک دنباله از اثرها روی شکل Bevel ایجاد کنید.
  6. یک UserPath سفارشی ایجاد کنید.
  7. دستورات برای حرکت به UserPath اضافه کنید.
  8. ارائه را به صورت فایل 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 برای دریافت تمام اثرهای انیمیشن اعمال شده به یک شکل استفاده کنید.

مثال ۱: دریافت اثرهای انیمیشن اعمال شده به یک شکل در اسلاید عادی

قبلاً یاد گرفتید چگونه اثرهای انیمیشن را به اشکال در ارائه‌های 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();
}

مثال ۲: دریافت تمام اثرهای انیمیشن، شامل آنهایی که از جای‌نگهدارها به ارث برده شده‌اند

اگر یک شکل در اسلاید عادی دارای جای‌نگهدارهایی باشد که در اسلاید چیدمان و/یا اسلاید اصلی قرار دارند و اثرهای انیمیشن به این جای‌نگهدارها اضافه شده باشد، تمام اثرهای شکل در طول نمایش اسلاید اجرا می‌شوند، شامل آنهایی که از جای‌نگهدارها به ارث برده شده‌اند.

فرض کنید فایلی به نام sample.pptx داریم که شامل یک اسلاید است و فقط یک شکل پاورقی با متن «Made with Aspose.Slides» دارد و اثر Random Bars بر روی این شکل اعمال شده است.

اثر انیمیشن شکل اسلاید

همچنین فرض کنید اثر Split بر روی جای‌نگهدار پاورقی در اسلاید layout اعمال شده باشد.

اثر انیمیشن شکل چیدمان

و در نهایت، اثر Fly In بر روی جای‌نگهدار پاورقی در اسلاید master اعمال شده باشد.

اثر انیمیشن شکل اصلی

کد نمونه زیر نشان می‌دهد چگونه از متد getBasePlaceholder در رابط IShape برای دسترسی به جای‌نگهدارهای شکل و دریافت اثرهای انیمیشن اعمال شده به شکل پاورقی، شامل آنهایی که از جای‌نگهدارهای موقعیت‌های چیدمان و اصلی به ارث برده شده‌اند، استفاده کنید.

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

تغییر ویژگی‌های زمان‌بندی اثر انیمیشن

Aspose.Slides برای Android از طریق Java به شما امکان می‌دهد ویژگی‌های زمان‌بندی یک اثر انیمیشن را تغییر دهید.

این پنل زمان‌بندی انیمیشن در Microsoft PowerPoint است:

example1_image

این‌ها تطابق‌های بین زمان‌بندی PowerPoint و ویژگی‌های Effect.Timing هستند:

  • لیست کشویی Start در PowerPoint با ویژگی Effect.Timing.TriggerType مطابقت دارد.
  • Duration در PowerPoint با ویژگی Effect.Timing.Duration مطابقت دارد. مدت زمان یک انیمیشن (بر حسب ثانیه) کل زمان لازم برای تکمیل یک چرخه انیمیشن است.
  • Delay در PowerPoint با ویژگی Effect.Timing.TriggerDelayTime مطابقت دارد.

این نحوه تغییر ویژگی‌های زمان‌بندی Effect است:

  1. Apply یا دریافت اثر انیمیشن.
  2. مقادیر جدید را برای ویژگی‌های Effect.Timing که نیاز دارید، تنظیم کنید.
  3. فایل PPTX اصلاح‌شده را ذخیره کنید.

این کد Java عملیات را نشان می‌دهد:

// یک کلاس Presentation را که نمایانگر یک فایل ارائه است، نمونه‌سازی می‌کند.
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);

    // اثر را برای «No Sound» بررسی می‌کند
    if (!firstEffect.getStopPreviousSound() && firstEffect.getSound() == null)
    {
        // صدا را برای اولین اثر اضافه می‌کند
        firstEffect.setSound(effectSound);
    }

    // دنباله تعاملی اول اسلاید را دریافت می‌کند.
    ISequence interactiveSequence = firstSlide.getTimeline().getInteractiveSequences().get_Item(0);

    // پرچم «Stop previous sound» اثر را تنظیم می‌کند
    interactiveSequence.get_Item(0).setStopPreviousSound(true);

    // فایل PPTX را بر روی دیسک ذخیره می‌کند
    pres.save("AnimExample_Sound_out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

استخراج صدا از یک اثر انیمیشن

  1. یک نمونه از کلاس Presentation ایجاد کنید.
  2. مرجع اسلاید را از طریق ایندکس آن بدست آورید.
  3. دنباله اصلی اثرها را دریافت کنید.
  4. صداهای جاسازی‌شده در هر اثر انیمیشن را با استفاده از متد setSound(IAudio value) استخراج کنید.

این کد Java نشان می‌دهد چگونه صداهای جاسازی‌شده در یک اثر انیمیشن را استخراج کنید:

// یک کلاس Presentation را که نمایانگر یک فایل ارائه است، نمونه‌سازی می‌کند.
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 برای Android از طریق Java به شما امکان می‌دهد ویژگی After animation یک اثر انیمیشن را تغییر دهید.

این پنل اثر انیمیشن و منوی گسترش‌یافته در Microsoft PowerPoint است:

example1_image

لیست کشویی After animation در PowerPoint با این ویژگی‌ها مطابقت دارد:

این کد Java نشان می‌دهد چگونه یک اثر After animation را تغییر دهید:

// یک کلاس Presentation را که نمایانگر یک فایل ارائه است، نمونه‌سازی می‌کند
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);

    // رنگ پس‌از انیمیشن را تنظیم می‌کند
    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 یک اثر انیمیشن فراهم می‌کند:

این نحوه تغییر ویژگی‌های Animate text برای Effect است:

  1. Apply یا دریافت اثر انیمیشن.
  2. ویژگی setBuildType(int value) را به مقدار BuildType.AsOneObject تنظیم کنید تا حالت انیمیشن By Paragraphs غیرفعال شود.
  3. مقادیر جدید را برای ویژگی‌های setAnimateTextType(int value) و setDelayBetweenTextParts(float value) تنظیم کنید.
  4. فایل PPTX اصلاح‌شده را ذخیره کنید.

این کد Java عملیات را نشان می‌دهد:

// یک کلاس Presentation را که نمایانگر یک فایل ارائه است، نمونه‌سازی می‌کند.
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();
}

سوالات متداول

چگونه می‌توانم اطمینان حاصل کنم که انیمیشن‌ها هنگام انتشار ارائه در وب حفظ می‌شوند؟

Export to HTML5 را استفاده کنید و گزینه‌های shape و transition که مسئول انیمیشن‌ها هستند، فعال کنید. HTML ساده انیمیشن اسلاید را پخش نمی‌کند، در حالی که HTML5 این کار را انجام می‌دهد.

تغییر ترتیب لایه (z-order) اشکال چگونه بر انیمیشن تأثیر می‌گذارد؟

ترتیب انیمیشن و ترتیب ترسیم مستقل هستند: یک اثر زمان‌بندی و نوع ظاهر شدن/نقشیدن را کنترل می‌کند، در حالی که z-order تعیین می‌کند چه چیزی چه چیزی را می‌پوشاند. نتیجه قابل مشاهده ترکیبی از این دو است. (این رفتار عمومی PowerPoint است؛ مدل اثرها و اشکال Aspose.Slides نیز همان منطق را دنبال می‌کند.)

آیا محدودیتی در تبدیل انیمیشن‌ها به ویدیو برای برخی اثرها وجود دارد؟

به طور کلی، انیمیشن‌ها پشتیبانی می‌شوند، اما در موارد نادر یا برای اثرهای خاص ممکن است به شکل متفاوتی رندر شوند. توصیه می‌شود اثرهایی که استفاده می‌کنید و نسخه کتابخانه را آزمایش کنید.