# media3

Android media libraries and APIs for implementing playback, media sessions, and media editing in apps.

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

## Watch Apps: One Codebase, Two Real Applications

DevFeed: [Watch Apps: One Codebase, Two Real Applications](<https://devfeed.tech/articles/watch-apps-one-codebase-two-real-applications-19666.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/watch-apps-phone-channel/>)

Author: Shai Almog

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

Content type: tutorial

Language: en

Sources: [CodeName One](<https://devfeed.tech/sources/codename-one.md>)

Topics: [SwiftUI](<https://devfeed.tech/topics/swiftui.md>), [Android](<https://devfeed.tech/topics/android.md>), [media3](<https://devfeed.tech/topics/media3.md>), [SQLite](<https://devfeed.tech/topics/sqlite.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [api](<https://devfeed.tech/tags/api.md>), [apk](<https://devfeed.tech/tags/apk.md>), [apple](<https://devfeed.tech/tags/apple.md>), [apple-watch](<https://devfeed.tech/tags/apple-watch.md>), [asynchronous](<https://devfeed.tech/tags/asynchronous.md>), [files](<https://devfeed.tech/tags/files.md>), [release](<https://devfeed.tech/tags/release.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>), [state](<https://devfeed.tech/tags/state.md>), [swiftui](<https://devfeed.tech/tags/swiftui.md>), [watchos](<https://devfeed.tech/tags/watchos.md>)

### AI overview

Codename One can build Apple Watch companion applications and Wear OS applications from a shared watch entry point. The article explains separate application runtimes and storage, platform-specific rendering, and asynchronous communication for live messages, replicated state, and file transfers.

### Source excerpt

Codename One now builds Apple Watch companions and standalone Wear OS products from one watch entry point, with a portable asynchronous API for messages, state, and files.

## Media3 1.11 - What's new?

DevFeed: [Media3 1.11 - What's new?](<https://devfeed.tech/articles/media3-1-11-what-s-new-4238.md>)

Original publisher: [Read original article](<https://android-developers.googleblog.com/2026/08/media3-1-11-whats-new.html>)

Author: Android Developers (noreply@blogger.com)

Published: 2026-08-11T16:00:00Z

Content type: article

Language: en

Sources: [Android Developers Blog](<https://devfeed.tech/sources/android-developers-blog.md>), [Android Developers Blog](<https://devfeed.tech/sources/android-developers-blog-2.md>)

Topics: [media3](<https://devfeed.tech/topics/media3.md>), [Android](<https://devfeed.tech/topics/android.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [Playback](<https://devfeed.tech/topics/playback.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [api](<https://devfeed.tech/tags/api.md>), [audio](<https://devfeed.tech/tags/audio.md>), [compose](<https://devfeed.tech/tags/compose.md>), [exoplayer](<https://devfeed.tech/tags/exoplayer.md>), [features](<https://devfeed.tech/tags/features.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [media](<https://devfeed.tech/tags/media.md>), [media3](<https://devfeed.tech/tags/media3.md>), [playback](<https://devfeed.tech/tags/playback.md>), [video](<https://devfeed.tech/tags/video.md>)

### AI overview

Media3 1.11 adds customizable Jetpack Compose player layouts, gesture-based playback controls, reactive state holders, short-form video preloading and player recycling, Cast improvements, a Ktor HTTP client extension, and Ogg/WAV muxing utilities.

### Source excerpt

Posted by Toni Heidenreich, Software Engineer, Android Media3 1.11 is out. Powering the vast majority of top Android media apps, this release brings new features, bug fixes, and improvements across playback, editing, and UI components. We're expanding our Jetpack Compose UI modules with customizable Player slots and easy to use defaults, interactive gestures, state observers, and short-form video preloading using PlayerPool. We also modernized the Media3 Cast integration with SystemUI Output Switcher support, introduced a new Ktor HTTP client network extension, and added new muxing utilities for Ogg and WAV files. Read on for key highlights, and check out the full release notes for a comprehensive list of changes. Playback UI and Compose With Android becoming Compose-first, we are continuing to expand the media3-ui-compose and media3-ui-compose-material3 modules. This update introduces more granular control over your player layout, richer interaction patterns, and deeper integration with Material3. Customizable Player layout The Material 3 Player Composable now supports dedicated content slots for topControls, centerControls, bottomControls, and errorOverlay. You can drop in your own Composables or use the ready-made defaults published in PlayerDefaults: Player( player = player, topControls = { PlayerDefaults.TopControls(player) }, centerControls = { PlayerDefaults.CenterControls(player) }, bottomControls = { PlayerDefaults.BottomControls(player) }, ) The Player Composable also integrates FocusRequester support, enabling seamless D-pad and keyboard navigation on Android TV, foldables, and desktop environments. Example for a Composable Player with customized controls Gestures and playback speed control PlaybackSpeedState now provides a fast-forward/slow-motion API. The demo-compose app showcases this with a long-press gesture to fast-forward playback and seeking with double tap. Combined with the ProgressSlider introduced in 1.10, the Compose player UI now offers ric

## Media3 1.11 adds customizable Compose player controls, gestures, and video preloading

DevFeed: [Media3 1.11 adds customizable Compose player controls, gestures, and video preloading](<https://devfeed.tech/articles/media3-1-11-what-s-new-22695.md>)

Original publisher: [Read original article](<http://android-developers.googleblog.com/2026/08/media3-1-11-whats-new.html>)

Author: Android Developers (noreply@blogger.com)

Published: 2026-08-11T16:00:00Z

Content type: release

Language: en

Sources: [Android Developers Blog](<https://devfeed.tech/sources/android-developers-blog-3.md>)

Topics: [media3](<https://devfeed.tech/topics/media3.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Playback](<https://devfeed.tech/topics/playback.md>), [Android](<https://devfeed.tech/topics/android.md>), [ExoPlayer](<https://devfeed.tech/topics/exoplayer.md>), [Ktor](<https://devfeed.tech/topics/ktor.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [audio](<https://devfeed.tech/tags/audio.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-ui](<https://devfeed.tech/tags/compose-ui.md>), [exoplayer](<https://devfeed.tech/tags/exoplayer.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [media](<https://devfeed.tech/tags/media.md>), [media3](<https://devfeed.tech/tags/media3.md>), [playback](<https://devfeed.tech/tags/playback.md>), [release](<https://devfeed.tech/tags/release.md>), [releases](<https://devfeed.tech/tags/releases.md>), [video](<https://devfeed.tech/tags/video.md>)

### AI overview

Android Media3 1.11 introduces customizable Jetpack Compose player layouts, gesture-based playback controls, player recycling and preloading for short-form video feeds, improved Cast integration, a Ktor HTTP client extension, and new Ogg and WAV muxing utilities.

### Source excerpt

Posted by Toni Heidenreich, Software Engineer, Android Media3 1.11 is out. Powering the vast majority of top Android media apps, this release brings new features, bug fixes, and improvements across playback, editing, and UI components. We're expanding our Jetpack Compose UI modules with customizable Player slots and easy to use defaults, interactive gestures, state observers, and short-form video preloading using PlayerPool. We also modernized the Media3 Cast integration with SystemUI Output Switcher support, introduced a new Ktor HTTP client network extension, and added new muxing utilities for Ogg and WAV files. Read on for key highlights, and check out the full release notes for a comprehensive list of changes. Playback UI and Compose With Android becoming Compose-first, we are continuing to expand the media3-ui-compose and media3-ui-compose-material3 modules. This update introduces more granular control over your player layout, richer interaction patterns, and deeper integration with Material3. Customizable Player layout The Material 3 Player Composable now supports dedicated content slots for topControls, centerControls, bottomControls, and errorOverlay. You can drop in your own Composables or use the ready-made defaults published in PlayerDefaults: Player( player = player, topControls = { PlayerDefaults.TopControls(player) }, centerControls = { PlayerDefaults.CenterControls(player) }, bottomControls = { PlayerDefaults.BottomControls(player) }, ) The Player Composable also integrates FocusRequester support, enabling seamless D-pad and keyboard navigation on Android TV, foldables, and desktop environments. Example for a Composable Player with customized controls Gestures and playback speed control PlaybackSpeedState now provides a fast-forward/slow-motion API. The demo-compose app showcases this with a long-press gesture to fast-forward playback and seeking with double tap. Combined with the ProgressSlider introduced in 1.10, the Compose player UI now offers ric

## jetc.dev Newsletter Issue #324

DevFeed: [jetc.dev Newsletter Issue #324](<https://devfeed.tech/articles/jetc-dev-newsletter-issue-324-22956.md>)

Original publisher: [Read original article](<https://jetc.dev/issues/324.html>)

Author: CommonsWare

Published: 2026-07-28T14:00:00Z

Content type: article

Language: en

Sources: [jetc.dev | Issues](<https://devfeed.tech/sources/jetc-dev-issues.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Accessibility](<https://devfeed.tech/topics/accessibility.md>), [Playwright](<https://devfeed.tech/topics/playwright.md>), [media3](<https://devfeed.tech/topics/media3.md>), [ExoPlayer](<https://devfeed.tech/topics/exoplayer.md>)

Tags: [accessibility](<https://devfeed.tech/tags/accessibility.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [dev](<https://devfeed.tech/tags/dev.md>), [exoplayer](<https://devfeed.tech/tags/exoplayer.md>), [media3](<https://devfeed.tech/tags/media3.md>), [playwright](<https://devfeed.tech/tags/playwright.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

jetc.dev Newsletter Issue #324 reviews recent Jetpack Compose and Media3 updates, highlights Kotlin and Compose guidance, and presents resources for Compose Multiplatform testing, accessibility scanning, dockable panels, charting, and photo editing.

### Source excerpt

PinnableContainer! End-to-end testing! Accessibility scanner! Docked panels! Photo editing! And... do we *really* need Canvas() everywhere?!?

## Now in Android #121

DevFeed: [Now in Android #121](<https://devfeed.tech/articles/now-in-android-121-22675.md>)

Original publisher: [Read original article](<https://medium.com/androiddevelopers/now-in-android-121-ddfe076c9884?source=rss----95b274b437c2---4>)

Author: Daniel Galpin

Published: 2025-10-20T22:09:39Z

Content type: article

Language: en

Sources: [Android Developers - Medium](<https://devfeed.tech/sources/android-developers-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [now-in-android](<https://devfeed.tech/topics/now-in-android.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [media3](<https://devfeed.tech/topics/media3.md>), [migration](<https://devfeed.tech/topics/migration.md>), [Accessibility](<https://devfeed.tech/topics/accessibility.md>), [Bluetooth LE](<https://devfeed.tech/topics/bluetooth-le.md>), [Dark Mode](<https://devfeed.tech/topics/dark-mode.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [pdf](<https://devfeed.tech/topics/pdf.md>)

Tags: [accessibility](<https://devfeed.tech/tags/accessibility.md>), [android](<https://devfeed.tech/tags/android.md>), [android-16](<https://devfeed.tech/tags/android-16.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [bluetooth-le](<https://devfeed.tech/tags/bluetooth-le.md>), [featured](<https://devfeed.tech/tags/featured.md>), [ios](<https://devfeed.tech/tags/ios.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [media](<https://devfeed.tech/tags/media.md>), [migration](<https://devfeed.tech/tags/migration.md>), [now-in-android](<https://devfeed.tech/tags/now-in-android.md>), [pdf](<https://devfeed.tech/tags/pdf.md>)

### AI overview

This edition of Now in Android covers Android 16 QPR2 Beta 1, Android Studio Narwhal's feature drop, Jetpack Compose 1.9, Media3 1.8, and related Android development updates. It highlights new platform APIs and changes involving accessibility, data migration between Android and iOS, PDF editing, media, Bluetooth LE Audio, and connectivity.

### Source excerpt

Compose 1.9, Media 3 1.8, QPR2 Beta 1, Narwhal Feature Drop, and more! Welcome to Now in Android, your ongoing guide to what's new and notable in the world of Android development. Read on for coverage of Android 16 QPR2 beta 1, the Android Studio Narwhal feature drop, Jetpack Compose 1.9, Media 3 1.8, Shape Morphing and Autofill in Compose, and much more. You can watch a video summary: https://medium.com/media/87a24ed0bca13b2d58bd3e59517b4273/href And we also have a podcast: https://medium.com/media/ef0552e532d340d1dd8ced3c6b6d85c5/href But this post has the most in-depth information, so read on! Android 16 QPR2 Beta 1 is here ✨ The first beta of Android 16 QPR2 is now available, the inaugural Android release with an Android minor SDK version. Minor SDK versions can include new APIs that extend platform features but cannot introduce targetSdkVersion gated behavior changes, minimizing the amount you need to test your apps against it. You can call new APIs by checking SDK_INT_FULL against the VERSION_CODES_FULL enumeration: if (Build.VERSION.SDK_INT_FULL >= Build.VERSION_CODES_FULL.BAKLAVA_1) { // Call new APIs from the Android 16 QPR2 release } VERSION_CODES_FULL cannot be used in uses-sdk manifest attributes. Here are some key updates from QPR2 Beta 1. UI, System Experience, and Accessibility: An expanded dark theme option intelligently inverts light apps for users preferring a dark appearance. Auto-themed app icons can be generated by the system if your app doesn't provide a monochrome layer. Interactive chooser sessions keep your app UI active while the sharesheet is open, using ChooserManager and ChooserSession. A new Data Transfer API enables more reliable and secure data migration between Android and iOS, requiring updates to your app's data extraction rules XML and BackupAgent implementation. The android.graphics.pdf package has expanded to support annotating and editing PDF documents via PdfRenderer.Page. ViewConfiguration values are now tailored to individua

## Now in Android #118 -- Google I/O 2025 Part II

DevFeed: [Now in Android #118 -- Google I/O 2025 Part II](<https://devfeed.tech/articles/now-in-android-118-google-i-o-2025-part-ii-22672.md>)

Original publisher: [Read original article](<https://medium.com/androiddevelopers/now-in-android-118-google-i-o-2025-part-ii-0176766c2061?source=rss----95b274b437c2---4>)

Author: Daniel Galpin

Published: 2025-06-18T17:01:42Z

Content type: article

Language: en

Sources: [Android Developers - Medium](<https://devfeed.tech/sources/android-developers-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Google](<https://devfeed.tech/topics/google.md>), [cameraX](<https://devfeed.tech/topics/camerax.md>), [media3](<https://devfeed.tech/topics/media3.md>), [Accessibility](<https://devfeed.tech/topics/accessibility.md>), [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>)

Tags: [accessibility](<https://devfeed.tech/tags/accessibility.md>), [android](<https://devfeed.tech/tags/android.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [camerax](<https://devfeed.tech/tags/camerax.md>), [compose](<https://devfeed.tech/tags/compose.md>), [featured](<https://devfeed.tech/tags/featured.md>), [google](<https://devfeed.tech/tags/google.md>), [google-i-o](<https://devfeed.tech/tags/google-i-o.md>), [google-io-2025](<https://devfeed.tech/tags/google-io-2025.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [media3](<https://devfeed.tech/tags/media3.md>), [now-in-android](<https://devfeed.tech/tags/now-in-android.md>)

### AI overview

This article covers the second part of Google I/O 2025 updates for Android development. It highlights new Jetpack Compose capabilities, Compose-first Navigation 3, CameraX and Media3 integration, accessibility testing, Kotlin Multiplatform, Android Studio improvements, and related Android ecosystem updates.

### Source excerpt

Now in Android #118 -- Google I/O 2025 Part IICompose, Camera and Media, Accessibility ,KMP, Tools, Maps, AndroidX, Google Home, integrating the web, Google Play, and more Welcome to part two of a special Google I/O 2025 edition of Now in Android, your ongoing guide to what's new and notable in Android development. This second edition covers the latest from Jetpack Compose, Camera and Media, Accessibility ,Kotlin Multiplatform, Android development tools, Google Maps, AndroidX, Google Home with Gemini, integrating web functionality, Google Play, and more. Part one included coverage of Material Expressive, watches, cars, tablets, laptops, connected displays, the latest in adaptive app development, XR development, taking advantage of on-device and cloud based AI, and Android 16. https://medium.com/media/ac4b380d9ad7f761525349fa12cc14a0/href Now in Android: 118 - What's new in Android development at Google I/O 2025 (part 2) Most of the content of this post is available in the form of a video or podcast, so feel free to watch or listen rather than read on. (Or do all three to help you remember! There won't be a quiz.) Jetpack Compose 💻 Jetpack Compose introduced new features, including autofill support, auto-sizing text, visibility tracking, the animate bounds modifier, and accessibility checks in tests, and that's just the beginning of what's new: animateBounds provides automatic animations of a Composable's position and size within a LookaheadScope, while visibility tracking is used when you need high-performance information on a composable's position in its root container, screen, or window. For more on autofill, autosize, and the new state based TextField, check out the "Mastering text input in Compose" talk. https://medium.com/media/9d6173df81f8e842f25b25f0a406c606/href Navigation 3 is a brand new, Compose-first navigation library, now in alpha that's designed to give you greater control while simplifying building complex navigation flows. Announcing Jetpack Navigati

## Storing Network Responses With Apollo Normalized Cache

DevFeed: [Storing Network Responses With Apollo Normalized Cache](<https://devfeed.tech/articles/storing-network-responses-with-apollo-normalized-cache-22839.md>)

Original publisher: [Read original article](<http://androidessence.com/storing-network-responses-with-apollo-normalized-cache/>)

Author: Adam McNeilly

Published: 2021-02-05T00:00:00Z

Content type: tutorial

Language: en

Sources: [Android Essence](<https://devfeed.tech/sources/android-essence.md>)

Topics: [Caching](<https://devfeed.tech/topics/caching.md>), [SQLite](<https://devfeed.tech/topics/sqlite.md>), [Database](<https://devfeed.tech/topics/database.md>), [media3](<https://devfeed.tech/topics/media3.md>), [Persistence](<https://devfeed.tech/topics/persistence.md>), [Code](<https://devfeed.tech/topics/code.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [debug](<https://devfeed.tech/topics/debug.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [cache](<https://devfeed.tech/tags/cache.md>), [code](<https://devfeed.tech/tags/code.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [graphql](<https://devfeed.tech/tags/graphql.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [http](<https://devfeed.tech/tags/http.md>), [library](<https://devfeed.tech/tags/library.md>), [network](<https://devfeed.tech/tags/network.md>), [persistence](<https://devfeed.tech/tags/persistence.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>)

### AI overview

A tutorial on Apollo Android's normalized cache for storing network response data by ID. It explains in-memory and SQLite-backed caches, cache chaining, persistence across application sessions, and cache management and debugging.

### Source excerpt

In our previous post we looked at the HTTP cache from Apollo Android for storing network responses. In this post, we look at its counter part, the normalized cache.

## Introducing Vectordrawable-Seekable

DevFeed: [Introducing Vectordrawable-Seekable](<https://devfeed.tech/articles/introducing-vectordrawable-seekable-23103.md>)

Original publisher: [Read original article](<https://medium.com/android-news/introducing-vectordrawable-seekable-b96ef57ffe36?source=rss----8fca399d4de---4>)

Author: Alistair Sykes

Published: 2020-05-11T13:35:28Z

Content type: tutorial

Language: en

Sources: [Android & Tech News -- Medium](<https://devfeed.tech/sources/android-tech-news-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [media3](<https://devfeed.tech/topics/media3.md>), [XML](<https://devfeed.tech/topics/xml.md>), [Library](<https://devfeed.tech/topics/library.md>), [SDK](<https://devfeed.tech/topics/sdk.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [animation](<https://devfeed.tech/tags/animation.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [library](<https://devfeed.tech/tags/library.md>), [material-design](<https://devfeed.tech/tags/material-design.md>), [play](<https://devfeed.tech/tags/play.md>), [repeat](<https://devfeed.tech/tags/repeat.md>), [rotation](<https://devfeed.tech/tags/rotation.md>), [screen](<https://devfeed.tech/tags/screen.md>), [vector](<https://devfeed.tech/tags/vector.md>), [xml](<https://devfeed.tech/tags/xml.md>)

### AI overview

This tutorial introduces the Vectordrawable-Seekable library for Android. It explains how Core-Animation and SeekableAnimatedVectorDrawable add pause and seek controls to animated vector drawables, then demonstrates creating vector, animation, and drawable XML resources and displaying the result.

### Source excerpt

Using the new and improved AnimatedVectorDrawable to pause and seek your animations.AnimatedVectorDrawable Android SDK 21 introduced both the VectorDrawable and the AnimatedVectorDrawable. This allowed you to use vector assets within your app, and even animate them. They've iterated on these since then, but AnimatedVectorDrawable was still missing something. You couldn't manipulate and control the animation. There was no pause or seek functionality. Core-Animation The Android team has been hard at work backporting the framework Animator APIs. They have created a separate unbundled AndroidX library called Core-Animation. The Animator APIs have been around for some time. But they didn't provide the capabilities needed for this pause and seek functionality. So they needed to be unbundled and then iterated on. Vectordrawable-Seekable Once Core-Animation was available the Android team could create the Vectordrawable-Seekable library. This library revolves around the class SeekableAnimatedVectorDrawable. Under the hood, this class uses the AnimatorSet and subsequently Animator from Core-Animation. These provide the pause and seek functionality. How toCreate the vector Firstly, you need a vector asset of the image you wish to animate. This works best if it is simple and optimised. See these resources for information on optimising assets: - https://www.brightec.co.uk/blog/creating-vector-drawables-android - https://arturdryomov.dev/posts/optimizing-android-vector-images/ For this example I am going to use an Android: https://medium.com/media/c1f49ee65961374471c7019479d595cf/href This XML file should be placed in your res/drawable directory. Notice the group names, as these allow us to reference each part of the image later. Notice also the pivot points defined. These define the pivot around which rotation would happen. Create the animation To define the animation itself you can create another XML file. This defines an ObjectAnimator. https://medium.com/media/51350379510a257