#egui #animation #transition #ui

egui_transition_animation

Easy animated transitions between multiple pages in egui

1 unstable release

new 0.1.1 Dec 20, 2024
0.1.0 Dec 20, 2024

#408 in GUI

GPL-3.0-or-later

49KB
217 lines

Egui transition animation

This crate allows you to have animated transitions between multiple "pages" in egui

egui_transition.webm

Quickstart

fn main() -> eframe::Result {
    use eframe::egui;
    use egui_transition_animation::prelude::*;

    #[derive(PartialEq, PartialOrd, Clone, Eq)]
    enum Page {
        Page1,
        Page2,
        Page3,
    }

    let mut page = Page::Page1;

    eframe::run_simple_native(
        "Egui transition animation example",
        Default::default(),
        move |ctx, _frame| {
            ctx.style_mut(|style| style.animation_time = 0.2);
            egui::CentralPanel::default().show(ctx, |ui| {
                ui.horizontal(|ui| {
                    ui.selectable_value(&mut page, Page::Page1, "Page 1");
                    ui.selectable_value(&mut page, Page::Page2, "Page 2");
                    ui.selectable_value(&mut page, Page::Page3, "Page 3");
                });

                animated_pager(
                    ui,
                    page.clone(),
                    &TransitionStyle::horizontal(ui),
                    egui::Id::new("pager"),
                    |ui, page| match page {
                        Page::Page1 => ui.label("Hello from page 1"),
                        Page::Page2 => ui.heading("Hello from page 2"),
                        Page::Page3 => ui.monospace("Hello from page 3"),
                    },
                )
            });
        },
    )
}

Dependencies

~4–9MB
~85K SLoC