Drawer Navigation using Material 3 in Jetpack Compose | by Saqib | Sep, 2023
Explaining Material3 APIs for Navigation Drawer As mentioned before Material 3 provides explicit Apis for Drawer Navigation, first we will see in brief what those APIs are and later will implement them. The main Composable provided by Material3 is ModelNavigationDrawer mentioned below. Let’s see important…
3-step guide to adding emojis — Jetpack Emoji Picker | by Nav Singh | Sep, 2023
class CustomRecentEmojiProvider(context: Context) : RecentEmojiAsyncProvider { private val sharedPreferences by lazy {context.getSharedPreferences(RECENT_EMOJI_LIST_PREF_NAME, Context.MODE_PRIVATE)} private val emoji2Frequency: MutableMap<String, Int> by lazy {sharedPreferences.getString(CUSTOM_EMOJI_FREQ_PREF_KEY, null)?.split(SPLIT_CHAR)?.associate { entry ->entry.split(VALUE_DELIMITER, limit = 2).let { value -> value[0] to value[1].toInt() }}?.toMutableMap() ?: mutableMapOf()} override fun getRecentEmojiListAsync(): ListenableFuture<List<String>> =Futures.immediateFuture(emoji2Frequency.toList().sortedByDescending { it.second }.map…
Canvas in Jetpack Compose, Github Actions, Function Composition, Kotlin, Compose Button, and more! | by Shahla Aliyeva | Sep, 2023
Just as always, we are reachable via editors@proandroiddev.com. We look forward to reading your feedback, article submissions, and partnership ideas. Follow us on Facebook and Twitter, and see you soon! Cheers, ProAndroidDev Team Sergii Zhuk . Greg Fawson . Andy Dyer . Brian Gardner ….
Creating a Form using Jetpack Compose and Material Design 3 | by Waseef Akhtar | Sep, 2023
5. Next, we’re going to create a text field for the medication name, by creating a new text label as well as a text field where user can enter the medication name. We’re also going to store the medication name as a value when the…
Exploring Canvas in Jetpack Compose — Crafting Graphics, Animations, and Game Experiences | by Nirbhay Pherwani | Sep, 2023
The Canvas composable isn’t limited to graphics; it’s also used in creating interactive and immersive game experiences directly within your app. Let’s look at a simple game concept — a bouncing ball. Bouncing Ball Game @Composablefun BouncingBallGame() {val position = remember { mutableStateOf(Offset(300f, 0f)) }val…
Building a widget using Jetpack Glance
App widgets are miniature application views that can be embedded in the home screen of your device. Jetpack Glance is a library built on top of Jetpack Compose that allows you to build these widgets for Android. In the above image you can see a…
Why Build a Pattern Library in Jetpack Compose? — Elevating User Experiences in Large-Scale Applications | by Nirbhay Pherwani | Aug, 2023
A pattern library acts as a resource for UI design and development. It comprises reusable UI components and custom styles that ensure a cohesive user experience. Pattern libraries offer several key benefits — Sourced from Dribbble 1. Consistency Across User Experience Regardless of the app’s…
More Accessible Graphs with Jetpack Compose Part 3: Differentiating without Color | by Eevis Panula | Aug, 2023
This blog post is the third one in my series on more accessible graphs with Jetpack Compose. You can find the previous two from the following links: The third topic we will cover is differentiating data by other means than color. Color is a convenient…
Efficient Flow Management, High-Order Functions, Jetpack Compose, Circular Progress Indicator, Kotlin, and more! | by Shahla Aliyeva | Aug, 2023
Just as always, we are reachable via editors@proandroiddev.com. We look forward to reading your feedback, article submissions, and partnership ideas. Follow us on Facebook and Twitter, and see you soon! Cheers, ProAndroidDev Team Sergii Zhuk . Greg Fawson . Andy Dyer . Brian Gardner ….
Phone Number Hint API in Jetpack Compose | by Sagar Malhotra | Jul, 2023
The Phone Number Hint API is a part of the Google Play services library and uses a PendingIntent to initiate the flow. This means that the user is presented with a UI that lists all of their SIM-based phone numbers. The user can then select…