Procedural animations in mobile app

NOVASOLUTIONS.TECHNOLOGY is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.
Development and support of all types of mobile applications:
Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1 servicesAll 1735 services
Procedural animations in mobile app
Complex
~3-5 business days
FAQ
Our competencies:
Development stages
Latest works
  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    445

Procedural Animation Implementation in Mobile Apps

Procedural animations compute in real time by algorithm rather than play recorded frames. Particles following finger. Wave reacting to sound. Background shape changing per data. Separate task class requiring understanding physics modeling and GPU work.

When It's Needed

Procedural animation is justified when:

  • Animation responds to real-time input (touch, accelerometer, microphone)
  • Animation depends on data unknown beforehand
  • Variability is infinite; keyframe approach unrealistic
  • Need "living" background or ambient animation effect

Particle Systems

On iOSCAEmitterLayer + CAEmitterCell. Built-in particle engine supporting gravity, emissionRange, velocity, lifetime. Performant, GPU-based. Limitation: each particle is identical in shape (bitmap or shape), no per-particle custom behavior.

let emitter = CAEmitterLayer()
emitter.emitterPosition = CGPoint(x: view.center.x, y: -10)
emitter.emitterShape = .line
emitter.emitterSize = CGSize(width: view.bounds.width, height: 1)

let cell = CAEmitterCell()
cell.contents = UIImage(named: "particle")?.cgImage
cell.birthRate = 50
cell.lifetime = 4
cell.velocity = 100
cell.velocityRange = 50
cell.emissionRange = .pi / 4
cell.scale = 0.1
cell.scaleRange = 0.05
emitter.emitterCells = [cell]

For custom particle behavior—Metal shader or SpriteKit with SKEmitterNode. SpriteKit supports editor .sks files in Xcode—visual config without code.

On Android—no built-in particle engine. Use Canvas with ValueAnimator or OpenGL ES via GLSurfaceView. For production—Konfetti library (simple cases) or custom View with Canvas.drawBitmap loop via Choreographer.FrameCallback.

In Flutter—packages particles_flutter, flame (game engine with particles). For simple cases—CustomPainter with AnimationController and particle list, each with own physics.

Physical Modeling: Springs and Inertia

Procedural animation via physics isn't spring(dampingRatio:). It's numerical equation-of-motion integration each frame.

Simple spring system (Verlet integration):

// Update each frame via CADisplayLink
func update(dt: Double) {
    let springForce = (targetPosition - currentPosition) * stiffness
    let dampingForce = velocity * -damping
    let acceleration = (springForce + dampingForce) / mass
    velocity += acceleration * dt
    currentPosition += velocity * dt
}

This gives behavior unconstrained by library parameters: assign any mass, stiffness, damping. Used for "stretchy" elements following finger with lag, hair/tail animation, flag effects.

Noise Algorithms for Organic Motion

Perlin noise and Simplex noise base organic ambient animations. Background "breathing" without repeating patterns; shape slowly deforming; color smoothly shifting.

On iOS via Metal or simd:

// Simplex noise function → float in range [-1, 1]
let noiseValue = simplexNoise2D(x: Float(time * 0.3), y: Float(index) * 0.5)
let yOffset = noiseValue * amplitude

In Flutter—noise package or Dart code. In Flutter shaders (Flutter GPU API, available 3.10+)—float noise(vec2 p) directly in GLSL.

Performance

Key rule: no particle logic on main thread. CADisplayLink with preferredFramesPerSecond = 60 (or 120 for ProMotion)—minimum. For complex scenes—Metal compute shader updating particle positions in parallel on GPU.

Profile via Instruments → Core Animation / Metal System Trace. Goal: GPU utilization < 60% idle, frame time < 8ms for 120Hz.

What's Included

Work through animation algorithm per requirements or references. Implement with target FPS optimization. Integrate with app event system (input, data updates). Profile and optimize.

Timeline: 3–5 days depending on physics model complexity and target platform.