Skip to content

Application Android native en Java permettant de gérer des notes personnelles (ajout, affichage, détails) avec un adaptateur personnalisé et navigation entre activités.

Notifications You must be signed in to change notification settings

AmalImraniT/MyNotes

Repository files navigation

📱 My Notes - Application Android de Gestion de Notes avec Photos

Android Java Material Design

Application Android native pour gérer vos notes avec photos d'étudiants

FonctionnalitésInstallationCaptures d'écranDocumentation


📖 Description du Projet

My Notes est une application Android moderne développée en Java permettant de gérer une liste complète de notes personnelles avec photos d'étudiants. L'application offre une interface utilisateur élégante et intuitive avec un design Material Design 3, un dashboard interactif, et la possibilité d'ajouter des photos via la caméra.

🎯 Caractéristiques Principales

  • Interface moderne avec Material Design 3
  • 📸 Capture de photos intégrée pour les étudiants
  • 📊 Dashboard interactif avec statistiques en temps réel
  • 🎨 Design responsive et accessible
  • 📱 Navigation Drawer (Sidebar) pour accès rapide
  • 🏷️ Système de priorités avec codes couleur
  • 💾 Gestion complète des notes (création, visualisation, détails)

✨ Fonctionnalités

🏠 Home Page / Dashboard

  • Header de bienvenue personnalisé avec message dynamique
  • Cartes de statistiques :
    • 📊 Nombre total de notes
    • 🔴 Nombre de notes prioritaires (Haute priorité)
  • Liste complète des notes avec design en cartes
  • Message d'accueil quand aucune note n'est présente
  • Compteur en temps réel mis à jour automatiquement

📝 Gestion des Notes

Création de Notes

  • ✅ Formulaire complet avec validation
  • Champ Nom (obligatoire)
  • Champ Description (optionnel, multi-lignes)
  • Champ Date (obligatoire)
  • Sélection de Priorité via Spinner (Basse, Moyenne, Haute)
  • Capture de photo d'étudiant via caméra
  • ✅ Aperçu de la photo avant enregistrement
  • ✅ Validation des champs avec messages d'erreur

