2012-01-25 9 views
17

Android 4.0 (ICS) ha un sacco di new UI guidelines che sono fantastici. Il problema è che andando avanti, non sono sicuro di come creare un'app per Android 4.0 e accertarmi che l'app sia uguale/simile sui dispositivi con Android 2.2 e 2.3.Come rendere compatibili le app di Android 4.0 all'indietro?

C'è il Android compatibility library e un backwards compatible Action Bar, ma stavo cercando una soluzione più concreta per il porting di app post-ICS su telefoni pre-ICS.

Sono sulla buona strada? Qualcuno ha qualche pensiero?

+1

L'articolo collegato non è specifico ICS. Solo un'ammonizione generale per seguire le convenzioni Android durante la codifica per Android. –

+1

Cosa, appunto, è una "soluzione più concreta"? – CommonsWare

+0

Quindi ... Le librerie e gli strumenti compatibili con le versioni precedenti di Google che forniscono non sono abbastanza concreti per te? Ti stai aspettando che non funzionino o cosa? –

risposta

21

Ecco alcuni suggerimenti.

Innanzitutto, prestare attenzione al nuovo Android Design guidelines. Credo che sia una buona idea, non solo utile per ovvi motivi di design, ma anche perché renderà più facile la compatibilità con le versioni precedenti. Ad esempio, lo Support Package aiuta a portare gli elementi di progettazione raccomandati su vecchie piattaforme e i nuovi rev di questo pacchetto lo porteranno probabilmente più vicino alle ultime linee guida di progettazione.


In secondo luogo, utilizzare fragments. Anche se non pensi di avere molto bisogno di frammenti ora, sono il futuro del design di Android e il numero di androidi su grande schermo crescerà molto rapidamente. E anche se aggiungono una certa complessità in più, penso che incoraggino un buon design separando la vista dall'attività.

Abilitare l'uso di frammenti tramite Support Package (noto anche come libreria di compatibilità). Questo è abbastanza semplice e non ho riscontrato alcun problema nel farlo. Basta fare in modo che i vostri importazioni simile a questa:

import android.**support.v4**.app.Fragment; 

in modo che li stanno ottenendo dal pacchetto di supporto piuttosto che chiamare il nativo ICS API direttamente.


In terzo luogo, abilitare la barra di azione ICS/HC utilizzando i temi come descritto nei documenti. Nota che questo non fornisce all'app una barra di azione su piattaforme pre-Honeycomb. Per questo è necessario utilizzare qualcosa come ActionBarSherlock o l'esempio ActionBarCompat. Entrambe sono buone soluzioni ma aumentano la complessità della tua app. Non c'è alcuna barra di azione nella versione attuale del pacchetto di supporto, e questo è apparentemente dovuto a problemi tecnici, ma sospetto che stiano cercando di risolvere questi problemi.

Quindi, se si desidera mantenere è semplice, si consideri che è ragionevole per la tua app avere una barra di azione su ICS & HC, e nessuna barra di azione su piattaforme precedenti. In realtà, lo Android Dev blog aveva un post negli ultimi giorni incentrato sulla gestione di menu e azioni in queste circostanze.

Inoltre, considera che aggiungere una barra di azione pre-Honeycomb alla tua app in un secondo momento (ad esempio utilizzando il codice dall'esempio ActionBarCompat) non sarà poi così male - molto più semplice, a mio parere, quindi rielaborare il codice per i frammenti in un secondo momento.

Infine, si noti che è necessario utilizzare un recente SDK in modo che è possibile fare riferimento a elementi come il tema Holo (per l'ActionBar ICS) e l'elemento di showAsAction="ifRoom", così il vostro manifesto comprenderà qualcosa di simile:

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> 
+0

Grazie per il post dettagliato. Hai collegato a 3 articoli che avevo già collegato alla mia domanda. Ho ancora problemi con ActionBar. Come faccio a visualizzare un ActionBar diviso su dispositivi pre-ICS? –

+1

Non conosco la risposta a questa domanda - come per il mio post ho usato i frammenti, ma non la barra delle azioni, su dispositivi pre-ICS. – Tom

+0

migliore soluzione IMHO è ActioBarSherlock. supporta da 2.x a 4.x, che copre tutto !!! – Paschalis

Problemi correlati