Skip to content

Gallery for images using Jetpack Compose

Notifications You must be signed in to change notification settings

riccardoforzan/CGallery

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

140 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CGallery

Progetto di fine corso Programmazione di Sistemi Embedded 2021 DEI@UniPD

Relazione su Jetpack Compose

Galleria per la visualizzazione di foto sviluppata utlizzando JetPack Compose.
Durante lo sviluppo abbiamo utilizzato l'emulatore in versione API 30.

Tecnologie utilizzate:


Funzionalità

  • Supporto alla darkmode (Attraverso i temi)
  • Supporto lingua Italiano e Inglese
  • Implementazione della navigazione tramite Navigation
  • Possibilità di utilizzo delle gesture di swipe e zoom in FullImage
  • Possibilità di modificare le preferenze della galleria:
    • Nome
    • Modalità di ordinamento per data
    • Dimensione delle immagini
  • Possibilità di condividere foto
  • Possibilità di aprire la fotocamera dall'app

Overview delle principali classi

FistTimeActivity.kt

  • Creazione di una UI di primo avvio dell'app
  • Intent per lanciare la gestione dei permessi

PermissionActivity.kt

  • Implementazione della richiesta dei premessi secondo linee guida
  • Creazione UI per la gestione dei premessi
  • Creazione della UI nel caso in cui i permessi vengano negati

MainActivity.kt

Questa classe è l'activity principale della nostra applicazione, nonchè quella che viene lanciata all'avvio. La sua funzione è di disambiguazione, può:

  • Mostrare FirstTimeActivity se è il primo lancio dell'applicazione
  • Mostrare PermissionActivity per la gestione dei permessi
  • Impostare la navigazione e lanciare /screen/ImagesGrid.kt

SPStrings.kt

Questa classe contiene tutte le stringhe che abbiamo utilizzato come chiavi per salvare valori sulle shared preferences

StorageUtils.kt

Lo scopo di questa classe è quello di fornire un livello di astrazione rispetto alla gestione della memoria di Android.

  • Reperire gli URI da MediaStore
  • Reperire i metadati EXIF delle foto
  • Metodo per la cancellazione delle foto

../ui/theme/..

Dentro questo package vengono definiti colori e temi presenti per la nostra applicazione. Viene definito il GalleryTheme che poi abbiamo applicato alle nostre UI. L'utilizzo dei temi ha permesso di avere una coerenza grafica e l'implementazione della Dark Mode.

../screen/

Dentro questo package sono state inserite tutte le UI che vengono usate dalla Navigation.

screen/ImagesGrid.kt

  • Creazione UI (responsive) griglia principale
    • Creazione di TopBar e Bottombar
    • Rendere responsive alle modifiche eseguite in screen/Settings.kt
  • Rendere modificabile la dimensione dei box
    • Aggiunta FloatingActionButton con intent a forocamera
  • Creazione di una UI da mostrare se non ci sono foto
    • Aggiungre intent per aprire la fotocamera se non ci sono foto

screen/ImageDetails.kt

  • Creazione UI (responsive) per immagine con metadati EXIF
    • Visualizzazione in 3 schede dei metadati EXIF
  • Aggiunta del bottone per la condivisione dell'immagine (Intent)
  • Il tocco sull'immagine mostrata deve riportare a FullImage

screen/FullImage.kt

  • Creazione UI (responsive) per immagine a schermo intero
  • Implementazione delle gesture
    • Implementazione della gesture per lo zoom
    • Implementazione delle gesture di swipe per la navigazione tra le immagini
  • Implementazione FloatingActionButton con ulteriori opzioni
    • Implementazione della cancellazione di immagini
    • Implementazione SnackBar per conferma cancellazione
    • Implementazione Toast per cancellazione non consentita

screen/Settings.kt

  • Creazione UI (responsive) per la gestione delle impostazioni
    • Possibilità di cambiare il nome della galleria
    • Possibilità di cambiare la dimensione mediante uno scroller
    • Ordinamento per data

About

Gallery for images using Jetpack Compose

Topics

Resources

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •  

Languages