egui_transition_animation

Crates.ioegui_transition_animation
lib.rsegui_transition_animation
version0.1.6
created_at2024-12-20 18:41:27.727645+00
updated_at2025-07-29 15:07:02.602337+00
descriptionEasy animated transitions between multiple pages in egui
homepage
repositoryhttps://github.com/FireFragment/egui_transition_animation
max_upload_size
id1490439
size127,447
(FireFragment)

documentation

README

Egui transition animation

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

crates.io | docs.rs | lib.rs | GitHub

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"),
                    },
                )
            });
        },
    )
}

Contributing

Contributions are very welcome. Please don't forget to make PRs against the development branch, not the release branch.

Commit count: 95

cargo fmt