Creare un tema Android

Una volta installato Android Studio andiamo a scaricare il template ufficiale di Cyanogenmod, su cui baseremo il nostro tema Download

creare-tema-android-5
Download tema CyanogenMod

 

Basta premere “Download Zip” sulla destra.
Ora scompattiamo l’archivio appena scaricato e creiamo la nostra cartella; il mio consiglio è di dargli il nome del tema che stiamo andando a realizzare per evitare di fare confusione. Ora dovremmo avere la nostra cartella con dentro i vari file scaricati in precedenza.
A questo punto apriamo la cartella del tema e notiamo che ci sono diversi file; a noi interessano la cartella “res” e la cartella “assets”:


  • res: contiene l’icona del nostro tema
  • assets: contiene gli elementi del nostro tema

L’icona è una cosa secondaria, se l’avete già fatta spostatela in res, tenendo conto della dimensione (xxhdpi è la risoluzione maggiore, quindi ci vuole un icona di circa 96*96 pixel, ecc…).
Spostiamoci nella cartella assets: al suo interno troviamo delle cartelle che si riferiscono ai suoni, alla bootanimation ai caratteri e a tutti i parametri che il Theme Engine può modificare; a noi interessa principalmente la cartella “overlays”: qui troviamo i .png, i .9.png e e gli .xml del nostro tema; rechiamoci quindi in questa cartella: possiamo notare che sono già presenti alcuni elementi come “com.android.settings”.
Come si può dedurre dal nome questa è la cartella contente tutti gli elementi dell’app “Impostazioni”; ricordiamoci che per far capire al tema che andremo a modificare una determinata app (nel nostro caso impostazioni) bisogna dare come nome, alla cartella che conterrà i vari png, il percorso dell’applicazione interessata; se ad esempio vogliamo modificare l’app Play Music il percorso sarà com.google.android.music;  per trovare il percorso dell’app ci basta andare nel play store da PC e cercare l’app che vogliamo modificare: nella barra dell’URL (link) possiamo notare il percorso dell’applicazione.

creare-tema-android-6
Percorso applicazione

Modifica PNG

Ora che abbiamo capito il meccanismo di funzionamento del Theme Engine possiamo iniziare a sbizzarrirci; scarichiamo una rom o una determinata app e cominciamo a vedere da quali PNG è composta; io ho scaricato la cyanogenmod e tramite un lettore di file zip ho preso l’apk dell’app SystemUI (l’interfaccia di sistema); aprendola possiamo notare varie cartelle; concentriamoci sulla cartelle “drawable”, nello specifico “drawable-xxhdpi” e ”drawable-xhdpi”; oramai gli smartphone supportati dalla CM hanno tutti risoluzioni elevate, tuttavia ogni tanto potrà capitarci di mettere le mani anche in “drawable-hdpi” e ”drawable-mdpi”.

Voglio modificare l’icona del quicksettings “Modalità Aereo”; vedo quindi di quale PNG si tratta cercando nell’apk del SystemUI; una volta trovato il file, che è “ic_qs_airplane_on”/ “ic_qs_airplane_off” lo portiamo nella cartella overlays del nostro tema; qui è già presente la cartella riferita all’app SystemUI, ovvero “com.android.systemui”: la apriamo e andiamo a creare una sottocartella “drawable-xxhdpi”; qui spostiamo il png riferito al quicksettings della modalità aereo; possiamo ora iniziare a modificarlo tramite Photoshop o Gimp; ripetiamo questo procedimento fino a quando non raggiungiamo l’effetto desiderato.

creare-tema-android-7
icone PNG

Preciso che questa spiegazione così dettagliata non è presente in nessuna altra guida; è infatti abbastanza difficile da spiegare ma spero che abbiate capito il concetto.

xml

Con una guida è impossibile spiegare come modificare ogni PNG, quindi è inutile dire che dovete provare, sbagliare e imparare dagli errori; questo discorso vale soprattutto per i file xml: il tema infatti non è solo composto da png ma anche da file che dovremo modificare con un apposito programma, ovvero “Notepad++” (download qui); per gli xml non c’è una guida specifica, dipende da ciò che si vuole realizzare; si potrebbe prendere spunto da qualche tema già esistente, scaricandolo, tuttavia è bene sottolineare che prendere parti di temi da un lavoro di un’altra persona è assolutamente scorretto, insomma “guardate” ma non copiate!

