Eccomi qui, il Natale è passato e la voglia di programmare per Android in voi è tanta :-P quindi vi pubblico il sorgente della mia ultima semplicissima applicazione per Android.
I punti che andrò a toccare in questa applicazione sono principalmente 2:
- Come creare un widget
- Come usare gli Intent
Il programmino l’ho fatto con Eclipse, ottimo programma per scrivere sorgente per Android (Guida per installare e configurare Eclipse per programmare per Android). Per tutte le informazioni sono disponibile sul forum sezione development!
Partiamo dall’inizio:
- Ho creato un nuovo progetto (File->New->Android Project)
- Ho compilato i campi come segue:
Project Name -> Merry Christmas Widget TA
Contents -> lasciato invariato
Build Target -> Android 1.5
Properties -> Application Name: Merry Christmas Widget TA; Package Name: ta.widget.mc; Create Activity: merrychristmas; Min SDK Version: 3 - Premendo finish Eclipse creerà il progetto coi vari file di default e qui si inizia a programmare :P
- Apriamo il file AndroidManifest.xml e dobbiamo modificarlo a dovere perchè è quello che avverte al sistema di che applicazione si tratta, con quale Hardware deve comunicare e così via:
Andiamo a spiegare per bene: nel primo pezzo di codice viene dichiarata la versione dell’applicazione quella che viene mostrata nel market, il tag application invece indica l’icona dell’app quella che si vede nel market sempre e il nome dell’app (string/app_name). Da ora in poi parte il codice che dice che questo è un widget e l’unica cosa da cambiare è xml/widget_info che sarebbe un file dove sono presenti le caratteristiche che il widget deve avere (dimensioni ecc..)
- Ora che il Manifest è copleto andiamo a vedere i file xml di layuot e configurazioni, widget_info.xml (dentro xml):
Questo è il file di cui parlavo prima con le caratteristiche del widget come vedete ho impostato 145dp la larghezza e 145dp l’altezza, come layout gli ho indicato il main.
- Visto che ne ho parlato andiamo subito a vedere il main.xml dentro alla cartella layout:
Il main.xml è ciò che verrà mostrato usando il widget e ovviamente dovrà avere un layout il widget ho impostato un 125dp di larghezza e altezza (inferiori al widget_info perchè così attorno al widget c’era del vuoto) e alla base di tutto c’è la stringa del background infatti questo tag mostra l’immagine che vedete utilizzando l’app.
- Ultimo file xml è lo strings.xml dove sono presenti le costanti per così dire:
Merry Christmas Widget TA Come vedete ci ho messo solo una costante cioè il titolo della app perchè il widget non ha bisogno di testo
- Ecco arrivati quindi al file più importante merrychristmas.java colui che fa girare il widget:
package ta.widget.mc; import android.app.PendingIntent; import android.appwidget.AppWidgetProvider; import ta.widget.mc.R; import android.appwidget.AppWidgetManager; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.widget.RemoteViews; public class merrychristmas extends AppWidgetProvider { @Override public void onUpdate( Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds ) { RemoteViews remoteViews; ComponentName watchWidget; remoteViews = new RemoteViews( context.getPackageName(), R.layout.main ); watchWidget = new ComponentName( context, merrychristmas.class ); remoteViews.setTextViewText(R.id.widget_textview, ""); Intent BrowserIntent = new Intent("android.intent.action.VIEW", Uri.parse("https://www.tuttoandroid.net")); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, BrowserIntent, 0); remoteViews.setOnClickPendingIntent(R.id.widget_textview, pendingIntent); appWidgetManager.updateAppWidget(watchWidget, remoteViews ); } }
Qui sarò molto riassuntivo e andrò a toccare più il secondo punto che ho detto a inizio articolo, l’Intent. Dall’alto verso il basso troviamo gli import per le varie funzioni e la classe merrychristmas, qui dentro c’è il codice che fa girare l’applicazione. Il codice si descrive da solo fino a Intent che prima di tutto con new Intent dichiara un evento, crea l’activity del Browser, e infine associa l’intent con il click sullo schermo (pendingIntent). L’ultima riga di codice è quello che pubblicherà i risultato ottenuto tra layout e codice java di questo file.
Scusatemi magari se non sono stato troppo chiaro ma andare a spiegare a grandi linee un sorgente non è mai facile :-D sono comunque disponibile per ogni vostra domanda nella sezione Development del Forum dove troverete anche il progetto Eclipse di questo widget.