blog

Le novità in Android 7.1 per gli sviluppatori

La nuova versione Android 7.1 ha portato alcune interessanti aggiunte all’ SDK che permettono agli sviluppatori di creare applicazioni sempre migliori. Di seguito alcuni dei cambiamenti più importanti.

Novità Android SDK 7.1

  • App Shortcuts

    Gli app shortcuts permettono di eseguire funzioni particolari della propria applicazione direttamente nel launcher, senza aprirla.Eseguendo un long press sull’icona verrà visualizzata una lista di azioni (impostate dallo sviluppatore) che l’utente potrà selezionare.
    Ogni singolo shortcut è un Intent che viene gestito all’interno della applicazione.Questi shortcut possono essere statici, ossia pre-impostati dallo sviluppatore tramite dei file resource, oppure possono essere generati runtime.L’uso degli statici è consigliato per azioni comuni ,sempre presenti e universali , mentre quelli dinamici sono consigliati  per azioni disponibili solo a seguito di qualche impostazione/azione che l’utente ha o meno effettuato/impostato.
    Per info più dettagliate visitate la relativa pagina ufficiale.

  • Supporto Immagini e rich content per tastieria standard

    La tastiera Android (soft Keyboard), fino alle versioni precedenti, accettava solo caratteri unicode per l’invio di emoji.
    Questa versione introduce la possibilità , attraverso le “Commit Content API”, di inviare in maniera standard e universale immagini e rich-content alla tastiera.
    Per info più dettagliate visitate la relativa pagina ufficiale

  • Icone Circolari

    Le applicazione ora posso impostare la propria icona launcher come circolari, la quale sarà supportata e visibili dai dispositivi compatibili (andrà comunque definita la relativa icona no circolare sempre, per supportare tutti i dispositivi).
    Per info in merito alle linee guida per le icone circolare visitare la pagina ufficiale.

  • API per Carrier e app che gestiscono chiamate

    Nuove API accessibili che riguardano carrier e app che gestiscono chiamate :

    • Gestione chiamate con multipli endpoint
    • Impostazioni per CDMA voice privacy
    • Supporto per il Source Type nelle Visual Voicemail
  • Nuovo Intent ACTION_MANAGE_STORAGE

    • Questo nuovo Intent può essere lanciato dalle app per lanciare la schermata di pulizia memoria per liberare spazio del dispositivo. Utile nel caso l’applicazione richiede più spazio di quello attualmente disponibile per eseguire le proprie azioni.
  • Nuove Densità di schermo per dispositivi Wear

    Sono state aggiunte 3 nuove densità per i dispositivi Wear :

    • DENSITY_260
    • DENSITY_300
    • DENSITY_340
Per tutti i cambiamenti che apporta questo aggiornamento fate riferimento a questo articolo ufficiale.
Spero questo breve articolo vi sia piaciuto e sia stato utile.
Buon Coding!
Daniele.

Aggiornamento Android Studio 2.3

è stata rilasciata la nuova versione di Android Studio con nuove funzionalità molto utili, insieme a miglioramenti di velocità e stabilità.

Potete aggiornare il vostro Ambiente direttamente da Android Studio (OSX : Android Studio —> Check for updates ,Windows/Linux : Help —> Check For Updates) oppure scaricare la nuova versione dalla pagina ufficiale.

 Android Studio 2.3

Build

Miglioramenti Instant Run e cambiamenti UI

Il pulsante “Run App” ora riavvia sempre l’applicazione per applicare tutti i cambiamenti del codice che richiedono un riavvio.Il nuovo pulsante “Apply changes” applicherà le modifiche senza riavviare l’ applicazione.Inoltre, è stata ottimizzata la velocità di inizializzazione delle Instant run.

Build Cache

Questa nuova funzionalità è molto interessante! Disabilitata per default, permette ad Android Studio di tenere in memoria le build precedenti, rendendo le future compilazioni più veloci.Stanchi di minuti e minuti di compilazione? Io si, proverò sicuramente questa ottimizzazione!.

 Design

Supporto nel Constrain Layout per concatenazione e ratio

Con questa versione possiamo considerare il Constrain Layout stabile.è possibile concatenare più view insieme bidirezionalmente per formare un group con un unica dimensione.Più difficile spiegarlo che applicarlo!Molto comodo quando abbiamo bisogno di piazzare due o più view insieme ma vogliamo fargli occupare tutto lo spazio vuoto.
Constrain Layout ora supporta il ridimensionamento mantenendo la ratio dell’elemento ridimensionato!

Layout Editor Palette

è stato aggiornato l’editor delle palette nella schermata di modifica layout.è possibile ora cercare, ordinare e filtrare tutti i widget per il proprio layout, ma non solo!Verrà visualizzata anche una piccola anteprima del widget selezionato.Una aggiunta di certo non fondamentale, ma molto carina!

Attributi Layout Preferiti

Questa nuova funzionalità potrebbe spingermi ad usare molto di più l’editor visuale dei layout invece che dell’editing xml.Per ogni widget è possibile salvare degli attributi come favoriti e compariranno in una lista più “minimale” della colonna Properties.Fino ad ora ogni volta nell’editor visuale dovevi scorrerti tutte le proprietà del widget, ciò faceva perdere più tempo dell’aggiunta della stessa proprietà via xml.

Supporto Format WebP

Il formato WebP è un formato di compressione sviluppato da Google con l’obiettivo di ottimizzare il caricamento di file a discapito della qualità.Android studio ora permette di generare dagli asset .png del progetto il relativo WebP, permettendo così al vostro apk di essere più leggero.Viene fornito inoltre una finestra che vi darà una anteprima del WebP generato in cui è possibile vedere direttamente le differenze rispetto al png originale.Molto comodo per capire se non ci sono conseguenze strane nella conversione.Sono curioso di vedere i cambiamenti di dimensione dei miei apk!

Aggiornamento Wizard delle Material Icon

Lo wizard delle Material Icon è stato aggiornato, ora è possibile ricercare e filtrare le icone in maniera più veloce.Inoltre sono state aggiunte le varie categorie delle iconset.
  • Develop
    • Lint Baseline
I vari warning lint possono ora essere targati come “basilari” per il progetto selezionato.In questo modo, verrano visualizzati come warning solamente quelli nuovi.Questo può essere molto utile se nel progetto vi sono dei warning per compatibilità legacy, ma il vostro desiderio è di focalizzarsi solamente su nuovi warning.
  • Assistente AppLinks
Questo nuovo assistente è molto utile:PErmette di creare nuovi intent filters per i propri URLs,impostare l’associazione al proprio sito attraverso un relativo file e testare il supporto di questi URLs.
è possibile accedere a questo assistente tramite Tools —> AppLink Assistant.
  • Aggiornamento Templates
Tutti i temprate Android che usavano RelativeLayout ora sono stati sostituiti con ConstraintLayout.
  • Aggiornamento Piattaforma IntelliJ
Sono stati inclusi gli aggiornamenti di IntelliJ 2016.2 . Qui potete trovare le relative funzionalità/miglioramenti della piattaforma.

 Test

Copia/Incolla Emulatore Android – Sistema Operativo

è ora possibile fare copia/incolla dall’emulatore android al sistema operativo del pc e viceversa, utility che, a mio parere, ritengo comodissima, facendo risparmiare in alcuni casi molto tempo.Questa funzionalità è disponibile per le immagini degli emulatori x86 Google API con livello API 19 (Android 4.4 Kitkat) e superiore .

Android Emulator command Line Tools

Da android SDK tools 25.3 è stato spostato “emulator” dall’SDK Tools in una cartella emulator separata.è stato deprecato il comando “android avd” per far stazione al nuovo comando “avdmanager
Per Informazioni aggiuntive e più dettagliate,fate riferimento qui .
Alla prossima!

Guida DBFlow : prima parte

Un elemento che ritengo essenziale per lo sviluppo delle mie applicazioni è una corretta organizzazione e gestione del Database. Estremamente importante è una gestione efficace, veloce e più automatica possibile.Creazione dei Data Transfer Object (dto),relativi controller sono dei compiti molto meccanici e ripetitivi, proprio per questo vi può essere una probabilità di errore nel crearli ed, essendo delle creazioni le quali la maggior parte delle volte sono ripetitive , è sempre meglio automatizzare tutto l’automatizzatile , evitando così molti errori “umani”.
Molte librerie di Object-relational-mapping (DTO) ci vengono in nostro soccorso. Queste librerie si occupano, oltre a gestire le varie connessioni al nostro database localesi assumono al responsabilità di automatizzare la creazione del database, tabelle e dto.
Un altra funzionalità che ritengo importantissima è il query builder, che permette di creare query per interrogare il DB ad “oggetti”,senza scrivere (ma comunque possibile come alternativa) nessuna query nativa.
Oggi analizzeremo una libreria che uso nella maggior parte dei miei progetti Android, la quale mi permette di perdere il meno tempo possibile durante la creazione della struttura/interfacciamento con il database, riuscendo così a concentrarmi su altri aspetti dello sviluppo .
Nel mondo Android esistono varie librerie ORM,in questo articolo vi parlerò di una in particolare che uso in tutti i miei progetti : DBFlow.
In questa parte descriverò come configurare il proprio progetto e il proprio database con DBFLow.

Configurazione Progetto

Per prima cosa è necessario aggiungere le dipendenze delle librerie di DBFLow.
Aggiungere al file build.gradle del progetto il relativo repository :
 
allprojects { 
    repositories { 
        maven { url "https://www.jitpack.io" } 
    } 
} 
Successivamente aggiungere la dipendenza al build.gradle dell’applicazione:
apply plugin: 'com.android.application'

def dbflow_version = "3.1.1"

dependencies {
    ...

    //DBFLow Dependenies
    compile "com.github.Raizlabs.DBFlow:dbflow-core:$dbflow_version}"
    compile "com.github.Raizlabs.DBFlow:dbflow:$dbflow_version}"
}

Per praticità, aggiungo ad inizio pagina la variabile che indica la versione di DBFLOW così, in caso di aggiornamento, non rischio di sbagliare non aggiornando tutti le relative dipendenze.

Dopo una sincronizzazione del progetto, siete pronti a poter usare la libreria!

Creazione e inizializzazione Database

Passiamo ora alla creazione del database, per la creazione del database, create una classe ,nel mio caso nominata “MainDatabase” , che si occuperà di configurare il proprio database:
MainDatabase.java
@Database(name = MainDatabase.DATABASE_NAME, version = MainDatabase.VERSION)
public class MainDatabase {

    public static final String DATABASE_NAME = "db_app";
    public static final int VERSION = 1;


    public static class General{
        public static final String COLUMN_NAME_ROW_ID = "rowID";
    }

    public static class Game{
        public static final String TABLE_NAME = "player";
        public static final String COLUMN_NAME_NAME = "name";
        public static final String COLUMN_NAME_RELEASE_DATE = "release_date";

    }
}
Per associare questa classe al database,è necessaria solamente la annotazione @Database,in cui va specificato il nome del database (senza .sqlite) e la versione del database, necessaria per future migrazioni/aggiornamenti del Database (lo vedremo più avanti).
Per comodità personale all’interno di questa classe creo una classe statica per ogni tabella del mio database per “variabilizzare” i nomi delle relative colonne.
Come ultimo passo, è necessario inizializzare la libreria.Il posto migliore per inizializzala è all’interno della propria classe Application . Create la classe che estende Application e inizializzate la libreria all’interno dell OnCreate :
 
Mainapplication.java
public class MainApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        FlowManager.init(new FlowConfig.Builder(this).build());
        if(BuildConfig.DEBUG)
            FlowLog.setMinimumLoggingLevel(FlowLog.Level.V);
    }
}
FlowManager.init() è il metodo che si occupa dell’inizializzazione di DBFLow. setMinimumLoggingLevel è un utility per vedere i vari log della libreria.
Per ultima cosa associamo questa classe come Application dell’applicazione.Per fare ciò modifichiamo il file manifest.xml :
<application android:name=".core.MainApplication” ... >
Perfetto,all’apertura della applicazione controllerà se il database esiste esse non fosse presente ,verrà creato .
Di seguito il link del progetto guida che ho creato.
Nella prossima parte descriverò la creazione delle varie tabelle dai bean java!
Alla Prossima!
Daniele.