creare-tema-android-8
esempio file xml

Modifica .9.png

Facciamo anche attenzione ai .9.png; sono particolari PNG che vanno editati e poi “sistemati” con un apposito programma chiamato “draw9pathc”; lo trovate nella cartella del vostro SDK, precisamente in “tools”; usare questo applicativo è fondamentale perché il .9.png non viene visualizzato correttamente dal sistema se non viene prima “fixato”:

creare-tema-android-9

Cliccate su “Show bad patches”; vedrete dei riquadri rossi attorno al vostro png; ora ridimensionate i “bordi neri” presenti nell’immagine fino a far sparire i riquadri rossi (che simboleggiano l’errore); non sempre è necessario far sparire del tutto i riquadri rossi, ma è consigliabile farlo (per capire quale deve essere il risultato finale, guardate lo screenshot in alto: non sono presenti errori di alcun tipo).

Ora il mio consiglio è di fermarsi ogni tanto e di testare l’applicazione, compilandola!

Dico questo perché spesso possiamo trovarci davanti a errori e quindi il tema non si installa; se modifichiamo molti parametri è poi difficile capire quale elemento crea l’errore.

Compilare il tema

Procediamo quindi con calma; per compilare la propria applicazione apriamo Android Studio, importiamo la nostra cartella e risolviamo degli eventuali errori al “gradle”: spesso il programma risolve questi problemi da solo, ma a volte è necessario il nostro intervento; non esistono casi generici, ma solitamente sono errori semplici da sistemare.

Ora editiamo l’Android Manifest; dobbiamo modificare il “package” e il nome del tema, poiché di default abbiamo i parametri Cyanogenmod.

Nella parte destra del programma selezioniamo il Manifest e editiamo queste voci:

  • package (potete inserire per esempio “com.primo.tema.francesco”)
  • android:label (si tratta del nome del tema, mettete quello che preferite, ma attenzione alle parole “Material”, “lollipop” e a tutti i nomi brevettati da Google; è vero, esistono decine di temi con questo nome, ma se un utente vi segnala passate dei problemi)
  • android:value (riscrivete il nome del vostro tema)
  • android:value (ha lo stesso nome del parametro precedente, tuttavia qui dovete inserire il nome dell’autore del tema)
creare-tema-android-10
AndroidManifest.xml

Perfetto, ora siete pronti per compilare!
Nel menù in alto clickate su “build” e di seguito “generate signed APK”; ora vi si apre una piccola finestra:

creare-tema-android-11
Signed APK

dovete creare la vostra “keystore”; scegliete quindi “create new” e compilate le voci che vi si presentano:

  • Key store path: è il percorso nel quale andiamo a salvare la keystore
  • Password: mettete la vostra password
  • Alias: il vostro nome, possibilmente ridotto, deve essere semplice inserirlo numerose volte
  • Password: mettete la precedente o una nuova, ve le chiederà entrambe
  • Validity Years: mettete pure 100 anni, fate come volete
  • First and Last Name: mettete il vostro nome e il vostro cognome

