78 Tutorial Topics

Remove Filter
Member Avatar for
Member Avatar for dimitrilc

## Introduction ## In a previous tutorial, we learned [how to create a notification on Android](https://www.daniweb.com/programming/mobile-development/tutorials/536756/android-native-how-to-create-a-notification#post2282507). In that tutorial, we did not have to request any permission because applications did not need permission to post notifications on Android 12 and below. It has been almost a year since the release …

Member Avatar for Erussuhsh
1
640
Member Avatar for dimitrilc

## Introduction ## In Android Studio, we can run multiple tests in parallel across multiple devices using the dropdown menu. ![Screen_Shot_2022-09-26_at_3.02.02_PM.png](https://static.daniweb.com/attachments/4/a7966192c6b1c265a65010a9d1fa236d.png) Running instrumented tests this way is very convenient during development, but there is a problem with this method when your tests are run on a remote build server: * …

Member Avatar for John_387
2
784
Member Avatar for dimitrilc

## Introduction ## In a previous tutorial, we learned [how to set an exact alarm](https://www.daniweb.com/programming/mobile-development/tutorials/537920/android-native-how-to-launch-activity-from-an-exact-alarm). A permission called `SCHEDULE_EXACT_ALARM` was used in that tutorial. Initially, I thought that it was only a normal install-time permission, but I have recently found out that this specific permission also belongs to a rare …

1
360
Member Avatar for dimitrilc

## Introduction ## When working with ViewModels, instead of using the default, it is best practice that we inject coroutine dispatchers instead of hard-coding them. The reasoning behind this is that it is easier to switch to a testable dispatcher in tests. In this tutorial, we will learn how to …

1
1K
Member Avatar for dimitrilc

## Introduction ## When working with RecyclerView, sometimes we are required to scroll the RecyclerView in code, especially after addition of a list item. In this tutorial, we will learn how to scroll to specific positions on a RecyclerView. ## Goals ## At the end of the tutorial, you would …

1
730
Member Avatar for dimitrilc

## Introduction ## Taking what we already learned from the previous tutorials about drawing custom shapes and animating along elements along a Path. In this tutorial, we will combine what we learned about animation so far to create an alternating Yin Yang symbol. To those unfamiliar with the Yin Yang …

1
133
Member Avatar for dimitrilc

