1.8 KiB
1.8 KiB
CLAUDE.md - Countdown Timer
Build & Test Commands
- Build Debug APK:
./gradlew assembleDebug - Build Release APK:
./gradlew assembleRelease - Clean Project:
./gradlew clean - Run Unit Tests:
./gradlew test(if applicable)
Code Style Guidelines
- Language: Kotlin 1.9.0
- UI Framework: Traditional Android View system (XML layouts), not Jetpack Compose.
- Naming Conventions:
- Classes:
PascalCase(e.g.,CountdownDialog) - Functions/Variables:
camelCase(e.g.,startTimer()) - Layout Files:
snake_case(e.g.,activity_main.xml) - Resource IDs:
camelCase(e.g.,btnStart,cvCountdown)
- Classes:
- Android Patterns: Use
findViewByIdfor view binding in this project to maintain consistency with existing simple architecture.
Architecture
- Pattern: Simple Activity-Dialog architecture.
- State: The countdown state is managed locally within
CountdownDialogusingandroid.os.CountDownTimer. - Dependency Management: Gradle with Groovy DSL.
- Key Constraints:
- The
CountdownDialogis explicitly set tosetCancelable(false)andsetCanceledOnTouchOutside(false)to ensure the timer completes.
- The
Critical Files Reference
app/src/main/java/com/example/countdowntimer/MainActivity.kt: Entry point and trigger for the timer.app/src/main/java/com/example/countdowntimer/CountdownDialog.kt: Implementation of the countdown logic andToneGeneratortrigger.app/src/main/java/com/example/countdowntimer/CountdownCanvasView.kt: Custom view for the circular progress ring and countdown text.app/src/main/res/layout/activity_main.xml: Main screen layout.app/src/main/res/layout/dialog_countdown.xml: Timer dialog layout.app/build.gradle: Build configuration, SDK versions (minSdk 24, targetSdk 34), and dependencies.