Skip to main content
PCSalt
YouTube GitHub

# android

35 posts

Automating Android Repo Maintenance with Reusable GitHub Actions

How I modernized 8 Android repos in one session — reusable CI workflows, batch build system updates, and a pattern for maintaining multiple projects at scale.

SharedPreferences in Android — The Complete Guide

Everything you need to know about SharedPreferences in Android — when to use it, how to save, read, remove, and list all stored values. All examples in Kotlin.

AlertDialog in Android — The Complete Guide

Everything you need to know about AlertDialog in Android — basic usage, selection dialogs, custom layouts, and button customization. All in Kotlin.

Migrating from XML Views to Compose — Gradual Adoption Strategy

Migrate from XML Views to Jetpack Compose incrementally — ComposeView in Fragments, AndroidView for legacy widgets, navigation interop, and a practical migration roadmap.

Secure CI/CD — Signing APKs, Protecting Secrets in GitHub Actions

Secure your Android CI/CD pipeline — APK signing in GitHub Actions, keystore management, secret protection, artifact verification, and supply chain security.

Compose + Retrofit + Coroutines — Full API Integration

Build a complete API integration in Jetpack Compose — Retrofit setup, coroutine-based calls, ViewModel state management, error handling, loading states, and pull-to-refresh.

Custom Layouts & Modifiers in Compose

Build custom layouts and modifiers in Jetpack Compose — Layout composable, custom modifiers, intrinsic measurements, and when you need to go beyond Column and Row.

Side Effects in Compose — LaunchedEffect, DisposableEffect & More

Master side effects in Jetpack Compose — LaunchedEffect, DisposableEffect, SideEffect, rememberCoroutineScope, and when to use each.

Forms in Compose — TextField, Validation & Keyboard Actions

Build production-ready forms in Jetpack Compose — TextField styling, input validation, error states, keyboard actions, and form submission patterns.

Securing Android Apps — Certificate Pinning, ProGuard & Network Security Config

Harden your Android app — network security configuration, certificate pinning, ProGuard/R8 obfuscation, encrypted storage, and preventing reverse engineering.

Theming in Compose — Material3, Dynamic Color & Dark Mode

Set up a complete theme system in Jetpack Compose — Material3 color schemes, typography, dynamic color, dark mode, and custom theme extensions.

Lists in Compose — LazyColumn, LazyGrid & Performance Tips

Build efficient lists in Jetpack Compose — LazyColumn, LazyRow, LazyGrid, item keys, content types, and performance optimization for smooth scrolling.

MVVM vs MVI in Android — Which One and When

A practical comparison of MVVM and MVI architecture patterns in Android — how each works, when to use which, and how to avoid common pitfalls in both.

Navigation in Compose — Type-Safe Routes with Navigation 2.8+

Build type-safe navigation in Jetpack Compose using Kotlin Serialization and Navigation 2.8+ — no more string-based routes, argument parsing, or runtime crashes.

State Management in Compose — remember, mutableStateOf & ViewModel

Master state management in Jetpack Compose — remember, mutableStateOf, rememberSaveable, state hoisting, and connecting to ViewModel for production apps.

Jetpack Compose — Your First Screen (Text, Button, Column, Row)

Build your first Jetpack Compose screen from scratch — Text, Button, Column, Row, modifiers, and previews. Everything you need to start building UI in Compose.

Clean Architecture for Android — Without Over-Engineering

A practical guide to Clean Architecture in Android — when to use it, how to structure layers, and how to avoid the over-abstraction trap that kills productivity.

Kotlin Multiplatform — Share Code Between Android & Backend

A practical guide to Kotlin Multiplatform (KMP) — share business logic, models, and validation between your Android app and Spring Boot backend without duplicating code.

Kotlin Flows — Cold Flows, Hot Flows & StateFlow Explained

Understand Kotlin Flow from the ground up — cold vs hot flows, Flow builders, operators, StateFlow, SharedFlow, and when to use each in Android and backend projects.

5 Kotlin Extension Functions You'll Use in Every Android Project

Practical Kotlin extension functions for Android — view visibility, toasts, keyboard handling, dp conversion, and intent helpers. Copy, paste, use.

Kotlin Coroutines — Part 3: Real-World Patterns

Flows, StateFlow, coroutines in Android and Spring Boot, Retrofit, Room, and testing — practical patterns you'll use every day.

CI/CD for Android with GitHub Actions

Set up automated builds, tests, signing, and Play Store deployment for your Android project using GitHub Actions.

XML Parsing in Kotlin — XmlPullParser and Retrofit

Parse XML in Kotlin using Android's built-in XmlPullParser and Retrofit with SimpleXML converter. Manual vs automatic — when to use what.

Display Item Selected from AutoCompleteTextView in Chip

In this blog we are going to display a list of planets in an AutoCompleteTextView. The list of planets will...

Add Border to Just One Side of View

At some point there is a need to display a layout with border(s). And sometimes the border is required in...

BottomSheetDialogFragment — Disable Cancel on Touch Outside and Drag

Disable Cancel on Touch Outside & on Back press In order to create a BottomSheetDialogFragment which should not dismiss on...

Add Badge Count to Navigation Drawer Hamburger Icon

NavigationDrawer provides easy access to menu functions. Sometimes the menu items have some actionable content available. To notify user that...

Migrate to Android Room with Date Column

Migrating our apps to Android Room from conventional SQLite Database was flawless except when we encountered issue with Date column...

Generate App Name with Version Code and Flavour Name

After a build is shared to a team or group of people, sometimes a question arises that what was the...

Product Flavors in Android

Environment plays a vital role in the application development. As per the requirements, we have to create few environments, viz....

Set Margins in DP Programmatically

Sometimes at runtime, it is required to set margin to a view. But, the problem is getting different size for...

EditText with Single Line, Line Wrapping and Done Action in Android

Regular formula for making an EditText- Single Line : no new line <Enter> allowed,- Line Wrapping : Single line wrapped...

Copy to Clipboard Programmatically

Copy text to clipboard and paste from clipboard programmatically in Android using ClipboardManager and ClipData.

Create List Using ListView

Update: Instead of using ListView now you should start using RecyclerView. If you are unfamiliar with RecyclerView then you can...

Add EditText Programmatically

Sometimes it is the requirement of the program to add EditText programmatically. The following code can be used to add...