A hands-on Java Android learning repository where each branch contains a unique implementation. Practice, explore, and master Android development through practical examples - one branch at a time.
This repository is designed to help developers learn Android development with Java through practical, real-world implementations. Each branch focuses on a specific pattern, component, or concept, making it easy to:
- π― Focus on one concept at a time
- π± See working implementations
- π Compare different approaches
- π‘ Learn best practices
- π Build production-ready UIs
Traditional tutorials often mix multiple concepts, making it hard to focus. This repository uses a branch-per-concept approach:
- Isolated Learning: Each branch contains one complete UI example
- No Clutter: Focus on what matters without distractions
- Easy Navigation: Switch branches to explore different UIs
- Version Control: Track your progress and experiments
- Reusable Code: Copy and adapt what you need
- Android Studio Hedgehog (2023.1.1) or later
- JDK 8 or higher
- Basic knowledge of Java
- Familiarity with Android development concepts
-
Clone the repository
git clone https://github.com/Thogaruchesti-hemanth/android-java-playground.git cd android-java-playground -
View available branches
git branch -a
-
Switch to a specific UI branch
git checkout branch-name
-
Open in Android Studio
- Open Android Studio
- Select "Open an Existing Project"
- Navigate to the cloned directory
- Wait for Gradle sync to complete
-
Run the app
- Connect your device or start an emulator
- Click the "Run" button or press
Shift + F10
Each branch is prefixed with ui/ for easy identification. Here's a sample of what you'll find:
| Branch Name | Difficulty | Description |
|---|---|---|
ui/login-activity |
Beginner | Login screen with validation |
ui/recyclerview-basic |
Beginner | Simple RecyclerView implementation |
ui/fragments-navigation |
Beginner | Fragment navigation basics |
ui/viewpager-tabs |
Intermediate | ViewPager with TabLayout |
ui/custom-view |
Intermediate | Creating custom views |
ui/room-database |
Intermediate | Room database with UI |
ui/mvvm-architecture |
Advanced | Complete MVVM implementation |
ui/retrofit-api |
Advanced | API integration with Retrofit |
π See BRANCH_INDEX.md for the complete list with screenshots and learning objectives.
- Start with branches marked as Beginner
- Read the branch's README for learning objectives
- Run the app and interact with the UI
- Study the code comments and structure
- Try modifying layouts, colours, and strings
- Experiment and break things (that's learning!)
- Pick a branch that interests you
- Understand the overall architecture
- Study Activity/Fragment lifecycle
- Learn RecyclerView patterns
- Try implementing variations
- Combine concepts from multiple branches
- Use as a reference for complex patterns
- Study architecture implementations (MVVM, MVP)
- Learn performance optimisation techniques
- Contribute your own UI implementations
- Help review and improve existing branches
Recommended Order:
- Basic Activities and XML layouts
- Common Views and Widgets (Button, TextView, EditText)
- RecyclerView and Adapters
- Fragments and Navigation
- SharedPreferences and SQLite
- Networking with Retrofit
- Architecture patterns (MVVM, MVP)
- Advanced topics (Services, Broadcast Receivers)
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a new branch from
maingit checkout main git pull origin main git checkout -b ui/your-ui-name
- Implement your UI with:
- Clean, readable Java code
- XML layouts following Material Design
- Comments explaining key concepts
- A dedicated README in the branch
- Screenshots or GIFs
- Submit a Pull Request with:
- Clear description of the UI
- Learning objectives
- Difficulty level
- Screenshots
- β One UI concept per branch
- β Follow Material Design principles
- β Include comprehensive comments
- β Add a README with screenshots
- β Test on multiple screen sizes
- β Use meaningful variable names
- β Follow Java coding conventions
- β Proper resource organisation (strings.xml, colors.xml, dimens.xml)
Each branch contains its own screenshots showing the implemented UI
| Login Activity | RecyclerView | Fragment Navigation |
|---|---|---|
![]() |
![]() |
![]() |
- Language: Java
- UI Framework: Android Views & XML Layouts
- Architecture: MVVM, MVP (where applicable)
- Database: Room, SQLite
- Networking: Retrofit, OkHttp
- Image Loading: Glide, Picasso
- Dependency Injection: Dagger (where applicable)
- Design System: Material Design Components
- Build System: Gradle
Beginner Level:
- Activities and Intents
- XML Layouts (LinearLayout, RelativeLayout, ConstraintLayout)
- Basic Views (TextView, Button, EditText, ImageView)
- Event Handling (onClick, onTouch)
- Toast and Snackbar messages
- ListView and RecyclerView basics
Intermediate Level:
- Fragments and Fragment Manager
- ViewPager and TabLayout
- Custom Views and Custom Attributes
- Animation (Property Animator, View Animator)
- SharedPreferences
- SQLite and Room Database
- Material Design Components
- RecyclerView advanced patterns
Advanced Level:
- MVVM and MVP Architecture
- LiveData and ViewModel
- Retrofit and API integration
- Dependency Injection with Dagger
- Services and Broadcast Receivers
- Background Tasks (AsyncTask, WorkManager)
- Performance Optimisation
- Memory Management
- Issues: Found a bug? Open an issue
- Discussions: Questions? Start a discussion
- Instagram: Follow @indian_mobile_developer for updates
This project is licensed under the MIT License - see the LICENSE file for details.
If this repository helped you learn Android development with Java, please:
- β Star this repository
- π¦ Share it on social media
- π€ Contribute your own UI implementations
- π Write about your learning experience
- π¬ Recommend it to fellow developers
- Thanks to all contributors who help make this resource better
- Inspired by the amazing Android developer community
- Built with β€οΈ for learners worldwide
- Special thanks to the Java Android developers keeping the ecosystem strong
- Compose UI Playground - Learn Jetpack Compose with the same branch-based approach
- More coming soon...
- 20+ UI implementations covering all skill levels
- Video tutorials for each branch
- Sample apps combining multiple concepts
- Kotlin migration guides
- Testing examples (JUnit, Espresso)
- CI/CD integration examples


