# g00fy2/spinnerdatepicker architecture

> Architecture diagram of the GitHub repository g00fy2/spinnerdatepicker, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/g00fy2/spinnerdatepicker
- Repository: https://github.com/g00fy2/spinnerdatepicker

## Overview

This is an Android demo for comparing the platform spinner-style DatePickerDialog with MaterialDatePicker, with a theme toggle. The user selects a picker, chooses a date, and sees a formatted date in a toast. MainActivity owns both picker flows, their date constraints and result handling, and the theme switch. The README documents the comparison and Material-themed app; source evidence is limited to MainActivity, so resource-level behavior is shown only where that file supports it.

Main entry points: [`app/src/main/kotlin/com/g00fy2/spinnerdatepicker/MainActivity.kt`](https://github.com/g00fy2/spinnerdatepicker/blob/master/app/src/main/kotlin/com/g00fy2/spinnerdatepicker/MainActivity.kt) (MainActivity), [`app/src/main/res/layout/activity_main.xml`](https://github.com/g00fy2/spinnerdatepicker/blob/master/app/src/main/res/layout/activity_main.xml) (Main layout)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["App interaction"]
  node_activity["MainActivity<br/>[MainActivity.kt]"]
  node_layout["Main layout<br/>[activity_main.xml]"]
end

subgraph group_pickers["Picker alternatives"]
  node_spinner["Spinner dialog"]
  node_material["Material picker"]
end

subgraph group_presentation["Display and theme"]
  node_toast["Date toast<br/>[MainActivity.kt]"]
  node_theme["Theme resources<br/>[themes.xml]"]
  node_appcompat["AppCompat delegate"]
end

node_user(("User"))

node_user -->|"uses"| node_activity
node_activity -->|"inflates"| node_layout
node_activity -->|"opens"| node_spinner
node_activity -->|"opens"| node_material
node_activity -->|"shows result"| node_toast
node_activity -->|"switches mode"| node_appcompat

click node_activity "https://github.com/g00fy2/spinnerdatepicker/blob/master/app/src/main/kotlin/com/g00fy2/spinnerdatepicker/MainActivity.kt"
click node_layout "https://github.com/g00fy2/spinnerdatepicker/blob/master/app/src/main/res/layout/activity_main.xml"
click node_toast "https://github.com/g00fy2/spinnerdatepicker/blob/master/app/src/main/kotlin/com/g00fy2/spinnerdatepicker/MainActivity.kt"
click node_theme "https://github.com/g00fy2/spinnerdatepicker/blob/master/app/src/main/res/values/themes.xml"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_activity,node_layout,node_user toneBlue
class node_spinner,node_material toneAmber
class node_toast,node_theme,node_appcompat toneMint
```

## Components

### App interaction

- [MainActivity](https://github.com/g00fy2/spinnerdatepicker/blob/master/app/src/main/kotlin/com/g00fy2/spinnerdatepicker/MainActivity.kt): `app/src/main/kotlin/com/g00fy2/spinnerdatepicker/MainActivity.kt`
- [Main layout](https://github.com/g00fy2/spinnerdatepicker/blob/master/app/src/main/res/layout/activity_main.xml): `app/src/main/res/layout/activity_main.xml`

### Picker alternatives

- **Spinner dialog**
- **Material picker**

### Display and theme

- [Date toast](https://github.com/g00fy2/spinnerdatepicker/blob/master/app/src/main/kotlin/com/g00fy2/spinnerdatepicker/MainActivity.kt): `app/src/main/kotlin/com/g00fy2/spinnerdatepicker/MainActivity.kt`
- [Theme resources](https://github.com/g00fy2/spinnerdatepicker/blob/master/app/src/main/res/values/themes.xml): `app/src/main/res/values/themes.xml`
- **AppCompat delegate**

### Other components

- **User**

## Connections

- User → MainActivity: uses (evidence: `app/src/main/kotlin/com/g00fy2/spinnerdatepicker/MainActivity.kt`)
- MainActivity → Main layout: inflates (evidence: `app/src/main/kotlin/com/g00fy2/spinnerdatepicker/MainActivity.kt`)
- MainActivity → Spinner dialog: opens (evidence: `app/src/main/kotlin/com/g00fy2/spinnerdatepicker/MainActivity.kt`)
- MainActivity → Material picker: opens (evidence: `app/src/main/kotlin/com/g00fy2/spinnerdatepicker/MainActivity.kt`)
- MainActivity → Date toast: shows result (evidence: `app/src/main/kotlin/com/g00fy2/spinnerdatepicker/MainActivity.kt`)
- MainActivity → AppCompat delegate: switches mode (evidence: `app/src/main/kotlin/com/g00fy2/spinnerdatepicker/MainActivity.kt`)