Lasciate vuoti gli altri parametri e date “OK” per creare la keystore; ora selezionatela (assicuratevi di salvarla in una posizione rapidamente “accessibile”, io ho scelto il desktop per esempio.
Una volta selezionata mette l’alias e le password e procedete; vi si aprirà una piccola finestra: scegliete la destinazione dell’apk e nel menu a tendina selezionate release (se non vi compare alcuna voce significa che avete sbagliato a configurare l’ambiente di lavoro oppure occorre un riavvio).

Bene ora date l’ok per buildare; in poco tempo l’apk è pronto e potrete installarlo sul vostro smartphone; se il tema non si installa potete verificare gli errori tramite l’app “Catlog” scaricabile gratis sul Play Store, che vi permette di effettuare semplici logcat.

creare-tema-android-12
CatLog

 

Download Catlog | Link Playstore

I procedimenti sono sempre gli stessi, ci vuole tanta fantasia e un po’ di tempo libero, buon lavoro!

NOTA: se realizzate un tema, potete caricarlo nello Store e potenzialmente guadagnarci; internet permette di vendere a persone distanti migliaia di chilometri, è come un grande mercato con infinite possibilità di vendita!

  • zebeck

    Bellissima guida!!! Appena avrò un po’ di tempo, proverò ad inventare qualcosa!!! Grazie davvero!!!

  • Andrea

    grazie è stata molto utile

  • Nicola Antoniciello

    Scusate ma il link del JDK non funziona.. sto scaricando manualmente JDK vers 8.. e anche il link di Android Eclipse non è corretto perchè mi porta ad Android Studio .. ?

  • http://www.inthebit.it/ Francesco

    Ciao e grazie per la segnalazione, correggo subito!

  • Nicola Antoniciello

    Di niente.. sto seguendo la guida comunque.. vi farò sapere a breve i risultati 😀

  • http://www.inthebit.it/ Francesco

    Ottimo! Stai ptovando con cm12?
    Fallo vedere anche a noi, appena terminato. 😉

  • Nicola Antoniciello

    Si.. ma non sono espertissimo.. Semmai riuscirò a partorire l’apk perchè no! E’ quello che spero! 😀

  • http://www.inthebit.it/ Francesco

    Dai, la guida scritta da Cristiano è molto chiara, ma se hai qualche difficoltà puoi anche provare a chiedere qui e, se sarò in grado, ti aiuterò io!

  • Nicola Antoniciello

    Grazie mille, ci proverò tantissime volte!

  • Federico Di Stefano

    io sto provando ma sul sito mi scarica file diversi
    sto provando a fare un tema cm12

  • http://www.inthebit.it/ Francesco

    In che senso? Quale sito?

  • Federico Di Stefano

    Quello delle template,mi scarica cartelle con dei file .gitignore, mi mostra quei file anche dopo la compilazione

  • Federico Di Stefano

    Quello delle template
    Mi mostra solo file .gitignore nelle cartelle anche dopo la compilazione su android studio

  • http://www.inthebit.it/ Francesco

    Già dopo il download, viene mostrato soltanto quel file? Lo scarichi tramite il tasto in basso a destra donwload zip?

  • Federico Di Stefano

    Si viene mostrato subito dopo il download e anche prima della scompattazione

  • http://www.inthebit.it/ Francesco

    Strano.. Mi informo e ti faccio sapere

  • Federico Di Stefano

    Grazie :)

  • http://www.inthebit.it/ Francesco
  • alessio

    ottima guida!!!sul web non ne ho trovate di simili o cosi ben fatte
    posso realizzare temi per cm12 con lo stesso metodo??

  • http://www.inthebit.it/ Francesco

    Certo.

  • http://www.inthebit.it/ Francesco

    Hai risolto?

  • @luigi

    Ma quindi se edito le icone non devo modificare nulla nell’android manifest?

  • http://www.inthebit.it/ Francesco

    Devi comunque modificare le stringhe relative ai vari nomi autore, tema, etc.

  • luigi

    Si, quelle dell’android manifest dici, giusto?
    Ma se ad esempio inserisco una bootanimation non mi istalla l’app, per ora sono riuscito solo a cambiare lo sfondo

  • http://www.inthebit.it/ Francesco

    Probabilmente sarà necessaria qualche funzione, chiederò all’autore per una conferma

  • CriGio

    Per modificare le icone devi creare una cartella icons in assets e devi inserire un filter.xml (come si fa negli iconpack) che collega i png alle applicazioni (nome pacchetto, nome png, ecc..); il mio consiglio è di dare un occhiata a temi free completi per capire come fare 😉 probabile che anche la bootanimation tu non l’abbia inserita nel modo corretto 😉

  • Luca Castellini

    Salve, innanzitutto bellissima guida! Una domanda.. Se voglio che il tema vada anche su android 5.0, devo scaricare anche le API 20 e 21?

  • Riccardo

    ciao, non riesco ad aprire android studio perché mi da questo errore, come potrei risolvere?

  • http://www.inthebit.it/ Francesco

    Prova con questa soluzione e fammi sapere. http://stackoverflow.com/questions/23185358/android-studio-error-environment-variable-does-not-point-to-a-valid-jvm-instal