Skip to content

A hands-on Java Android learning repository where each branch contains a unique implementation. Master Android development through practical examples - one branch at a time, all in pure Java.

License

Notifications You must be signed in to change notification settings

Thogaruchesti-hemanth/android-java-playground

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

β˜• Android Java Playground

Java Android License PRs Welcome

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.

πŸ“– About This Project

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

🌟 Why Branch-Based Learning?

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

πŸš€ Getting Started

Prerequisites

  • Android Studio Hedgehog (2023.1.1) or later
  • JDK 8 or higher
  • Basic knowledge of Java
  • Familiarity with Android development concepts

Installation

  1. Clone the repository

    git clone https://github.com/Thogaruchesti-hemanth/android-java-playground.git
    cd android-java-playground
  2. View available branches

    git branch -a
  3. Switch to a specific UI branch

    git checkout branch-name
  4. Open in Android Studio

    • Open Android Studio
    • Select "Open an Existing Project"
    • Navigate to the cloned directory
    • Wait for Gradle sync to complete
  5. Run the app

    • Connect your device or start an emulator
    • Click the "Run" button or press Shift + F10

🎯 Available UI Branches

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.

πŸ“š How to Use This Repository

For Beginners

  1. Start with branches marked as Beginner
  2. Read the branch's README for learning objectives
  3. Run the app and interact with the UI
  4. Study the code comments and structure
  5. Try modifying layouts, colours, and strings
  6. Experiment and break things (that's learning!)

For Intermediate Learners

  1. Pick a branch that interests you
  2. Understand the overall architecture
  3. Study Activity/Fragment lifecycle
  4. Learn RecyclerView patterns
  5. Try implementing variations
  6. Combine concepts from multiple branches

For Advanced Developers

  1. Use as a reference for complex patterns
  2. Study architecture implementations (MVVM, MVP)
  3. Learn performance optimisation techniques
  4. Contribute your own UI implementations
  5. Help review and improve existing branches

Recommended Order:

  1. Basic Activities and XML layouts
  2. Common Views and Widgets (Button, TextView, EditText)
  3. RecyclerView and Adapters
  4. Fragments and Navigation
  5. SharedPreferences and SQLite
  6. Networking with Retrofit
  7. Architecture patterns (MVVM, MVP)
  8. Advanced topics (Services, Broadcast Receivers)

🀝 Contributing

We welcome contributions! Here's how you can help:

Adding a New Branch

  1. Fork the repository
  2. Create a new branch from main
    git checkout main
    git pull origin main
    git checkout -b ui/your-ui-name
  3. 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
  4. Submit a Pull Request with:
    • Clear description of the UI
    • Learning objectives
    • Difficulty level
    • Screenshots

Contribution Guidelines

  • βœ… 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)

πŸ“Έ Screenshots

Each branch contains its own screenshots showing the implemented UI

Login Activity RecyclerView Fragment Navigation
Login RecyclerView Fragments

πŸ› οΈ Tech Stack

  • 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

πŸ“– Resources

Official Documentation

Community Resources

Key Topics Covered

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

πŸ’¬ Community & Support

πŸ“œ License

This project is licensed under the MIT License - see the LICENSE file for details.

⭐ Show Your Support

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

πŸ™ Acknowledgments

  • 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

πŸ”— Related Projects

πŸ“Š Project Statistics

GitHub stars GitHub forks GitHub watchers

🎯 Roadmap

  • 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

Happy Android Development! πŸš€

Made with ❀️ by Thogaruchesti Hemanth

⬆ Back to Top