# Android & Tech News -- Medium

The (retired) Pub(lication) for Android & Tech, focused on Development - Medium

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

## 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

## Android and Java Technical Interview Questions for Large Technology Companies

DevFeed: [Android and Java Technical Interview Questions for Large Technology Companies](<https://devfeed.tech/articles/crack-top-android-development-company-interview-23098.md>)

Original publisher: [Read original article](<https://medium.com/android-news/crack-top-android-development-company-interview-f106756f045e?source=rss----8fca399d4de---4>)

Author: Budhdi Sharma

Published: 2020-05-08T20:48:42Z

Content type: tutorial

Language: en

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

Topics: [Development](<https://devfeed.tech/topics/development.md>), [Android](<https://devfeed.tech/topics/android.md>), [Java](<https://devfeed.tech/topics/java.md>), [Polymorphism](<https://devfeed.tech/topics/polymorphism.md>), [Algorithms, Complexity](<https://devfeed.tech/topics/algorithms-complexity.md>)

Tags: [algorithms](<https://devfeed.tech/tags/algorithms.md>), [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [crack](<https://devfeed.tech/tags/crack.md>), [development](<https://devfeed.tech/tags/development.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [interview](<https://devfeed.tech/tags/interview.md>), [java](<https://devfeed.tech/tags/java.md>), [polymorphism](<https://devfeed.tech/tags/polymorphism.md>), [tips](<https://devfeed.tech/tags/tips.md>)

### AI overview

This interview-preparation article outlines knowledge areas for Android development interviews, including Java fundamentals, Android questions, advanced development technologies, and cross-platform hybrid development. It highlights topics such as Java APIs, source-code implementation principles, algorithms, design patterns, equality and hash codes, primitive sizes, and polymorphism.

### Source excerpt

The interviewer in interviews asked these questions with top-tier Internet companies. Familiarity with the knowledge points listed in this... Continue reading on AndroidPub "

## Deep Dive into Activity Results API -- No More onActivityResult()

DevFeed: [Deep Dive into Activity Results API -- No More onActivityResult()](<https://devfeed.tech/articles/deep-dive-into-activity-results-api-no-more-onactivityresult-23097.md>)

Original publisher: [Read original article](<https://medium.com/android-news/activity-results-api-69be5a225e86?source=rss----8fca399d4de---4>)

Author: Wajahat Karim

Published: 2020-05-03T00:11:01Z

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>), [Tutorial](<https://devfeed.tech/topics/tutorial.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [api](<https://devfeed.tech/tags/api.md>), [deep-dive](<https://devfeed.tech/tags/deep-dive.md>), [examples](<https://devfeed.tech/tags/examples.md>), [programming](<https://devfeed.tech/tags/programming.md>), [software-development](<https://devfeed.tech/tags/software-development.md>)

### AI overview

An Android tutorial introduces the Activity Results API as a way to transfer data between Activities. It uses the example of capturing an image through the user's preferred Camera app and returning the result to the calling Activity.

### Source excerpt

Learn New ActivityResultContracts by Examples Continue reading on AndroidPub "

## GitFlow with GitHub

DevFeed: [GitFlow with GitHub](<https://devfeed.tech/articles/gitflow-with-github-23100.md>)

Original publisher: [Read original article](<https://medium.com/android-news/gitflow-with-github-c675aa4f606a?source=rss----8fca399d4de---4>)

Author: Maciej Najbar

Published: 2020-04-27T17:43:02Z

Content type: article

Language: en

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

Topics: [Git](<https://devfeed.tech/topics/git.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [continuous-delivery](<https://devfeed.tech/tags/continuous-delivery.md>), [git](<https://devfeed.tech/tags/git.md>), [gitflow](<https://devfeed.tech/tags/gitflow.md>), [github](<https://devfeed.tech/tags/github.md>), [gitlab](<https://devfeed.tech/tags/gitlab.md>), [programming](<https://devfeed.tech/tags/programming.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [testing](<https://devfeed.tech/tags/testing.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

An overview of GitFlow branch management, including master and develop branches, feature, release, and hotfix branches, and the challenges of resolving conflicts.

### Source excerpt

Why we have to choose between safety and tidiness? https://nvie.com/posts/a-successful-git-branching-model/ Quick note before I begin. GitFlow, was first published by Vincent Driessen in 2010. He suggests a simpler workflow -- GitHub Flow -- for the teams that do not have to support multiple versions at the same time. For further reading see the post from the author himself. Most of the teams around the world have worked, work or will work with GitFlow. A good understanding of branch management and conflicts resolution can save a lot of trouble. The latter is the topic that I will focus the most in this article. tl;drLong living branches master -- this is where stable production ready code lands. No direct commits are allowed. If you want to configure Continuous Delivery for your project, master branch is exactly the place (read how to hook on commits). Each change on this branch must be tagged with version number. develop -- this is a construction area. All new features are merged to it. This branch should be buildable all the time. If it doesn't (for any reasons), fix it asap. Special branches Feature branch - branches off from develop - merges to develop - naming: anything but master, develop, release or hotfix; most commonly devName/JiraTicketNo Feature branch Release branch - branches off from develop - merges to master and develop - naming: release, rc Release branch Hotfix branch - branches off from master - merges to master and develop or release (if exists) - naming: hotfix Hotfix branchConflicts This is the most important topic to cover. They will occur eventually -- even in one-man projects; that's right, I work with a great developer who did do just that 🙂 Anyway, I want to focus mostly on it because it's a very marshy ground and can bring tragic effects to the project. Perfect flow? Never happen! I know the feature branch may look like it doesn't follow GitFlow rules, but let me explain it. Plans are useless, but planning is indispensable. -- Dwight Eisenhowe

## Handling Media Files With MediaFacer Library For Android

DevFeed: [Handling Media Files With MediaFacer Library For Android](<https://devfeed.tech/articles/handling-media-files-with-mediafacer-library-for-android-23101.md>)

Original publisher: [Read original article](<https://medium.com/android-news/handling-media-files-with-mediafacer-library-for-android-cd9d2ca0dc68?source=rss----8fca399d4de---4>)

Author: M.N Emmanuel

Published: 2020-04-27T07:45:41Z

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>), [Android Library](<https://devfeed.tech/topics/android-library.md>), [Library](<https://devfeed.tech/topics/library.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-architecture](<https://devfeed.tech/tags/android-architecture.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [code](<https://devfeed.tech/tags/code.md>), [library](<https://devfeed.tech/tags/library.md>), [manifest](<https://devfeed.tech/tags/manifest.md>), [programming](<https://devfeed.tech/tags/programming.md>), [software-development](<https://devfeed.tech/tags/software-development.md>)

### AI overview

This tutorial introduces the MediaFacer Android library for querying media files through MediaStore with less cumbersome code. It discusses Android 10 Scoped Storage, support for internal and external storage, and the permissions required to use the library.

### Source excerpt

Querying media content on android with ease using the MediaFacer class library Continue reading on AndroidPub "

## Jetpack Compose: Twitter UI

DevFeed: [Jetpack Compose: Twitter UI](<https://devfeed.tech/articles/jetpack-compose-twitter-ui-23104.md>)

Original publisher: [Read original article](<https://medium.com/android-news/jetpack-compose-twitter-ui-96f76577143a?source=rss----8fca399d4de---4>)

Author: Ahmed Rizwan

Published: 2020-04-25T23:46:18Z

Content type: tutorial

Language: en

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

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [ui](<https://devfeed.tech/topics/ui.md>), [App](<https://devfeed.tech/topics/app.md>), [navigation](<https://devfeed.tech/topics/navigation.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [app](<https://devfeed.tech/tags/app.md>), [compose](<https://devfeed.tech/tags/compose.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [dialog](<https://devfeed.tech/tags/dialog.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [layout](<https://devfeed.tech/tags/layout.md>), [navigation](<https://devfeed.tech/tags/navigation.md>), [navigation-drawer](<https://devfeed.tech/tags/navigation-drawer.md>), [state](<https://devfeed.tech/tags/state.md>), [themes](<https://devfeed.tech/tags/themes.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

The article documents a test of Jetpack Compose through a simple Twitter UI clone. It describes the app's three screens, state model, navigation, layouts, scrolling approach, and light, dark, and darker themes.

### Source excerpt

I decided to test out Jetpack Compose by making a simple Twitter UI clone after I came across this tweet by Mariano Zorrilla: Mariano Zorrilla 💙 on Twitter Wait... did I just copied Twitter using #Flutter and share it over @CodePen?! 🥰 Such an amazing tool! Took me 1 day of work and 1500 lines of code. Link: https://t.co/zI90oTPYDd cc @timsneath @redbrogdon @ZoeyFan723 @kevmoo @MartinAguinis @nlycskn @Nash0x7E2 https://t.co/OqzBNWET0y He used Flutter (which is an amazing tool btw for building cross platform apps) -- with just one day of work, 1500 lines of code. That's beyond impressive (specially the fact that Flutter can be hosted on CodePen as well). So with similar constraints, I wanted to try out Jetpack Compose. I followed the CodePen example (as closely as I could) and this is the result: Complete source code: ahmedrizwan/JetpackComposeTwitter The App There are three screens in this app Home ScreenProfile ScreenCompose ScreenApp State Before we get to the screens -- take a look at app state model, which will be used for navigation and theming. I also added some helpers for navigating to individual screens & for checking theme. Models There are two models -- both data classes. The Tweet model is annotated with @Model as we update this model from our composed functions to update view state. User stays the same, hence it's not annotated. Home Screen Home screen is a Scaffold -- with drawer, bottom app bar, fab and content components. The scaffoldState is for managing the navigation drawer state. Initially the drawer is closed. Content The content consists of a custom top bar & list of tweets. I used VerticalScroller (with column inside) for the list instead of an AdapterList, as for some reason it wasn't as smooth when scrolling (this will change as Jetpack Compose matures). Ideally we would opt for AdapterList instead -- but for now, I'm using the scroller. Top Bar As it's a custom top bar -- I used a Surface with some elevation. Inside it's a simple row with three i

## Realtime Database vs Firestore: 9 Major Differences

DevFeed: [Realtime Database vs Firestore: 9 Major Differences](<https://devfeed.tech/articles/realtime-database-vs-firestore-9-major-differences-23105.md>)

Original publisher: [Read original article](<https://medium.com/android-news/realtime-database-vs-firestore-447b2d990599?source=rss----8fca399d4de---4>)

Author: Wajahat Karim

Published: 2020-04-17T20:00:38Z

Content type: comparison

Language: en

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

Topics: [Firestore](<https://devfeed.tech/topics/firestore.md>), [Realtime Database](<https://devfeed.tech/topics/realtime-database.md>), [Firebase](<https://devfeed.tech/topics/firebase.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [comparison](<https://devfeed.tech/tags/comparison.md>), [database](<https://devfeed.tech/tags/database.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [firestore](<https://devfeed.tech/tags/firestore.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [realtime](<https://devfeed.tech/tags/realtime.md>), [realtime-database](<https://devfeed.tech/tags/realtime-database.md>)

### AI overview

This comparison outlines differences between Cloud Firestore and Firebase Realtime Database. It describes Firestore as more scalable with faster queries and richer features, while Realtime Database is presented as an older option focused on low-latency data synchronization for mobile apps.

### Source excerpt

Firestore is much better than the Realtime Database like the black trainer. Period. Continue reading on AndroidPub "

## How to migrate GitLab/Bitbucket to GitHub in a simple way

DevFeed: [How to migrate GitLab/Bitbucket to GitHub in a simple way](<https://devfeed.tech/articles/how-to-migrate-gitlab-bitbucket-to-github-in-a-simple-way-23102.md>)

Original publisher: [Read original article](<https://medium.com/android-news/how-to-migrate-gitlab-bitbucket-to-github-in-a-simple-way-e38bc60b1547?source=rss----8fca399d4de---4>)

Author: Quang Nguyen

Published: 2020-04-15T12:55:23Z

Content type: tutorial

Language: en

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

Topics: [GitHub](<https://devfeed.tech/topics/github.md>), [bitbucket](<https://devfeed.tech/topics/bitbucket.md>), [GitLab](<https://devfeed.tech/topics/gitlab.md>), [Git](<https://devfeed.tech/topics/git.md>), [hosting](<https://devfeed.tech/topics/hosting.md>)

Tags: [bitbucket](<https://devfeed.tech/tags/bitbucket.md>), [git](<https://devfeed.tech/tags/git.md>), [github](<https://devfeed.tech/tags/github.md>), [gitlab](<https://devfeed.tech/tags/gitlab.md>), [hosting](<https://devfeed.tech/tags/hosting.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [ssh](<https://devfeed.tech/tags/ssh.md>)

### AI overview

A tutorial explains how to migrate a repository from Bitbucket or GitLab to GitHub by creating an empty GitHub repository, changing the local remote URL, pushing the code and commit history, and optionally archiving the original repository as read-only.

### Source excerpt

Checkout my latest app: Tinido. GitHub has just announced a happy news today for us, developers. "Teams on GitHub can create unlimited private repositories for free." So, here are their newest updates on the free package. Screenshot was taken on April 15th, 2020. Source (https://github.com/pricing) These changes are so competitive to other code hosting services like Bitbucket or GitLab. Many teams are going to relocate their projects to GitHub as I think. If you share the same idea and look for a simple way to migrate a repo from Bitbucket or GitLab, the followings are several simple steps to accomplish this. Inside your GitHub team page, create an empty private repo with the same name of Bitbucket/GitLab repo that you want to transfer. Copy your newly created repo link, either in HTTPS or SSH. For example, git@github.com:team-name/repo-name.git (SSH type) Inside your local project folder, change the remote URL under.git/config 's file to your copied GitHub's one. The content looks similar as follows. [remote "origin"] url = git@github.com:team-name/repo-name.git fetch = +refs/heads/*:refs/remotes/origin/* Do a git push: git push --all . It will push all codes and commit history on your newly GitHub repository. Done. After that, when we push new commits, it will push to GitHub only. The Bitbucket/GitLab repo now can be archived to 'Read-only' mode. Please get in touch with me via Github. Happy coding and have a good time! How to migrate GitLab/Bitbucket to GitHub in a simple way was originally published in AndroidPub on Medium, where people are continuing the conversation by highlighting and responding to this story.

## What Happened to Chat Bubbles / Heads in Android?

DevFeed: [What Happened to Chat Bubbles / Heads in Android?](<https://devfeed.tech/articles/what-happened-to-chat-bubbles-heads-in-android-23106.md>)

Original publisher: [Read original article](<https://medium.com/android-news/what-happened-to-chat-bubbles-heads-in-android-a30597f36115?source=rss----8fca399d4de---4>)

Author: Wajahat Karim

Published: 2020-04-10T18:49:54Z

Content type: opinion

Language: en

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

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Malware](<https://devfeed.tech/topics/malware.md>), [Cybercrime](<https://devfeed.tech/topics/cybercrime.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [chat](<https://devfeed.tech/tags/chat.md>), [interface](<https://devfeed.tech/tags/interface.md>), [malware](<https://devfeed.tech/tags/malware.md>), [permission](<https://devfeed.tech/tags/permission.md>), [phishing](<https://devfeed.tech/tags/phishing.md>), [ransomware](<https://devfeed.tech/tags/ransomware.md>), [scams](<https://devfeed.tech/tags/scams.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [user-interface](<https://devfeed.tech/tags/user-interface.md>)

### AI overview

The article explains how Android chat bubbles and heads depend on the SYSTEM_ALERT_WINDOW permission, a powerful capability that lets apps display over other apps. It describes how malware has abused this permission for fraudulent ads, phishing, clickjacking, banking-Trojan overlays, and ransomware lock screens.

### Source excerpt

How the SYSTEM_ALERT_WINDOW permission has been abused over the years by malware creators & hackers? Continue reading on AndroidPub "

## Using Motion and Animation to Teach Android App Interactions

DevFeed: [Using Motion and Animation to Teach Android App Interactions](<https://devfeed.tech/articles/education-through-motion-23099.md>)

Original publisher: [Read original article](<https://medium.com/android-news/education-through-motion-b500a77a3b5?source=rss----8fca399d4de---4>)

Author: Alistair Sykes

Published: 2020-04-09T14:46:24Z

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>), [Material Design](<https://devfeed.tech/topics/material-design.md>), [User Experience](<https://devfeed.tech/topics/user-experience.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>), [material-design](<https://devfeed.tech/tags/material-design.md>), [user-experience](<https://devfeed.tech/tags/user-experience.md>)

### AI overview

This tutorial explains how motion and animation in Android apps can guide users, clarify interactions, and improve user experience. It discusses Material Design principles, Android Animation and Animator APIs, and ripple effects for clickable list items.

### Source excerpt

Educating Android users can be subtle by using motionMaterial Design The material design system will be familiar to most, as one of the most widely used design systems. It's a visual language that represents good design principles whilst allowing expressive branding. Foundationally, it is based on the physics of the world. This makes it natural and familiar to users. It models the way objects move and how they interact with each other. Motion Motion can celebrate the completion of a task, delight the user, or help to drive the user through a flow. The way objects move and interact can bring a touch of class and express your brand. You can also use motion to help teach the user how to interact with an element. Often subtle bounces, shakes, and elevations can improve user experience and understanding. Animations On Android, animation API's have been re-written and changed over time. Currently, there are two main ways. The Animation API's are the older API's, but they allow you to use the anim resource files. The Animator API's are the newer API's which typically are a little easier to work with. Animator's change the properties of an object/view. Whilst Animation's only change the visual representation of them. Examples I have created some examples which give a flavour of what is achievable using motion on Android. There are many ways of creating the same animations, so I have tried to showcase a variety. Hopefully, these examples will inspire you to experiment with motion in your apps. Clickable Some elements may not appear clickable to some users. For example the items within a list. Although changing the static visual may help, using motion can be more powerful. Lists commonly will utilize a RecyclerView with an accompanying adapter. If a list item is clickable, you may want to set a background of selectableItemBackground. This provides a ripple effect upon user click, giving visual confirmation of a click. You can also trigger this effect manually, thus giving a v