Affichage des Notes

  • 🎨 Design en cartes Material Design
  • 🏷️ Badges de priorité colorés :
    • 🟢 Basse : Vert (#4CAF50)
    • 🟡 Moyenne : Orange (#FF9800)
    • 🔴 Haute : Rouge (#F44336)
  • 📅 Affichage de la date avec icône
  • 📝 Description visible (si disponible)
  • 📸 Photo de l'étudiant dans les détails

Détails d'une Note

  • 📄 Affichage complet de toutes les informations
  • 🖼️ Photo de l'étudiant en grand format
  • 🏷️ Badge de priorité avec couleur appropriée
  • 📅 Date formatée avec icône
  • 📝 Description lisible avec espacement optimal

📸 Fonctionnalité Caméra

  • 📷 Capture de photos directement depuis l'application
  • 🔐 Gestion des permissions (demande automatique)
  • 💾 Stockage sécurisé dans le dossier Pictures de l'application
  • 🖼️ Aperçu instantané après capture
  • 📱 Compatibilité Android 13+ avec nouvelles permissions

🗂️ Navigation Drawer (Sidebar)

  • 📋 Liste complète de toutes les notes
  • 🔢 Compteur dans l'en-tête du drawer
  • Accès rapide à toutes les notes
  • 🎯 Navigation directe vers les détails
  • 🎨 Design cohérent avec le reste de l'application

🏗️ Architecture

Structure du Projet

MyApplication/
├── app/
│   ├── src/main/
│   │   ├── java/com/example/mynotes/
│   │   │   ├── Note.java                    # Modèle de données
│   │   │   ├── NoteAdapter.java             # Adaptateur pour la liste principale
│   │   │   ├── NoteDrawerAdapter.java       # Adaptateur pour le sidebar
│   │   │   ├── NoteListActivity.java        # Home Page / Dashboard
│   │   │   ├── AddNoteActivity.java         # Formulaire d'ajout avec caméra
│   │   │   └── DetailsNoteActivity.java     # Affichage des détails
│   │   │
│   │   ├── res/
│   │   │   ├── layout/
│   │   │   │   ├── activity_note_list.xml    # Layout du dashboard
│   │   │   │   ├── activity_add_note.xml     # Layout du formulaire
│   │   │   │   ├── activity_details_note.xml # Layout des détails
│   │   │   │   ├── item_note.xml            # Item de liste principal
│   │   │   │   ├── item_note_drawer.xml     # Item de liste sidebar
│   │   │   │   └── nav_header.xml           # En-tête du drawer
│   │   │   │
│   │   │   ├── values/
│   │   │   │   ├── colors.xml               # Palette de couleurs
│   │   │   │   ├── themes.xml               # Thèmes Material Design
│   │   │   │   └── strings.xml              # Chaînes de caractères
│   │   │   │
│   │   │   ├── drawable/                    # Formes et backgrounds
│   │   │   └── xml/
│   │   │       └── file_paths.xml           # Configuration FileProvider
│   │   │
│   │   └── AndroidManifest.xml
│   │
│   └── build.gradle
│
├── README.md
├── ARCHITECTURE.md
├── DOCUMENTATION.md
└── CHANGELOG.md

Composants Principaux

1. Note.java - Modèle de Données

Classe POJO représentant une note avec :

  • nom : String
  • description : String
  • date : String
  • priorite : String (Basse, Moyenne, Haute)
  • photoPath : String (chemin vers la photo)

2. NoteAdapter.java - Adaptateur Principal

  • Pattern ViewHolder pour optimiser les performances
  • Application dynamique des couleurs selon la priorité
  • Affichage de la description si disponible
  • Badges de priorité colorés

3. NoteDrawerAdapter.java - Adaptateur Sidebar

  • Version compacte pour le Navigation Drawer
  • Design optimisé pour l'affichage latéral
  • Synchronisé avec la liste principale

4. NoteListActivity.java - Home Page / Dashboard

  • Affichage des statistiques en temps réel
  • Gestion du Navigation Drawer
  • Synchronisation des adaptateurs
  • Mise à jour automatique de l'UI

5. AddNoteActivity.java - Formulaire d'Ajout

  • Intégration de la caméra avec ActivityResultLauncher
  • Gestion des permissions
  • Validation des champs
  • Aperçu de la photo

6. DetailsNoteActivity.java - Affichage des Détails

  • Affichage complet des informations
  • Affichage de la photo si disponible
  • Design élégant et lisible

🛠️ Technologies Utilisées

  • Langage : Java 11
  • Plateforme : Android (API 24+)
  • UI Framework : Material Design 3
  • Composants Android :
    • AppCompatActivity
    • DrawerLayout & NavigationView
    • CoordinatorLayout & AppBarLayout
    • MaterialCardView
    • FloatingActionButton
    • TextInputLayout & TextInputEditText
    • ActivityResultLauncher (API moderne)
    • FileProvider pour le partage de fichiers
    • Camera API

Dépendances

implementation 'androidx.appcompat:appcompat:1.7.1'
implementation 'com.google.android.material:material:1.13.0'
implementation 'androidx.activity:activity:1.12.1'
implementation 'androidx.constraintlayout:constraintlayout:2.2.1'

📋 Prérequis

  • Android Studio (version récente recommandée)
  • JDK 11 ou supérieur
  • SDK Android (API 24 minimum, cible API 36)
  • Émulateur Android ou appareil physique avec :
    • USB Debugging activé
    • Caméra fonctionnelle (pour la fonctionnalité photo)

🚀 Installation

1. Cloner le Projet

git clone https://github.com/votre-username/MyApplication.git
cd MyApplication

2. Ouvrir dans Android Studio

  1. Ouvrir Android Studio
  2. File → Open → Sélectionner le dossier du projet
  3. Attendre la synchronisation Gradle

3. Configurer l'Émulateur ou l'Appareil

Option A : Émulateur

  • Tools → Device Manager → Create Device
  • Sélectionner un appareil avec API 24+

Option B : Appareil Physique

  • Activer le mode développeur
  • Activer USB Debugging
  • Connecter via USB

4. Compiler et Exécuter

  • Cliquer sur le bouton Run (▶️) ou Shift + F10
  • Sélectionner l'émulateur ou l'appareil
  • L'application se lancera automatiquement

📸 Captures d'Écran

Home Page / Dashboard

  • Header de bienvenue avec statistiques
  • Cartes de notes avec badges de priorité
  • Design moderne et épuré

Formulaire d'Ajout

  • Champs de saisie Material Design
  • Bouton de capture photo
  • Validation en temps réel

Détails d'une Note

  • Affichage complet des informations
  • Photo de l'étudiant
  • Badge de priorité coloré

Navigation Drawer

  • Liste complète des notes
  • Accès rapide et navigation fluide

📖 Utilisation

Ajouter une Note

  1. Cliquer sur le bouton + (FloatingActionButton)
  2. Remplir le formulaire :
    • Nom : Obligatoire
    • Description : Optionnel
    • Date : Obligatoire (format : JJ/MM/AAAA)
    • Priorité : Sélectionner dans le spinner
  3. Prendre une photo (optionnel) :
    • Cliquer sur "Prendre une photo"
    • Autoriser l'accès à la caméra
    • Capturer la photo
    • L'aperçu s'affiche automatiquement
  4. Cliquer sur "Enregistrer la note"
  5. Retour automatique au dashboard

Consulter les Détails

  1. Cliquer sur une note dans la liste
  2. Visualiser toutes les informations
  3. Voir la photo si disponible

Utiliser le Sidebar

  1. Cliquer sur l'icône (hamburger) dans la toolbar
  2. Parcourir toutes les notes
  3. Cliquer sur une note pour voir les détails
  4. Le drawer se ferme automatiquement

🔐 Permissions

L'application demande les permissions suivantes :

  • CAMERA : Pour capturer des photos d'étudiants
  • READ_MEDIA_IMAGES : Pour accéder aux images (Android 13+)
  • WRITE_EXTERNAL_STORAGE : Pour sauvegarder les photos (Android ≤12)

Les permissions sont demandées automatiquement lors de la première utilisation de la caméra.


🎨 Design

Palette de Couleurs

  • Primary : #6200EE (Violet Material)
  • Accent : #03DAC5 (Cyan)
  • Background : #F5F5F5 (Gris clair)
  • Surface : #FFFFFF (Blanc)

Priorités

  • Basse : #4CAF50 (Vert)
  • Moyenne : #FF9800 (Orange)
  • Haute : #F44336 (Rouge)

Typographie

  • Titres : 24-32sp, Bold
  • Corps : 16-18sp, Regular
  • Secondaire : 14sp, Regular
  • Lisibilité optimale avec contraste élevé

📚 Documentation

Le projet inclut une documentation complète :


🧪 Tests

Tests Unitaires

Les tests peuvent être ajoutés dans app/src/test/java/ pour tester :

  • La classe Note (création, getters, setters)
  • La logique de validation
  • Les calculs de statistiques

Tests d'Intégration

Utiliser Espresso pour tester :

  • La navigation entre activités
  • La saisie dans les formulaires
  • La capture de photos
  • L'affichage des données

🔍 Points Techniques Remarquables

Gestion de la Caméra

  • Utilisation de ActivityResultLauncher (API moderne)
  • FileProvider pour le partage sécurisé de fichiers
  • Gestion des permissions avec ActivityCompat
  • Stockage dans getExternalFilesDir()

Pattern ViewHolder

Optimisation des performances dans les adaptateurs :

private static class ViewHolder {
    TextView textViewNom;
    TextView textViewDate;
    TextView textViewDescription;
    TextView textViewPrioriteBadge;
}

Material Design 3

  • Utilisation des composants Material Design
  • Thèmes personnalisés
  • Animations et transitions fluides
  • Accessibilité intégrée

Navigation Drawer

  • DrawerLayout pour le menu latéral
  • ActionBarDrawerToggle pour l'animation
  • Synchronisation avec la liste principale

🐛 Dépannage

Problèmes Courants

L'application ne compile pas

  • Vérifier que tous les fichiers sont présents
  • Synchroniser Gradle (File → Sync Project with Gradle Files)
  • Nettoyer le projet (Build → Clean Project)

La caméra ne fonctionne pas

  • Vérifier les permissions dans les paramètres de l'appareil
  • S'assurer que l'appareil/émulateur a une caméra
  • Vérifier les logs dans Logcat

Les photos ne s'affichent pas

  • Vérifier que le chemin de la photo est correct
  • Vérifier les permissions de stockage
  • Vérifier les logs pour les erreurs de chargement

Erreur "Cannot resolve symbol R"

  • File → Invalidate Caches / Restart
  • Rebuild le projet (Build → Rebuild Project)

🔄 Améliorations Futures

  • Persistance des données (SQLite, Room)
  • Modification et suppression de notes
  • Filtrage par priorité
  • Recherche de notes
  • Tri des notes (par date, priorité, nom)
  • Export/Import de notes
  • Partage de notes
  • Thème sombre/clair
  • Notifications pour notes importantes
  • Synchronisation cloud
  • Galerie de photos
  • Édition de photos (recadrage, filtres)

📊 Métriques du Projet

  • Lignes de code : ~1500+ lignes Java
  • Classes : 7 classes principales
  • Layouts XML : 7+ layouts
  • Complexité : Moyenne (projet complet et fonctionnel)

📄 Licence

Ce projet est destiné à un usage éducatif et pédagogique.


👨‍💻 Auteur

Développé dans le cadre d'un projet Android avec Material Design.


🙏 Remerciements

  • Material Design pour les composants UI
  • Android Developer Documentation
  • Communauté Android

📖 Références


Version : 4.0.0
Dernière mise à jour : Décembre 2024

⭐ Si ce projet vous a aidé, n'hésitez pas à mettre une étoile !

About

Application Android native en Java permettant de gérer des notes personnelles (ajout, affichage, détails) avec un adaptateur personnalisé et navigation entre activités.

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages