Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Android L: tutte le novità

Android L è la nuova versione del sistema operativo mobile di Google, e con essa anche l'SDK e le API sono potenziati ed aggiornati con nuovi widget e funzionalità.
Android L è la nuova versione del sistema operativo mobile di Google, e con essa anche l'SDK e le API sono potenziati ed aggiornati con nuovi widget e funzionalità.
Link copiato negli appunti

In occasione del Google I/O 2014, il principale evento mondiale sulle tecnologie di Mountain View, è stato annunciato Android L, nuova
versione del sistema operativo mobile più diffuso.

Secondo tradizione, le distribuzioni Android prendono il nome di qualcosa di “dolce” seguendo, nel tempo, un rigoroso ordine alfabetico. Il capostipite
degli Android “4” è stato Ice Cream Sandwich, poi sono arrivati Jelly Bean e KitKat. Ora tocca alla lettera L: è nato quindi Android L. L, con tutta
probabilità, come Lollipop.

In attesa che il nuovo sistema invada il mercato dell'elettronica, il suo SDK è stato pubblicato in anteprima, permettendo agli
sviluppatori di apprezzarne le innovazioni.

Questo articolo propone una panoramica delle principali novità introdotte, per lo più concentrate attorno alle maggiori problematiche della programmazione
mobile: usabilità e reattività delle interfacce utente, prestazioni e risparmio energetico. Nella parte finale, infine, daremo uno sguardo al codice, sperimentando in un breve esempio alcuni nuovi componenti.

Le principali novità

Le novità più salienti della nuova versione di Android sono:

  • adozione sempre più estesa dell'ambiente di runtime ART
    Java. Sin dal primo rilascio di Android, questo compito è stato svolto da Dalvik A R t
    fondamentale divenendone di fatto l'ambiente di runtime di default;
  • Material design
    anche un sito Internet apposito per presentarne le novità
    design ispira anche il tema di Android L, come vedremo nell'esempio successivo in questo articolo, e sarà sempre più utilizzato nelle applicazioni per il
    nuovo sistema.

    Secondo le intenzioni dei suoi ideatori, si tratta di un concentrato di principi di “buona progettazione di interfacce”, applicati con quanto di
    meraviglioso la tecnologia informatica permette oggi. Fluidità, animazioni ed effetti sono gli strumenti messi a disposizione, ma lo scopo ultimo è
    risolvere l'annoso problema delle interfacce Android, permettendo il massimo dell' adattabilità delle applicazioni alla moltitudine di dispositivi supportati
    densità del display;
  • Insieme al Material design, sono stati introdotti due nuovi widget RecyclerView
    quanto ridefinisce il concetto di AdapterView CardView
    un'elegante presentazione delle informazioni.

    I due nuovi widget sono accompagnati da altre novità nel campo delle animazioni e degli effetti, con il nuovo fattore elevation
    l'altro, la proiezione delle ombre dei componenti;
  • Importanti novità anche nelle Notification
    importante in quanto sono una forma di comunicazione con l'utente che si manifesta al di fuori delle applicazioni e con tempistiche che permettono di
    evadere dal normale flusso di esecuzione. Le Notification in Android L si arricchiscono di nuovi dettagli, appaiono nella forma heads-up
    per essere più immediate in casi di urgenza particolare e possono figurare in due layout differenti, Base Layout Expanded Layout

Queste sono solo le novità più evidenti, ma le nuove feature aggiunte in Android L riguardano anche altri campi, dal multimedia allo storage,
dall'efficienza energetica alla comunicazione.

Preparare l'ambiente di lavoro

Piuttosto che procedere con ulteriori descrizioni sommarie di aspetti progettuali, iniziamo subito a lavorare in Android L, sperimentando i nuovi widget
per interfacce utente. Prima di procedere con l'esempio, dobbiamo approntare un ambiente di lavoro, mettendo a disposizione dell'IDE un SDK aggiornato e configurando un emulatore per i test.

È bene specificare che l'esempio illustrato è stato preparato con Android Studio, ambiente che appare sempre più consono alle necessità
dello sviluppatore. I concetti discussi ed il codice proposto potranno comunque essere sperimentati parimenti su Eclipse ADT.

La prima cosa da fare è scaricare il SDK. Il tool da utilizzare è il classico SDK Manager, che tutti gli sviluppatori Android avranno
imparato a conoscere. Tramite quest’ultimo tool, richiediamo il download di due tipologie di elementi:

  1. nella sezione Tools
  2. nella sezione Android L (API 20, L preview)

Selezionati gli elementi indicati, clicchiamo su Install packages
due strumenti di lavoro necessari: un progetto Android nel nostro IDE ed un emulatore.

Per quanto riguarda il progetto

Variabile Valore

compileSdkVersion

android-L

minSdkVersion

L

targetSdkVersion

L

Tali impostazioni normalmente saranno immesse direttamente nel file AndroidManifest.xml se si usa Eclipse ADT, altrimenti nel file build.gradle se si è optato per Android Studio.

L'emulatore dovrà essere creato impostando come target Android L Preview, e scegliendo come immagine di sistema una di quelle
scaricate nel SDK Manager.

Utilizzare le nuove funzionalità: un esempio

In questo paragrafo proponiamo un esempio che mostra l’utilizzo del nuovo tema Material, e di entrambi i nuovi widget, RecylerView e CardView su Android L.

Il tema è stato impostato mediante gli stili, in particolare mediante il file /res/values/styles.xml. Eccone il contenuto:

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="@android:style/Theme.Material.Light.DarkActionBar"/>
</resources>

Il Material Theme potrebbe essere personalizzato
quelli dello sfondo della finestra e del titolo dell'applicazione. Al momento però non ci occuperemo di questi dettagli.

Per fornire ora un esempio di come utilizzare i nuovi widget, abbiamo bisogno di utilizzare gli AdapterView, e per questo ci
serviremo di un’Activity. Il codice che vedremo usa come sorgente un array di oggetti di classe Persona, prodotte staticamente, e le pubblica in
un RecyclerView. Ogni elemento presentato sarà una CardView. Il risultato finale è visibile nella figura seguente.

I nuovi widget sono visibili nei layout. In quello adottato dall'Activity, avremo un RecyclerView

<android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/recycler_view"
    android:scrollbars="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

Ogni singolo elemento che popola la lista è costituito da una CardView TextView

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_margin="5dp"
    card_view:cardCornerRadius="25dp"
    card_view:cardBackgroundColor="@android:color/holo_orange_light"
    android:layout_height="match_parent">
    <LinearLayout
        android:orientation="vertical"
        android:background="?android:selectableItemBackground"
        android:focusable="true"
        android:clickable="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/nomecompleto"
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="24sp"
            />
        <TextView
            android:id="@+id/eta"
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="24sp"/>
    </LinearLayout>
</android.support.v7.widget.CardView>

Si faccia attenzione al fatto che entrambi i nuovi widget – RecyclerView CardView
a disposizione, è necessario scaricarli ed includerli nel proprio SDK. Se si sta utilizzando Android Studio, è sufficiente sfruttare le potenzialità di
Gradle inserendo nel file build.gradle dependencies

[code]
compile 'com.android.support:recyclerview-v7:+'
compile 'com.android.support:cardview-v7:+'
[/code]

Se, al contrario, si sta utilizzando Eclipse ADT, lo si dovrà fare in maniera manuale aggiornando mediante SDK Manager i pacchetti Android Support Library Android Support Repository Extras
gli archivi .jar CardView RecyclerView
del progetto.

Per quanto riguarda il codice Java, la classe di esempio che chiamiamo Persona

public class Persona
{
    private String nome;
    private String cognome;
    private int eta;
    /*
       OMISSIS: tutti i getter e setter relativi ai membri privati
     */
    public String getNomeCompleto()
    {
        return nome+" "+cognome;
    }
    public String getEtaCompleta()
    {
        return "Anni "+eta;
    }
}

L'Activity per lo più conterrà la configurazione del RecyclerView Adapter

public class MyActivity extends Activity {
    private RecyclerView recyclerView;
    private RecyclerView.Adapter adapter;
    private RecyclerView.LayoutManager layoutManager;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
        adapter = new MyAdapter(generaPersone());
        recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
        recyclerView.setHasFixedSize(true);
        layoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setAdapter(adapter);
    }
    private Persona[] generaPersone()
    {
        Persona[] persone=new Persona[3];
        /*
             OMISSIS: popola staticamente l'array di oggetti Persona
        */
        return persone;
    }
}

L'Adapter è probabilmente la classe che mostra le maggiori novità:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
    private Persona[] lista;
   public static class ViewHolder extends RecyclerView.ViewHolder
   {
        public TextView nomeCompleto;
        public TextView eta;
        public ViewHolder(View v)
        {
            super(v);
            nomeCompleto= (TextView) v.findViewById(R.id.nomecompleto);
            eta= (TextView) v.findViewById(R.id.eta);
        }
    }
    public MyAdapter(Persona[] dataset) {
        lista = dataset;
    }
    @Override
    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.my_text_view, parent, false);
        ViewHolder vh = new ViewHolder(v);
        return vh;
    }
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.nomeCompleto.setText(lista[position].getNomeCompleto());
        holder.eta.setText(lista[position].getEtaCompleta());
    }
    @Override
    public int getItemCount() {
        return lista.length;
    }
}

La maggiore rilevanza riguarda RecyclerView AdapterView
Ciò è dimostrato dal fatto che gli viene passato un riferimento ad un LayoutManager onCreate

Come il suo nome stesso dichiara, il RecyclerView si occupa di riciclare, riutilizzare le View
lavoro che svolge è importante avere ben chiaro il rapporto che intercorre tra un AdapterView Adapter
possibilità di approfondire questo aspetto sfruttando la Guida Android

Riepiloghiamo velocemente. Nel momento in cui scorriamo una lista di elementi all'interno di un'Activity, le View
sono sempre le stesse. L'impressione che la lista scorra è data dalla sostituzione dei dati che avviene nelle View AdapterView View Create
vengono associati i dati ad essa (Bind

Inoltre esiste un pattern detto ViewHolder
sviluppatori. Si tratta di un modo per conservare riferimenti ai widget interni ad una View ViewHolder View findViewById

La classe Adapter RecyclerView
fasi di Create Bind

  • onCreateViewHolder View View
    della classe ViewHolder findViewById
  • onBindViewHolder View
    avviene tramite ViewHolder

Per completare il commento all’esempio presentato, la CardView è stata usata per definire graficamente gli elementi all'interno della
lista. Vale la pena notare che sono stati impostati due attributi: cardBackgroundColor e cardCornerRadius che, rispettivamente,
permettono di impostare il colore di sfondo e l'arrotondamento degli angoli.

Conclusioni

Quanto presentato nell'articolo ha lo scopo di proporre un approccio rapido allo sviluppo sulla nuova versione di Android, sebbene si
tratti di una preview, e quindi non sono da escludere prossimi ampliamenti e correzioni.

È importante sin da subito prendere confidenza con i nuovi aspetti, non solo a livello pratico ma cercando di trarre indicazioni sulle linee di evoluzione
del sistema operativo. Una soluzione per il domani mette in evidenza una problematica di oggi, fornendo allo sviluppatore idee per migliorare il proprio
lavoro attuale. Gli spunti di riflessione che offre, ad esempio, il caso del RecyclerView, ne sono la prova.

Ti consigliamo anche