# animations

Published articles for animations.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## How Storytale Previews Kotlin UI Components Across Platforms

DevFeed: [How Storytale Previews Kotlin UI Components Across Platforms](<https://devfeed.tech/articles/taking-a-look-at-storytale-kevin-schildhorn-38308.md>)

Original publisher: [Read original article](<https://touchlab.co/previewing-storytale>)

Published: 2025-04-11T00:00:00Z

Content type: tutorial

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [gradle-plugin](<https://devfeed.tech/topics/gradle-plugin.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [UI components](<https://devfeed.tech/topics/ui-components.md>), [Design system](<https://devfeed.tech/topics/design-system.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [React](<https://devfeed.tech/topics/react.md>)

Tags: [animations](<https://devfeed.tech/tags/animations.md>), [community](<https://devfeed.tech/tags/community.md>), [components](<https://devfeed.tech/tags/components.md>), [design-system](<https://devfeed.tech/tags/design-system.md>), [gradle-plugin](<https://devfeed.tech/tags/gradle-plugin.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [plugin](<https://devfeed.tech/tags/plugin.md>), [source](<https://devfeed.tech/tags/source.md>), [storytale](<https://devfeed.tech/tags/storytale.md>), [tooling](<https://devfeed.tech/tags/tooling.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This tutorial examines Storytale, a Kotlin Gradle plugin and runtime library for generating an interactive UI component gallery for Composables. It explains story definitions, the generated interface, parameter controls, source viewing, and cross-platform previews, while noting the project's early-stage limitations.

### Source excerpt

Storytale is a Gradle plugin that generates interactive component libraries for your UI. We'll go over how it works and how it can help your design system.

## Making basicMarquee-Modifier More Accessible

DevFeed: [Making basicMarquee-Modifier More Accessible](<https://devfeed.tech/articles/making-basicmarquee-modifier-more-accessible-38502.md>)

Original publisher: [Read original article](<https://eevis.codes/blog/2025-02-20/making-basicmarquee-modifier-more-accessible/>)

Author: Eevis Panula

Published: 2025-02-20T10:38:55.771000Z

Content type: tutorial

Language: en

Sources: [Eevis Blog](<https://devfeed.tech/sources/eevis-blog.md>)

Topics: [Accessibility](<https://devfeed.tech/topics/accessibility.md>), [Android](<https://devfeed.tech/topics/android.md>), [marquee](<https://devfeed.tech/topics/marquee.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [accessibility](<https://devfeed.tech/tags/accessibility.md>), [accessible](<https://devfeed.tech/tags/accessible.md>), [android](<https://devfeed.tech/tags/android.md>), [animations](<https://devfeed.tech/tags/animations.md>), [code](<https://devfeed.tech/tags/code.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [marquee](<https://devfeed.tech/tags/marquee.md>), [technical](<https://devfeed.tech/tags/technical.md>)

### AI overview

This tutorial explains how to make Android's basicMarquee modifier respect the system "Remove animations" accessibility setting. It proposes reading the setting and exposing its value through composition locals to conditionally enable the marquee animation.

### Source excerpt

I have this "Remove animations"-setting turned on on my phone because different kinds of movement make me feel physically sick. When the setting is on, animations are usually removed from native Android apps. And when there are some animations, I notice them. I've started seeing more and more of some horizontally scrolling texts, and I have been wondering why. Then I came across this basicMarquee-modifier. And it doesn't respect the "Remove animations" accessibility setting. And that's bad - many users (me included) rely on that setting to not see animations. Marquee-styled animations are one of the worst triggers of my motion sickness symptoms. If you want to learn more about my symptoms and why animations can be super problematic for some, I've written two blog posts, one from Android and one from a web point of view: Android, Animations and Reduced Motion You Make My Head Spin - Reducing the Motion on Web But since bringing up solutions is often better received than bringing up problems, this blog post will demonstrate one idea on how to improve the situation for us who rely on that "Remove animations" setting. The main idea is to read the value of this setting and then use it to decide if the basicMarquee-modifier is used. In this blog post, I'm using composition locals to accomplish it. Remove Animations Setting Before we dive into the code, a couple of words about the "Remove animations" setting. It's a global setting, which you can find from the accessibility settings. In my Pixel phone, "Remove animations" is under the "Color and motion"-section. From a technical perspective, the setting changes the animator duration scale to 0, so, in other words, the animations end right after they start. This accessibility setting is not exposed via accessibility services the same way as, for example, screen reader availability, so we'll need to be a bit creative. The following section explains how we can read the value of this setting. Composition Local for Remove Animat

## Floating in Space - Animations with Compose and Canvas

DevFeed: [Floating in Space - Animations with Compose and Canvas](<https://devfeed.tech/articles/floating-in-space-animations-with-compose-and-canvas-38492.md>)

Original publisher: [Read original article](<https://eevis.codes/blog/2024-10-06/floating-in-space-animations-with-compose-and-canvas/>)

Author: Eevis Panula

Published: 2025-06-11T04:12:06.370000Z

Content type: tutorial

Language: en

Sources: [Eevis Blog](<https://devfeed.tech/sources/eevis-blog.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [Canvas](<https://devfeed.tech/topics/canvas.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [animations](<https://devfeed.tech/tags/animations.md>), [canvas](<https://devfeed.tech/tags/canvas.md>), [code](<https://devfeed.tech/tags/code.md>), [compose](<https://devfeed.tech/tags/compose.md>), [snippet](<https://devfeed.tech/tags/snippet.md>)

### AI overview

A tutorial showing how to animate a space illustration built with Jetpack Compose and Canvas. It explains how to animate star sizes with repeating float multipliers at different rates and how to rotate a moon around a planet.

### Source excerpt

In my previous blog post, Paint the Stars -- Drawing with Compose and Canvas, I shared how I wanted to be better with Canvas and Compose and created an illustration with planets and stars. This blog post shares how to animate those elements. In the end, the result will look like this: Full code is available in this snippet. Animations Stars Let's start with the stars. In the previous blog post, we defined the Star data class like this: data class Star( val size: Float, val topLeft: Offset, val color: Color, ) From these values, we want to animate the size of the stars. We'll do it by defining a multiplier that we will use with the star sizes to create the effect of the stars twinkling. We do this with infiniteTransition and animateFloat: val infiniteTransition = rememberInfiniteTransition(label = "infinite") val starSizeMultiplierOne by infiniteTransition .animateFloat( initialValue = 1f, targetValue = 1.5f, animationSpec = infiniteRepeatable( animation = tween( durationMillis = 3000, easing = animationEasing, ), repeatMode = RepeatMode.Reverse, ), label = "starSizeMultiplierOne", ) For the starSizeMultiplierOne, we give the initial value of 1, meaning that as it will act as a multiplier, the size would be 1 * size. The target value is 1.5, and as the repeat mode is Reverse, the float will animate between the size multiplied by 1 and 1.5. This transition creates a growing and shrinking effect. As we want the stars to look realistic and not animate at the same speed, we need to define two animated multipliers. Let's define another one: val starSizeMultiplierTwo by infiniteTransition .animateFloat( initialValue = 0.7f, targetValue = 1.7f, animationSpec = infiniteRepeatable( animation = tween( durationMillis = 2300, easing = animationEasing, ), repeatMode = RepeatMode.Reverse, ), label = "starSizeMultiplierTwo", ) This one has a bit shorter animation duration, and the initial and target values are different, so the twinkling happens at a different rate from the first mu

## Compose animations: migrating an experimental library to Compose Multiplatform

DevFeed: [Compose animations: migrating an experimental library to Compose Multiplatform](<https://devfeed.tech/articles/our-journey-with-compose-animations-gustavo-fao-valvassori-38177.md>)

Original publisher: [Read original article](<https://touchlab.co/compose-animations-library>)

Published: 2024-09-26T00:00:00Z

Content type: tutorial

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [compose-multiplatform](<https://devfeed.tech/topics/compose-multiplatform.md>), [migration](<https://devfeed.tech/topics/migration.md>), [API](<https://devfeed.tech/topics/api.md>), [Documentation](<https://devfeed.tech/topics/documentation.md>)

Tags: [animations](<https://devfeed.tech/tags/animations.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-mp](<https://devfeed.tech/tags/compose-mp.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [guide](<https://devfeed.tech/tags/guide.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [migration](<https://devfeed.tech/tags/migration.md>)

### AI overview

This article describes Touchlab's early pain points with Compose animations, including missing easing functions, delayed infinite transitions, and multiple-value animations. It explains the experimental libraries created to address them, their migration to Compose Multiplatform, and how newer Compose APIs resolve those problems.

### Source excerpt

Let's chat about a few pain points we had when we started doing animations with compose, how we tried to solve them, and how you can solve the problems now!

## What the Android ecosystem could learn from Flutter

DevFeed: [What the Android ecosystem could learn from Flutter](<https://devfeed.tech/articles/what-the-android-ecosystem-could-learn-from-flutter-40814.md>)

Original publisher: [Read original article](<https://www.bloco.io/blog/what-the-android-ecosystem-could-learn-from-flutter>)

Author: Cláudia

Published: 2023-10-11T13:22:22Z

Content type: opinion

Language: en

Sources: [Blog - Bloco](<https://devfeed.tech/sources/blog-bloco.md>)

Topics: [Flutter](<https://devfeed.tech/topics/flutter.md>), [Android](<https://devfeed.tech/topics/android.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [animations](<https://devfeed.tech/tags/animations.md>), [bug-fixes](<https://devfeed.tech/tags/bug-fixes.md>), [compose](<https://devfeed.tech/tags/compose.md>), [development](<https://devfeed.tech/tags/development.md>), [flutter](<https://devfeed.tech/tags/flutter.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [reload](<https://devfeed.tech/tags/reload.md>), [team](<https://devfeed.tech/tags/team.md>), [work](<https://devfeed.tech/tags/work.md>)

### AI overview

An opinion piece compares Flutter with native Android development, focusing on Flutter's hot reload and widget ecosystem. It argues that Android development could benefit from more immediate code updates and a more unified set of UI components, while noting comparable capabilities in Jetpack Compose.

### Source excerpt

We recently had the opportunity to work with Flutter on a project. Here's our honest opinion of the advantages of Flutter that we would like to see in Android development.

## Using CSS animations instead of JavaScript timers

DevFeed: [Using CSS animations instead of JavaScript timers](<https://devfeed.tech/articles/using-css-animations-instead-of-javascript-timers-37252.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/css-animations-instead-of-js-timers/>)

Author: Stanko

Published: 2023-08-04T00:00:00Z

Content type: tutorial

Language: en

Sources: [Stanko Tadić](<https://devfeed.tech/sources/stanko-tadic.md>)

Topics: [CSS animations](<https://devfeed.tech/topics/css-animations.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [web animation](<https://devfeed.tech/topics/web-animation.md>), [Document Object Model (DOM)](<https://devfeed.tech/topics/dom.md>)

Tags: [animations](<https://devfeed.tech/tags/animations.md>), [api](<https://devfeed.tech/tags/api.md>), [css](<https://devfeed.tech/tags/css.md>), [css-animations](<https://devfeed.tech/tags/css-animations.md>), [javascript](<https://devfeed.tech/tags/javascript.md>)

### AI overview

This tutorial explains how to build timers with CSS animations and class changes instead of JavaScript timer functions. It covers pausing, resuming, restarting, animation events, repeated timers, chaining timers, and using the approach for an autoplaying carousel. It also notes that precise progress tracking requires the Web Animations API.

### Source excerpt

What if I told you that we can make a timer without using setTimeout, setInterval or requestAnimationFrame? JavaScript is still necessary, but we can create the timer just by toggling some CSS classes. While I was working on an autoplay feature for a carousel, I thought to myself - CSS animations are kinda like timers. They have animationstart and animationend events and an ability to pause them. On top of that, we get the animation loop for free, which we would have to implement manually in JavaScript. Implementation # To make the timer, we'll need four CSS classesPlease note that we could create a minimal example with only two classes (.timer and .timer--running), but it is pretty limiting and therefore we are going to skip it.: .timer - initial styles .timer--running - starts the animation .timer--paused - pauses the animation (can only be used in combination with .timer--running) .timer--done - final state of the animation We'll start a timer by adding a .timer--running class. In the case that we are restarting it, we also need to remove the .timer--done class. // Start the timer $timer.classList.add('timer--running'); // $timer is a reference to the timer's DOM element $timer.classList.remove('timer--done'); To pause it we'll add .timer--paused class. Resume it by removing the class. // Toggle the pause class $timer.classList.toggle('timer--pause'); Once animationend event is triggered, we know the animation is done, so we need to add .timer--done and to remove .timer--running class. // Update classes so the timer can be restarted $timer.classList.add('timer--done'); $timer.classList.remove('timer--running'); When we put it all together, we get a minimal working example: Start / stop Code is also available on CodePen for you to play with. This timer works similarly to setTimeout, but it comes with it's own animation loop and an easy way to pause it. animationiteration # To get a behavior similar to setInterval we are going to switch to animationiteration instea

## How to make expandable text with a button in Jetpack Compose

DevFeed: [How to make expandable text with a button in Jetpack Compose](<https://devfeed.tech/articles/how-to-make-expandable-text-with-a-button-in-jetpack-compose-37167.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/how-to-make-expandable-text-with-a-button-in-jetpack-compose/>)

Published: 2023-04-28T00:00:00Z

Content type: tutorial

Language: en

Sources: [Arkadiusz Chmura](<https://devfeed.tech/sources/arkadiusz-chmura.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [Android](<https://devfeed.tech/topics/android.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>)

Tags: [android-studio](<https://devfeed.tech/tags/android-studio.md>), [animations](<https://devfeed.tech/tags/animations.md>), [callback](<https://devfeed.tech/tags/callback.md>), [compose](<https://devfeed.tech/tags/compose.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [lambda](<https://devfeed.tech/tags/lambda.md>), [layout](<https://devfeed.tech/tags/layout.md>)

### AI overview

A tutorial on building expandable text in Jetpack Compose. It shows how to toggle between collapsed and expanded text with a button, add animations and an ellipsis for overflow, and hide the button when the text fits within five lines.

### Source excerpt

In this post I will show you how to make an expandable text controlled by a button using Jetpack Compose.

## Как создавать анимации в Jetpack Compose

DevFeed: [Как создавать анимации в Jetpack Compose](<https://devfeed.tech/articles/jetpack-compose-37987.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/jugru/articles/683656/>)

Author: Rybakov\_Igor (Кошелёк, JUG Ru Group)

Published: 2022-08-22T12:49:08Z

Content type: tutorial

Language: ru

Sources: ["Кошелёк" RU](<https://devfeed.tech/sources/ru.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Compose](<https://devfeed.tech/topics/compose.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [animations](<https://devfeed.tech/tags/animations.md>), [compose](<https://devfeed.tech/tags/compose.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [material-design](<https://devfeed.tech/tags/material-design.md>)

### AI overview

A Russian-language tutorial on creating and customizing animations in Jetpack Compose. It introduces high-level and low-level animations and explains their benefits for interface interaction and perceived responsiveness.

### Source excerpt

Анимации в Jetpack Compose довольно легко понять, применить и кастомизировать под требования дизайна. Но я ещё не видел ни одного туториала по анимациям в Compose на русском языке, поэтому подготовил на эту тему доклад для майского Mobius. А для тех, кто больше любит читать, чем слушать, подготовил статью. В материале мы обсудим виды анимаций, а также пройдём все шаги по способам их создания и кастомизации. Читать далее

## My Retro PC Gaming Nostalgia Kick

DevFeed: [My Retro PC Gaming Nostalgia Kick](<https://devfeed.tech/articles/my-retro-pc-gaming-nostalgia-kick-40642.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2022-07-13-my-retro-pc-gaming-nostalgia-kick/>)

Published: 2022-07-18T00:00:00Z

Content type: opinion

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [pc](<https://devfeed.tech/topics/pc.md>), [Godot](<https://devfeed.tech/topics/godot.md>), [Graphics](<https://devfeed.tech/topics/graphics.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Assembly](<https://devfeed.tech/topics/assembly.md>), [C](<https://devfeed.tech/topics/c.md>), [3D](<https://devfeed.tech/topics/3d.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [animations](<https://devfeed.tech/tags/animations.md>), [assembly](<https://devfeed.tech/tags/assembly.md>), [c](<https://devfeed.tech/tags/c.md>), [gaming](<https://devfeed.tech/tags/gaming.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [pc](<https://devfeed.tech/tags/pc.md>), [programming](<https://devfeed.tech/tags/programming.md>), [retro](<https://devfeed.tech/tags/retro.md>), [videos](<https://devfeed.tech/tags/videos.md>), [youtube](<https://devfeed.tech/tags/youtube.md>)

### AI overview

The author reflects on making videos about early PC gaming and programming, including Sierra game graphics, palette cycling, 8086 assembly, Godot, and embedding old AGI games with C.

### Source excerpt

Over the last couple of months, I've been posting a series of videos about early PC gaming and programming on my YouTube Channel. It's been quite a fun journey and I thought I might write a few words about it. I have a lot of nostalgia for early games, which makes sense since it was how I spent most of my free time in the 80's and 90's. Times were boring before the Internet :)

## Fun with Compose: Bad UI in a Great Framework - Touchlab

DevFeed: [Fun with Compose: Bad UI in a Great Framework - Touchlab](<https://devfeed.tech/articles/fun-with-compose-bad-ui-in-a-great-framework-touchlab-38204.md>)

Original publisher: [Read original article](<https://touchlab.co/fun-with-compose-bad-ui-in-a-great-framework>)

Published: 2021-08-04T03:23:44Z

Content type: article

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Boilerplate](<https://devfeed.tech/topics/boilerplate.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [animations](<https://devfeed.tech/tags/animations.md>), [boilerplate](<https://devfeed.tech/tags/boilerplate.md>), [compose](<https://devfeed.tech/tags/compose.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [livedata](<https://devfeed.tech/tags/livedata.md>), [recomposition](<https://devfeed.tech/tags/recomposition.md>), [state](<https://devfeed.tech/tags/state.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

An exploration of Jetpack Compose that builds deliberately poor volume-control interfaces and reflects on the framework's development experience. The article highlights concise UI code, custom animations, reduced boilerplate, and lessons about state, mutation, and recomposition.

### Source excerpt

To celebrate Jetpack Compose finally hitting 1.0, I decided to bring back an old reddit trend of creating the absolute worst volume control UI possible.

## Implementing mouse pointer interactions on iPad

DevFeed: [Implementing mouse pointer interactions on iPad](<https://devfeed.tech/articles/implementing-mouse-pointer-interactions-on-ipad-39514.md>)

Original publisher: [Read original article](<https://rambo.codes/posts/2020-03-19-implementing-mouse-interactions-on-ipad>)

Published: 2020-03-24T21:00:00Z

Content type: tutorial

Language: en

Sources: [Rambo Codes](<https://devfeed.tech/sources/rambo-codes.md>)

Topics: [iOS](<https://devfeed.tech/topics/ios.md>), [ui](<https://devfeed.tech/topics/ui.md>), [coding](<https://devfeed.tech/topics/coding.md>), [GUI](<https://devfeed.tech/topics/gui.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>), [keyboard](<https://devfeed.tech/topics/keyboard.md>)

Tags: [animations](<https://devfeed.tech/tags/animations.md>), [apple](<https://devfeed.tech/tags/apple.md>), [coding](<https://devfeed.tech/tags/coding.md>), [gui](<https://devfeed.tech/tags/gui.md>), [implementing](<https://devfeed.tech/tags/implementing.md>), [interaction](<https://devfeed.tech/tags/interaction.md>), [ios](<https://devfeed.tech/tags/ios.md>), [ipad](<https://devfeed.tech/tags/ipad.md>), [keyboard](<https://devfeed.tech/tags/keyboard.md>), [sdk](<https://devfeed.tech/tags/sdk.md>)

### AI overview

A guide to implementing mouse and trackpad pointer interactions on iPadOS 13.4. It covers the relevant APIs, setup requirements, UIHoverGestureRecognizer, and hover animations while noting that iPad pointer behavior differs from macOS.

### Source excerpt

Gui Rambo writes about his coding and reverse engineering adventures.

## Vinyls animation with MotionLayout

DevFeed: [Vinyls animation with MotionLayout](<https://devfeed.tech/articles/vinyls-animation-with-motionlayout-38627.md>)

Original publisher: [Read original article](<https://krossovochkin.com/posts/2020_02_21_vinyls_animation_with_motionlayout/>)

Published: 2020-02-21T00:00:00Z

Content type: tutorial

Language: en

Sources: [Vasya Drobushkov](<https://devfeed.tech/sources/vasya-drobushkov.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Code](<https://devfeed.tech/topics/code.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [User experience (UX)](<https://devfeed.tech/topics/ux.md>), [Emulator](<https://devfeed.tech/topics/emulator.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [animations](<https://devfeed.tech/tags/animations.md>), [code](<https://devfeed.tech/tags/code.md>), [emulator](<https://devfeed.tech/tags/emulator.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [motionlayout](<https://devfeed.tech/tags/motionlayout.md>), [ui](<https://devfeed.tech/tags/ui.md>), [ui-ux](<https://devfeed.tech/tags/ui-ux.md>)

### AI overview

A tutorial showing how to build a simplified vinyl music-player animation with Android MotionLayout and ViewPager. It explains the fragment layout, motion scene key points, transitions, and the callbacks needed to connect MotionLayout with ViewPager.

### Source excerpt

Source Introduction Being professional Android developer for many years, things which were always difficult to me are animations, colors and dimensions -- basically all the UI/UX stuff. I can't describe or easily understand what good colors can be used, how to implement this or that animation and so on. Though we're waiting for MotionLayout for quite long time (and Android Studio 4.0) I took some time to play with it. And I should say that experience (even without Motion Editor) was much better than I expected.

## CSS only sprite animations

DevFeed: [CSS only sprite animations](<https://devfeed.tech/articles/css-only-sprite-animations-37258.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/css-only-sprite-animations/>)

Author: Stanko

Published: 2019-07-05T00:00:00Z

Content type: tutorial

Language: en

Sources: [Stanko Tadić](<https://devfeed.tech/sources/stanko-tadic.md>)

Topics: [CSS](<https://devfeed.tech/topics/css.md>), [CSS animations](<https://devfeed.tech/topics/css-animations.md>), [web animation](<https://devfeed.tech/topics/web-animation.md>), [Code](<https://devfeed.tech/topics/code.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>)

Tags: [animations](<https://devfeed.tech/tags/animations.md>), [code](<https://devfeed.tech/tags/code.md>), [css](<https://devfeed.tech/tags/css.md>), [css-animations](<https://devfeed.tech/tags/css-animations.md>), [pixel](<https://devfeed.tech/tags/pixel.md>)

### AI overview

A tutorial on creating sprite and frame-by-frame animations using CSS only. It compares separately animated frames with a single parent animation using the steps() timing function, and demonstrates the technique with a retro text loader and pixel-art images.

### Source excerpt

I haven't published anything in a while, which is a shame because I have a couple of good things to write about. That said, today's post is going to be a short one. I wasn't sure if theme is interesting enough. But in the end I decided to write it anyway. And it will help me get back in the writing shape. While setting up a new project on Netlify, I was going through the logs and noticed they are using old schoolAs far as I know people started using it back in the 80s. text only loader. It is a very simple animation swapping between four text characters (--, \, |, /). Haven't even checked if they are using gif or not, but immediately tried recreating it using CSS only. The first version # The first thing I tried was to stack frames one of top of the other, and then animate every frame separately. Animation will make element visible only for the duration of one frame. Then using animation-delay we can adjust each frame. Code for four frames looked something like this: $frame-duration: 125ms; @keyframes frame-animation { 0%, 25% { opacity: 1; } // Make opacity transition from 1 to 0 as short as possible 25.01% { opacity: 0; } } // Add delay for each frame @for $i from 1 through 4 { .Animation-frame:nth-child(#{ $i }) { animation-delay: 250ms * ($i - 1); } } This worked well for our retro loader with four frames. Then I tried to animate images in the same way and again it worked fine. Applying common hacks to activate hardware acceleration didn't help, so I went back to the drawing board. Animation steps to the rescue # First order of business was to try to remove animations for individual frames, and use only one on the parent element. And to do it without JavaScript. Something like a slider, where slides are swapped without animation. Then it hit me! I remembered seeing that CSS animations can use steps. So I searched for it and found out the syntax: animation-timing-function: steps(4); What MDN says about steps: Displays an animation iteration along n stops along the

## CSS and SVG input animations

DevFeed: [CSS and SVG input animations](<https://devfeed.tech/articles/css-and-svg-input-animations-37251.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/css-and-svg-input-animations/>)

Author: Stanko

Published: 2018-08-22T00:00:00Z

Content type: article

Language: en

Sources: [Stanko Tadić](<https://devfeed.tech/sources/stanko-tadic.md>)

Topics: [CSS](<https://devfeed.tech/topics/css.md>), [SVG animations in CSS](<https://devfeed.tech/topics/svg-animations-in-css.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [animations](<https://devfeed.tech/tags/animations.md>), [css](<https://devfeed.tech/tags/css.md>), [svg](<https://devfeed.tech/tags/svg.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

A personal showcase of CSS and SVG input animations created while experimenting with animations inspired by UI Movement mockups.

### Source excerpt

Yesterday, one of my colleagues shared UI Movement website. It resulted in me playing with random animations trying to replicate mockups I liked. Here are the results:

## April's Meetupception - olin

DevFeed: [April's Meetupception - olin](<https://devfeed.tech/articles/april-s-meetupception-olin-38122.md>)

Original publisher: [Read original article](<https://touchlab.co/2016-4-aprils-meetupception>)

Published: 2016-04-14T15:35:24Z

Content type: article

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Canvas](<https://devfeed.tech/topics/canvas.md>), [async](<https://devfeed.tech/topics/async.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [animations](<https://devfeed.tech/tags/animations.md>), [async](<https://devfeed.tech/tags/async.md>), [canvas](<https://devfeed.tech/tags/canvas.md>), [community](<https://devfeed.tech/tags/community.md>), [demo](<https://devfeed.tech/tags/demo.md>), [event](<https://devfeed.tech/tags/event.md>), [meetup](<https://devfeed.tech/tags/meetup.md>)

### AI overview

A recap of Touchlab's April Android meetup at Meetup's event lounge, covering an Android Wear space-shooter game built with the Canvas API, student app demonstrations, and a discussion of asynchronous tasks.

### Source excerpt

We'd be pretty bad human beings if we didn't host a meetup at Meetup, the team bringing people together for just about anything since 2002.

## Website animations and effects can harm scrolling performance

DevFeed: [Website animations and effects can harm scrolling performance](<https://devfeed.tech/articles/what-is-the-point-of-the-website-if-it-kills-my-laptop-37374.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/what-is-the-point/>)

Author: Stanko

Published: 2016-02-29T00:00:00Z

Content type: opinion

Language: en

Sources: [Stanko Tadić](<https://devfeed.tech/sources/stanko-tadic.md>)

Topics: [Website](<https://devfeed.tech/topics/website.md>), [cpu](<https://devfeed.tech/topics/cpu.md>), [Hardware](<https://devfeed.tech/topics/hardware.md>)

Tags: [animations](<https://devfeed.tech/tags/animations.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [effects](<https://devfeed.tech/tags/effects.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [laptop](<https://devfeed.tech/tags/laptop.md>), [performance](<https://devfeed.tech/tags/performance.md>), [website](<https://devfeed.tech/tags/website.md>)

### AI overview

The article argues that websites overloaded with animations and effects can become difficult to scroll and consume excessive CPU resources, even on high-end hardware.

### Source excerpt

People need to realize that is not enough to have a nice website with a ton of animations and effects. There is no point having such a website if I can't scroll it, while CPU and coolers go crazy. And I use latest MacBook with maxed hardware. Can't imagine trying to use those websites on the old machine (or IE8-9). Get your performance together.

## The Two-Dimensional Fourier Transform and Digital Watermarking

DevFeed: [The Two-Dimensional Fourier Transform and Digital Watermarking](<https://devfeed.tech/articles/the-two-dimensional-fourier-transform-and-digital-watermarking-40336.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2013/12/30/the-two-dimensional-fourier-transform-and-digital-watermarking/>)

Published: 2013-12-30T19:24:05Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [fourier transform](<https://devfeed.tech/topics/fourier-transform.md>), [watermarking](<https://devfeed.tech/topics/watermarking.md>), [Algorithm](<https://devfeed.tech/topics/algorithm.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [animations](<https://devfeed.tech/tags/animations.md>), [big-o-notation](<https://devfeed.tech/tags/big-o-notation.md>), [calculus](<https://devfeed.tech/tags/calculus.md>), [dimension](<https://devfeed.tech/tags/dimension.md>), [fft](<https://devfeed.tech/tags/fft.md>), [fourier-analysis](<https://devfeed.tech/tags/fourier-analysis.md>), [fourier-transform](<https://devfeed.tech/tags/fourier-transform.md>), [github](<https://devfeed.tech/tags/github.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [image-manipulation](<https://devfeed.tech/tags/image-manipulation.md>), [images](<https://devfeed.tech/tags/images.md>), [james-hance](<https://devfeed.tech/tags/james-hance.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [matrices](<https://devfeed.tech/tags/matrices.md>), [programming](<https://devfeed.tech/tags/programming.md>), [python](<https://devfeed.tech/tags/python.md>), [star-wars](<https://devfeed.tech/tags/star-wars.md>), [up](<https://devfeed.tech/tags/up.md>), [watermarking](<https://devfeed.tech/tags/watermarking.md>)

### AI overview

This tutorial introduces the multidimensional Fourier transform, explains its relationship to the one-dimensional transform, describes an FFT-style algorithm for computing it, and applies it to digitally watermarking images.

### Source excerpt

We've studied the Fourier transform quite a bit on this blog: with four primers and the Fast Fourier Transform algorithm under our belt, it's about time we opened up our eyes to higher dimensions. Indeed, in the decades since Cooley & Tukey's landmark paper, the most interesting applications of the discrete Fourier transform have occurred in dimensions greater than 1. But for all our work we haven't yet discussed what it means to take an "n-dimensional" Fourier transform.

## Turbolinks animated page transitions

DevFeed: [Turbolinks animated page transitions](<https://devfeed.tech/articles/turbolinks-animated-page-transitions-37680.md>)

Original publisher: [Read original article](<https://carlosbecker.com/posts/animating-page-transitions-in-turbolinks/>)

Author: Carlos Alexandro Becker

Published: 2013-01-22T00:00:00Z

Content type: tutorial

Language: en

Sources: [Carlos Becker](<https://devfeed.tech/sources/carlos-becker.md>)

Topics: [animations](<https://devfeed.tech/topics/animations.md>), [Ajax](<https://devfeed.tech/topics/ajax.md>), [nginx](<https://devfeed.tech/topics/nginx.md>)

Tags: [ajax](<https://devfeed.tech/tags/ajax.md>), [animations](<https://devfeed.tech/tags/animations.md>), [nginx](<https://devfeed.tech/tags/nginx.md>)

### AI overview

The article explains how the author added animated page transitions to a Turbolinks-based application. It describes using a gem and importing JavaScript, with an animated GIF illustrating the result.

### Source excerpt

Since I've seen the new Basecamp, I fell in love with it.