Skip to main content

Programming Tutorial



Introduction

Layout


Menus & Navigation


Text, Input & Selection

  • SearchView + RecyclerView
  • RecyclerView EditText Search
  • Translations Editor
  • AutoSizing TextView
  • Custom Fonts as Resources
  • Downloadable Fonts
  • FadingTextView
  • TextSwitcher
  • SpannableString Text Color
  • SpannableString Text Style
  • ClickableSpan
  • android:onClick vs setOnClickListener
  • OnClickListener for Multiple Buttons
  • TextInputLayout
  • Validate Email & Password (Regular Expressions)
  • AutoCompleteTextView
  • MultiAutoCompleteTextView
  • Custom AutoCompleteTextView
  • Mask EditText
  • EditText Single Line
  • ImeOptions
  • TextWatcher Enable/Disable Button
  • Radio Buttons & Radio Group
  • Text Spinner
  • Spinner with Custom Objects
  • Custom Spinner
  • IconSwitch
  • SeekBar

Usability & Styling

  • Remove the ActionBar
  • Toolbar
  • Hide Soft Keyboard Programmatically
  • KeyboardVisibilityEvent
  • Easy Splash Screen
  • Circular Determinate ProgressBar
  • Press Back Again to Exit
  • Rate Me Button
  • Android-Rate

Fragments, Dialogs & Sheets


 Data Transfer & Data Persistence

  • Open a New Activity and Pass Variables to It
  • StartActivityForResult
  • Parcelable
  • Restore Variables on Configuration Change
  • Write Text File to Internal Storage
  • SharedPreferences
  • Save ArrayList to SharedPreferences with GSON
  • Execute Code on First Start Only
  • Room + ViewModel + LiveData + RecyclerView (MVVM)
  • SQLite + RecyclerView
  • View SQLite Database from Emulator on PC

Notifications & Messages


Services & Background Tasks 

  • Foreground Service
  • IntentService
  • JobIntentService
  • JobScheduler
  • AlarmManager
  • BroadcastReceiver
  • Starting a Background Thread
  • Looper Thread
  • HandlerThread
  • AsyncTask
  • Handler postDelayed + Runnable

Networking & JSON

  • What is JSON?
  • Retrofit
  • Volley
  • RecyclerView + Volley + Picasso
  • OkHttp Simple GET Request
  • GSON

 Animations & Transitions 

  • Slide Animation Between Activities
  • Intent Animation
  • Swipe View + Animations
  • Slider
  • ViewFlipper
  • AndroidViewAnimations
  • Circular Reveal Animation
  • Drawable Animations
  • Shared Element Transition
  • Animated Gradient Background
  • KenBurnsView

 Images & Colors

  • Batch Import Images for Different Screen Resolutions
  • 9 Patch Image
  • Custom Button with Images
  • Custom Button with ShapeDrawables
  • Picasso
  • Image Slider
  • Picasso Image Slider
  • BlurImageView
  • Palette
  • AmbilWarna (Color Picker Dialog)
  • ColorSeekBar
  • Generate a Random Color

 Media, Web & Phone

  • MediaPlayer
  • SoundPool
  • VideoView
  • WebView
  • Email Intent
  • In App Phone Call
  • Text to Speech

Date & Time


 System 

  • Change the Starting Activity
  • Start App on Boot
  • Keep the Screen On
  • Change the App Icon (Adaptive Icons)
  • Run Time Permission Request
  • EasyPermissions
  • PermissionsDispatcher
  • Update UI Every New Minute
  • Enable Developer Options
  • WiFi State BroadcastReceiver
  • Enable/Disable WiFi

Firebase 

  • Cloud Firestore
  • FirebaseUI – FirestoreRecyclerAdapter
  • Firebase Storage – Upload and Retrieve Images

Games 

  • Quiz App with SQLite
  • Tic Tac Toe
  • Spin the Bottle
  • Dice Roller

IDE & Productivity 

  • Migrate to AndroidX
  • Android Studio Debugger
  • Change Android Studio Theme
  • Install More Android Studio Themes
  • Logcat Change Text Color
  • Live Templates
  • Auto Generate Constructor + Getter/Setter
  • Android Studio Code Shortcuts
  • Android Studio Navigation Shortcuts
  • Android Studio Bookmarks
  • Android Studio Local History
  • Android Studio Clipboard History
  • Change Android Studio Text Size and Activate Zoom
  • Change Package Name
  • Delete Android Studio Emulators & System Images
  • ADB Idea
  • Exynap
  • CodeGlance MiniMap

Misc 

  • Dagger 2
  • App Widget
  • Unfortunately App Has Stopped
  • What is Context?
  • What is @Override?
  • The Activity Lifecycle
  • Adding 2 Numbers
  • Sort Array and ArrayList






Comments

Popular posts from this blog

Why Ethereum Smart Contracts Make It Hard to Get Payments

  The Unique Role of Smart Contracts in Ethereum One of Ethereum’s standout features is its ability to host diverse applications on its blockchain using smart contracts. However, these smart contracts, while powerful, sometimes complicate simple tasks. For instance, determining the amount of ETH deposited into a specific Ethereum address can be surprisingly complex. This is because you cannot understand the actions of a smart contract without executing it. Synchronizing Blockchain Internals and Externals Smart contracts operate exclusively within the blockchain's data, reading and writing information stored on-chain. This limitation does not prevent the creation of valuable applications, such as multi-signature wallets or tokens like ERC-20 and ERC-721, which rely solely on on-chain data. However, most practical applications also require interaction with off-chain systems. Take cryptocurrency exchanges, for example. Exchanges facilitate converting ETH into fiat currency or vice ver...

Room + ViewModel + LiveData + RecyclerView (MVVM)

Part 1 - Introduction Part 2 – Entity Part 3 – DAO & RoomDatabase Part 4 – Repository Part 5 – ViewModel Part 6 – RecyclerView + Adapter Part 7 – Add Note Activity Part 8 – Swipe to Delete Part 9 – OnItemClickListener & Update Functionality Part 10 – ListAdapter                     Part 1 - Introduction In this tutorial we will build a note taking app, using the Android Architecture Component libraries (Room, ViewModel, LiveData and LifeCycle), a RecyclerView and Java. The data will be stored in an SQLite database and supports insert, read, update and delete operations. For this we will follow the official recommendations from the “Guide to App Architecture” (link below). In part 1 we will learn what the Architecture Components are, how they work and why we need them. We will learn about the problems that arise from the Activity and Fragment lifecycle, configuration changes and bloated, tightly coupled cl...

DodgeInsetEdges

The layout_dodgeInsetEdges together with the layout_insetEdge attribute, to move views within a CoordinatorLayout out of the way of other views. This behavior is the default behavior for FloatingActionButtons and Snackbars , but we will also apply it to views like normal buttons and bottom sheets. In Mainactivity.java add the code below stated:- import android.support.design.widget.BottomSheetBehavior; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity {     private BottomSheetBehavior bottomSheetBehavior;     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activ...