This is the second part of a series. The first part can be found [here](https://www.daniweb.com/programming/mobile-development/tutorials/538948/android-native-animate-alternating-yin-yang-symbol-part-1). ## Draw The Yin ## Now that we have the Yang drawn, we will continue onto the Yin. 1. Add the Paint for the Yin into the YingYang class. We will use a *stroke* style …

1
102
Member Avatar for dimitrilc

## Animation Strategy ## Welcome to part three of the tutorial; part two can be found [here](https://www.daniweb.com/programming/mobile-development/tutorials/538947/android-native-animate-alternating-yin-yang-symbol-part-2). For this animation, I have chosen to redraw the YinYang Drawable at each frame. This means recreating the YinYang object with different constructor parameters on every frame (the current YinYang implementation has a …

1
97
Member Avatar for dimitrilc

## Introduction ## Welcome to part two of the tutorial. Let us continue to learn how to animate views along a Path. Part one can be found [here](https://www.daniweb.com/programming/mobile-development/tutorials/538944/android-native-animate-view-along-path-part-1). ## Important Coordinates ## Both the sun and the moon in our app can occupy any one of the three important coordinates …

1
65
Member Avatar for dimitrilc

## Introduction ## In the last tutorial, we learned [how to draw complex shapes](https://www.daniweb.com/programming/mobile-development/tutorials/538943/android-native-draw-complex-shapes-using-the-path-class#post2288657) using a Path object. Using the concepts from the previous tutorial, we will now attempt to animate Views to move along a custom Path. ## Goals ## At the end of the tutorial, you would have …

1
118
Member Avatar for dimitrilc

## Introduction ## In the last tutorial, we learned [how to draw basic shapes](https://www.daniweb.com/programming/mobile-development/tutorials/538942/android-native-draw-basic-shapes-on-canvas) on Android using premade methods from the graphics library. In this tutorial, we step up the difficulty a notch by learning how to draw using the Path class. The Path class allows for drawing of technically …

1
412
Member Avatar for dimitrilc

## Introduction ## Even though the built-in vector library included in Android Studio contains many icons readily for use, you might eventually run into a situation where a custom icon is needed. In this tutorial, we will learn how to create our own icons from basic shapes drawn on a …

1
382
Member Avatar for dimitrilc

## Introduction ## Android includes many options to add animations to your app. In this tutorial, we will learn how to add a type of animation called frame-by-frame animation into our Android app. ## Goals ## At the end of the tutorial, you would have learned: 1. How to add …

1
358
Member Avatar for dimitrilc

## Introduction ## Every Android View has a `layoutParams` property. This property tells the parent ViewGroup how a View wants to be laid out; it is also often used to change the size of a View. In this tutorial, we will learn how to animate Views while modifying their `layoutParams`. …

2
256
Member Avatar for dimitrilc

## Introduction ## Cards are a common widget for Material 3-themed applications. Expanding a card after the user performs a click action is a very common behavior. While Android can automatically render the new expanded card automatically, we will have to implement our own animation if we want a smooth, …

2
542
Member Avatar for dimitrilc

## Introduction ## When working on Espresso tests, you might have run into a situation where you need to verify what your app does when an activity is in a specific [**Lifecycle**](https://developer.android.com/reference/androidx/lifecycle/Lifecycle) state. In this tutorial, we will learn how to achieve this by using the **ActivityScenario** class. ## Goals …

2
84
Member Avatar for dimitrilc

## Introduction ## In Android projects, **DataSource** classes act as entry points to interacting with local or remote data sources. Their dependencies tend to be HTTP clients, the database, or DAOs, and their dependents are usually **Repository** classes. In this tutorial, we will learn how to provide a fake **DataSource** …

3
717
Member Avatar for dimitrilc

## Introduction ## In this tutorial, we will learn how to create an instrumented test for Navigation Components. ## Goals ## At the end of the tutorial, you would have learned: 1. How to test Navigation Components. ## Tools Required ## 1. Android Studio. The version used in this tutorial …

1
944
Member Avatar for dimitrilc

## Introduction ## In this tutorial, we will learn how to load data asynchronously into a **ListAdapter** (*a subclass of **RecyclerView.Adapter***). ## Goals ## At the end of the tutorial, you would have learned: 1. How to serve asynchronous data to a **ListAdapter**. ## Tools Required ## 1. Android Studio. …

1
335
Member Avatar for dimitrilc

## Introduction ## In this tutorial, we will learn how to filter and validate Intents fired from the application under test. ## Goals ## At the end of the tutorial, you would have learned: 1. How to filter and validate Intents in Espresso tests. ## Tools Required ## 1. Android …

1
100
Member Avatar for dimitrilc

## Introduction ## When working with Espresso tests, you might have found it hard to make Espresso wait for background tasks to complete before performing other actions or assertions. Fortunately, the classes in the Espresso **idling** package exist to cover this use case. In this tutorial, we will learn how …

1
513
Member Avatar for dimitrilc

## Introduction ## Starting from Android 10 (*API 29*), Android places many restrictions on how apps can launch activities from the background. There are a couple of exemptions, which can be found on this [list](https://developer.android.com/guide/components/activities/background-starts#exceptions). At the end of the list is the usage of the *dangerous* permission `SYSTEM_ALERT_WINDOW`. I …

1
345
Member Avatar for dimitrilc

## Introduction ## When working with Room, you might have run into a situation where you only want to update specific fields of an entity instead of replacing the entire row. In this tutorial, we will learn how to do this in two different ways. ## Goals ## At the …

2
2K
Member Avatar for dimitrilc

## Introduction ## On the android platform, widgets provide a quick way to interact with your Apps. They are extremely useful at providing quick information without the user launching the app Activities themselves. Common use cases for homescreen widgets are weather, email, or banking information. In this tutorial, we will …

2
263
Member Avatar for dimitrilc

## Introduction ## In this tutorial, we will learn how to use **ConcatAdapter**. It is a great choice for displaying header or footer at the beginning or at the end of a **RecyclerView**. ## Goals ## At the end of the tutorial, you would have learned: 1. How to use …

2
393
Member Avatar for dimitrilc

## Introduction ## Rather than modifying the button widget’s appearance in code, it is possible to do this in an XML resource instead. In this tutorial, we will learn how to create two different types of specialized XML resource files for changing the **Drawable** and the color. ## Goals ## …

2
123
Member Avatar for dimitrilc

## Introduction ## The Android platform provides many different types of menus to be added to an Android app. In this tutorial, we will learn how to add the most common type of menu, an **Options Menu**. An **Options Menu** is one that appears at the right corner of the …

1
185
Member Avatar for dimitrilc

## Introduction ## The Android platform provides many different types of menus to be added to an Android app. In this tutorial, we will learn how to add **Contextual Menu**s to our app. ## Goals ## At the end of the tutorial, you would have learned: 1. How to add …

1
256
Member Avatar for dimitrilc

## Introduction ## Among all of the Android libraries, Paging 3 is perhaps one of the hardest to understand. Personally, I think the problem with Paging 3 are: 1. Developers need to learn a lot of custom classes before they can understand how Paging 3 works under the hood and …

1
643
Member Avatar for dimitrilc

## Introduction ## The Android Paging 3 library can operate in two modes, with an offline Room database as a source of truth or without one. In this tutorial, we will look at how to use Paging 3 with a local Room database. This tutorial expands on the previously published …

1
2K
Member Avatar for dimitrilc

## Introduction ## Among the many ways to create your own View, extending an existing View is the simplest option. This is because you are inheriting pre-made attributes, drawing, and accessibility features. In this tutorial, we will learn how to create our own custom View by extending an existing View …

2
118
Member Avatar for dimitrilc

## Introduction ## In this tutorial, we will learn how to apply Material 3 colors and Dynamic Colors to our App. ## Goals ## At the end of the tutorial, you would have learned: 1. How to apply Material 3 colors. 2. How to enable Dynamic Colors. ## Tools Required …

2
530
Member Avatar for dimitrilc

## Introduction ## In Android development, UseCases are classes that encapsulate business logic that are often used in ViewModel classes. UseCases belong to the optional Domain layer in Android apps, so they are not required, but can reduce your ViewModel’s complexity and make your application easier to test. In this …

2
505
Member Avatar for dimitrilc

## Introduction ## When working with WorkManager, it is important to know how to provide input data to your Workers. In this tutorial, we will learn how to provide basic input data to a Worker as well as when Workers are chained together. ## Goals ## At the end of …

2
216
Member Avatar for dimitrilc

## Introduction ## If your App only need a simple way to play videos on Android, then **VideoView** (`android.widget.VideoView`) might just fit the bill. In this tutorial, we will learn how to use VideoView for video playback in our App. ## Goals ## At the end of the tutorial, you …

Member Avatar for Iqra_18
3
173
Member Avatar for dimitrilc

## Introduction ## Android provides many ways to perform background tasks, such as Services, WorkManager, or even threads. In this tutorial, we will learn how to create a Service for our Android app. ## Goals ## At the end of the tutorial, you would have learned: 1. How to create …

Member Avatar for Iqra_18
2
368
Member Avatar for dimitrilc

## Introduction ## When using a Worker (**from the WorkManager library**), you might have wondered how to inject dependencies with Hilt. In this tutorial, we will learn how to inject dependencies into our Worker. ## Goals ## At the end of the tutorial, you would have learned: 1. How to …

1
1K
Member Avatar for dimitrilc

## Introduction ## Finding a View in Espresso tests can be quite confusing because there are so many matchers available. In this tutorial, we will learn how to find a View based on its sibling contents. ## Goals ## At the end of the tutorial, you would have learned: 1. …

1
343
Member Avatar for dimitrilc

## Introduction ## When working with Room, you might have wondered how to run multiple statements in a single transaction. Running multiple statements in one transaction has two main benefits: 1. Your statements can reuse the same connection. 2. They can all fail together if something goes wrong. Regarding the …

1
653
Member Avatar for dimitrilc

## Introduction ## When working with Room, you might have wondered how to describe one-to-many relationships between entities. In this tutorial, we will learn how to do just that. ## Goals ## At the end of the tutorial, you would have learned: 1. How to define one-to-many relationship for entities …

1
1K
Member Avatar for dimitrilc

## Introduction ## There are many ways to describe relationships between Entities in Room, one of which is to embed an entity inside of another. When embedding an Entity, the columns of the embedded Entity are extracted as member columns of the enclosing entity. In this tutorial, we will learn …

1
206
Member Avatar for dimitrilc

## Introduction ## When working with Services on Android, you might have ran into an issue where you would like to: 1. Use a concrete implementation of a Service (*from a built-in or third party library*). 2. Make the Service lifecycle-aware so that you can use coroutines with it. Many …

1
3K
Member Avatar for dimitrilc

## Introduction ## When working with Room, there might come a situation during bulk CRUD operations that it would be useful to add a Foreign Key to one of our tables. This provides two main benefits: cascading delete (*must be configured manually*) and enforcing data integrity on linked entities. In …

3
7K
Member Avatar for dimitrilc

## Introduction ## If your Android Application uses Room, then you might have wondered how to prepopulate a Room database. In this tutorial, we will learn how to prepopulate a Room database. ## Goals ## At the end of the tutorial, you would have learned: 1. How to prepopulate a …

1
1K
Member Avatar for dimitrilc

## Introduction ## When working with music files, you might have wondered how to load display art from Audio files. In this tutorial, we will learn how to load thumbnails for audio files. ## Goals ## At the end of the tutorial, you would have learned: 1. How to load …

2
2K
Member Avatar for dimitrilc

## Introduction ## When working with Hilt, you might have wondered how to inject ViewModels into your application. In this tutorial, we will learn how to inject ViewModels into your app Fragments. ## Goals ## At the end of the tutorial, you would have learned: 1. How to inject ViewModels …

4
1K
Member Avatar for dimitrilc

## Introduction ## In Android development, reusable layouts can be used to reduce duplicate code across XML files. In this tutorial, we will learn how to reuse layout files, especially with View Binding enabled. ## Goals ## At the end of the tutorial, you would have learned: 1. How to …

2
602
Member Avatar for dimitrilc

## Introduction ## MediaPlayer (`android.media.MediaPlayer`) is a popular way to play media files, and combining it with a SeekBar can greatly improve the user experience. In this tutorial, we will learn how to synchronize a MediaPlayer progress to a SeekBar position. ## Goals ## At the end of the tutorial, …

2
1K
Member Avatar for dimitrilc

## Introduction ## When working with a Room database, we are mostly restricted to save data using primitives (*and boxed primitives*). Reference types are not supported right out of the box, but can be enabled by creating additional [TypeConverter](https://developer.android.com/reference/androidx/room/TypeConverter). If you are familiar with ORM-light frameworks such as Spring JDBC, …

2
2K
Member Avatar for dimitrilc

## Introduction ## In this tutorial, we will learn how to add swipe-to-remove and drag-to-reorder functionalities into RecyclerView. ## Goals ## At the end of the tutorial, you would have learned: 1. How to add swipe-to-remove and drag-to-reorder functionality to a RecyclerView. ## Tools Required ## 1. Android Studio. The …

2
226

The End.