Codice Sorgente Merry Christmas Widget TA

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:

  1. Come creare un widget
  2. 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:

  1. Ho creato un nuovo progetto (File->New->Android Project)
  2. 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
  3. Premendo finish Eclipse creerà il progetto coi vari file di default e qui si inizia a programmare :P
  4. 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..)

  5. 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.

  6. 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.

  7. 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

  8. 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("http://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.

Commenti

Ti invitiamo ad usare toni consoni e di rimanere in tema all'argomento trattato, in caso contrario, il sistema automatico potrebbe oscurare il tuo messaggio e potrebbero trascorrere fino a 48h per la verifica ed un'eventuale autorizzazione.
TuttoAndroid si riserva comunque il diritto di allontanare le persone non adatte a tenere un comportamento corretto e rispettoso verso gli altri.

  • Antonio

    ne ho fatti molti tutorial ma questo è il peggiore… dove sta il file widget_info.xml

    • Pino

      Si effettivamente è il peggiore in assoluto, ma comunque sia il file widget_info.xml lo devi creare sotto la cartella layout: tasto destro su cartella layiout > New > File.

      Admin magari ricrea passo passo la guida senza dimenticarti per strada passaggi importanti

      Grazie

  • Mea

    nel file merrychristmas.java
    mi da 2 errori : remoteViews.setTextViewText(R.id.widget_textview, "");
    dove "id" in "R.id.widget_textview" me lo sottolinea rosso e sono ferma a sto punto

    aspetto info
    grazie :)

    • Marco

      ciao il errore e dovuto al fatto che nella cartella drawable non hai il file immagine backgroundta.*

  • Volevo un informazione, ma una volta preparato il programma, quali sono i passi per pubblicarlo sul market?
    Io uso eclipse, Ho fatto un programmino, ma non so come procedere, dovrei creare l'apk, firmarlo, ma non so come Fare.
    Sapete aiutarmi?
    Grazie.

  • Pingback: Codice Sorgente Merry Christmas Widget TA | Android()

  • grazie per l' interessante spiegazione… posso solo permettermi di consigliarti quest' estensione per rendere più chiaro e leggibile il codice?
    http://wordpress.org/extend/plugins/wp-codebox/
    funziona perfettamente anche su wp 2.9

    • Grazie lo stavo cercando :)

  • ottimo ottimo :)

Top