<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ANDROID | www.valeriofinazzo.it</title>
	<atom:link href="http://www.valeriofinazzo.it/wordpress/category/documentazione/android/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.valeriofinazzo.it/wordpress</link>
	<description>Il sito dell&#039;ingegnere Valerio Finazzo</description>
	<lastBuildDate>Sun, 27 Jul 2014 15:21:41 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.0.3</generator>
	<item>
		<title>ANDROID TUTORIAL &#8211; 6 &#8211; VALIDARE UN FORM</title>
		<link>http://www.valeriofinazzo.it/wordpress/2014/07/android-tutorial-6-validare-un-form/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Sun, 27 Jul 2014 14:09:32 +0000</pubDate>
				<category><![CDATA[ANDROID]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[validation]]></category>
		<guid isPermaLink="false">http://www.valeriofinazzo.it/wordpress/?p=387</guid>

					<description><![CDATA[<p>Dopo aver integrato il database oggi realizziamo il form per l&#8217;inserimento dei dati e agganciamo ad esso una funzione di validazione, che evidenzi i campi obbligatori. Prevediamo tre campi obbligatori: name city address Questi 3 campi vengono definiti come EditText [crayon-640dabb8b5eb4496580408/] L&#8217;attributo inputType impone il controllo sul formato del campo. Al salvataggio del form il sistema &#8230; <a href="http://www.valeriofinazzo.it/wordpress/2014/07/android-tutorial-6-validare-un-form/" class="more-link">Continua la lettura di <span class="screen-reader-text">ANDROID TUTORIAL &#8211; 6 &#8211; VALIDARE UN FORM</span> <span class="meta-nav">&#8594;</span></a></p>
The post <a href="http://www.valeriofinazzo.it/wordpress/2014/07/android-tutorial-6-validare-un-form/">ANDROID TUTORIAL – 6 – VALIDARE UN FORM</a> first appeared on <a href="http://www.valeriofinazzo.it/wordpress">www.valeriofinazzo.it</a>.]]></description>
										<content:encoded><![CDATA[<p>Dopo aver integrato il database oggi realizziamo il form per l&#8217;inserimento dei dati e agganciamo ad esso una funzione di validazione, che evidenzi i campi obbligatori.</p>
<p>Prevediamo tre campi obbligatori:</p>
<ul>
<li>name</li>
<li>city</li>
<li>address</li>
</ul>
<p>Questi 3 campi vengono definiti come EditText</p><pre class="crayon-plain-tag">&lt;EditText android:id="@+id/cityMarketValue" 
android:inputType="textCapWords" /&gt;</pre><p>L&#8217;attributo inputType impone il controllo sul formato del campo. Al salvataggio del form il sistema invoca la funzione di validazione che verificherà se il campo è valorizzato o no tramite la routine</p><pre class="crayon-plain-tag">Boolean controllo = true;
if (name.getText().toString().length()==0) {
controllo = false;
name.setError(getResources().getString(R.string.mandatory));
}
if (city.getText().toString().length()==0) {
controllo = false;
city.setError(getResources().getString(R.string.mandatory));
}
if (address.getText().toString().length()==0) {
controllo = false;
address.setError(getResources().getString(R.string.mandatory));
}
return controllo;</pre><p>Qualora il controllo fallisse la classe  EditText mette a disposizione il metodo setErrorr che consente di abilitare il messaggio di errore attivo sul singolo campo, come si può vedere in foto</p>
<p><a href="http://www.valeriofinazzo.it/wordpress/wp-content/uploads/2014/07/mandatory.png"><img loading="lazy" class="alignnone size-medium wp-image-389" src="http://www.valeriofinazzo.it/wordpress/wp-content/uploads/2014/07/mandatory-234x300.png" alt="mandatory" width="234" height="300" srcset="http://www.valeriofinazzo.it/wordpress/wp-content/uploads/2014/07/mandatory-234x300.png 234w, http://www.valeriofinazzo.it/wordpress/wp-content/uploads/2014/07/mandatory.png 318w" sizes="(max-width: 234px) 100vw, 234px" /></a></p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F07%2Fandroid-tutorial-6-validare-un-form%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%206%20%E2%80%93%20VALIDARE%20UN%20FORM" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F07%2Fandroid-tutorial-6-validare-un-form%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%206%20%E2%80%93%20VALIDARE%20UN%20FORM" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F07%2Fandroid-tutorial-6-validare-un-form%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%206%20%E2%80%93%20VALIDARE%20UN%20FORM" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F07%2Fandroid-tutorial-6-validare-un-form%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%206%20%E2%80%93%20VALIDARE%20UN%20FORM" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_google_gmail" href="https://www.addtoany.com/add_to/google_gmail?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F07%2Fandroid-tutorial-6-validare-un-form%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%206%20%E2%80%93%20VALIDARE%20UN%20FORM" title="Gmail" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F07%2Fandroid-tutorial-6-validare-un-form%2F&#038;title=ANDROID%20TUTORIAL%20%E2%80%93%206%20%E2%80%93%20VALIDARE%20UN%20FORM" data-a2a-url="http://www.valeriofinazzo.it/wordpress/2014/07/android-tutorial-6-validare-un-form/" data-a2a-title="ANDROID TUTORIAL – 6 – VALIDARE UN FORM"></a></p>The post <a href="http://www.valeriofinazzo.it/wordpress/2014/07/android-tutorial-6-validare-un-form/">ANDROID TUTORIAL – 6 – VALIDARE UN FORM</a> first appeared on <a href="http://www.valeriofinazzo.it/wordpress">www.valeriofinazzo.it</a>.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ANDROID TUTORIAL &#8211; 5 – INTEGRARE UN DATABASE</title>
		<link>http://www.valeriofinazzo.it/wordpress/2014/07/android-tutorial-5-integrare-un-database/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Sat, 26 Jul 2014 14:47:34 +0000</pubDate>
				<category><![CDATA[ANDROID]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[database]]></category>
		<guid isPermaLink="false">http://www.valeriofinazzo.it/wordpress/?p=374</guid>

					<description><![CDATA[<p>In Android molte applicazioni necessitano di un database per conservare le informazioni per un uso successivo. Realizzeremo insieme un crud, ovvero un app che consente le tipiche operazioni di gestione di una entità: creazione, ricerca, aggionrnamento e cancellazione. Il database di riferimento è SQLite, il package offerto da android è android.database.sqlite. Per poter accedere al nostro &#8230; <a href="http://www.valeriofinazzo.it/wordpress/2014/07/android-tutorial-5-integrare-un-database/" class="more-link">Continua la lettura di <span class="screen-reader-text">ANDROID TUTORIAL &#8211; 5 – INTEGRARE UN DATABASE</span> <span class="meta-nav">&#8594;</span></a></p>
The post <a href="http://www.valeriofinazzo.it/wordpress/2014/07/android-tutorial-5-integrare-un-database/">ANDROID TUTORIAL – 5 – INTEGRARE UN DATABASE</a> first appeared on <a href="http://www.valeriofinazzo.it/wordpress">www.valeriofinazzo.it</a>.]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;">In Android molte applicazioni necessitano di un database per conservare le informazioni per un uso successivo. Realizzeremo insieme un crud, ovvero un app che consente le tipiche operazioni di gestione di una entità:<br />
creazione, ricerca, aggionrnamento e cancellazione.<br />
Il database di riferimento è <a title="sqlite" href="http://www.sqlite.org/" target="_blank">SQLite</a>, il package offerto da android è <a title="android.database.sqlite" href="http://developer.android.com/reference/android/database/sqlite/package-summary.html" target="_blank">android.database.sqlite</a>.</p>
<p style="text-align: justify;">Per poter accedere al nostro database occorre estendere la classe SQLiteOpenHelper, che prevede l&#8217;implementazione dei metodi creazione del database.</p>
<p></p><pre class="crayon-plain-tag">public class DatabaseHelper extends SQLiteOpenHelper {

public static final String DB = "gestoremarket";
public static final int SCHEMA_VERSION = 1;
public static final String DATABASE_NAME = "gestoremarket.db";

public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, SCHEMA_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {}

@Override
public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {}

}</pre><p></p>
<p style="text-align: justify;">Il costruttore prevede la creazione di un database con una determinata versione e sono previsti i metodi che verranno lanciati alla creazione del database e/o al suo aggiornamento., All&#8217;interno dei metodi è possibile lanciare degli script sql per aggiornare il database.</p>
<p style="text-align: justify;">A questo punto dobbiamo definire la classe per la gestione della nostra tabella, tale classe implementa l&#8217;interfaccia BaseColumns, che prevede la presenza di una primary key _ID (tale approccio non è obbligatorio, ma è consigliato da Google per uno sviluppo più armonico)</p>
<p style="text-align: justify;">Nel nostro caso prevediamo una classe così fatta</p>
<p></p><pre class="crayon-plain-tag">public class MarketTable implements BaseColumns {

public static String TABLE_NAME = "MARKET";
public static String NAME = "NAME";
public static String CITY = "CITY";
public static String ADDRESS = "ADDRESS";
public static String CANCELLATO = "CANCELLATO";

public static String[] COLUMNS = new String[] {_ID, NAME, CITY, ADDRESS, CANCELLATO };

}</pre><p></p>
<p style="text-align: justify;">Non resta che definire la classe DAO responsabile dei metodi di lettura e scrittura sul nostro db</p>
<p></p><pre class="crayon-plain-tag">public class MarketDao {

private DatabaseHelper databaseHelper;

public MarketDao(Context context) {
databaseHelper = new DatabaseHelper(context);
}

public List&lt;Market&gt; getAll() {
 
SQLiteDatabase database = databaseHelper.getReadableDatabase();
 
 List&lt;Market&gt; list = new ArrayList&lt;Market&gt;();
 
 String sql = 
 String.format("select " +
 "market._id, " +
 "market.name, " +
 "market.city, " +
 "market.address " +
 "from market " +
 "where market.cancellato = 0") ;
 Log.i(DatabaseHelper.DATABASE_NAME, sql); 
 Cursor cursor = database.rawQuery(sql, null);
 
 cursor.moveToFirst();
 while (!cursor.isAfterLast()) {
 Market market = getMarket(cursor);
 list.add(market);
 cursor.moveToNext();
 }
 
 cursor.close();
 
 database.close();
 
 return list;
}

public void delete(Long id) {
SQLiteDatabase database = databaseHelper.getWritableDatabase();
String sql = 
String.format("update market " +
"set cancellato = 1 " +
" where _id = %d ", id) ;
Log.i(DatabaseHelper.DATABASE_NAME, sql);
database.execSQL(sql);
database.close();
}

public void save(Market item) {
SQLiteDatabase database = databaseHelper.getWritableDatabase();
ContentValues contentValues = creaContentValues(item);
if (item.getId()==null) {
long insertOrThrow = database.insertOrThrow(MarketTable.TABLE_NAME, null, contentValues);
item.setId(insertOrThrow);
} else
database.update(MarketTable.TABLE_NAME, contentValues, " _id = " + item.getId(), null);
database.close();
}

private ContentValues creaContentValues(Market item) {
ContentValues contentValues = new ContentValues();
contentValues.put(MarketTable._ID, item.getId());
contentValues.put(MarketTable.NAME, item.getName());
contentValues.put(MarketTable.CANCELLATO, item.getCancellato());
contentValues.put(MarketTable.CITY, item.getCity());
contentValues.put(MarketTable.ADDRESS, item.getAddress());
return contentValues;
}
}</pre><p></p>
<p style="text-align: justify;">Dall&#8217;analisi della classe si vede come la classe Helper permetta di accedere al database in lettura e/o scrittura tramite i metodi</p>
<p></p><pre class="crayon-plain-tag">SQLiteDatabase database = databaseHelper.getWritableDatabase();</pre><p></p><pre class="crayon-plain-tag">SQLiteDatabase database = databaseHelper.getReadableDatabase();</pre><p></p>
<p style="text-align: justify;">Ottenuta l&#8217;istanza del database la classe mette a disposizione dei metodi per la gestione dei dati, che permettono di eseguire del codice sql oppure tramite l&#8217;uso di classi container, tipo ContentValues, che consentono l&#8217;interazione con il database anche con una limitata conoscenza di sql.</p>
<p style="text-align: justify;">Buona sperimentazione.</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F07%2Fandroid-tutorial-5-integrare-un-database%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%205%20%E2%80%93%20INTEGRARE%20UN%20DATABASE" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F07%2Fandroid-tutorial-5-integrare-un-database%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%205%20%E2%80%93%20INTEGRARE%20UN%20DATABASE" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F07%2Fandroid-tutorial-5-integrare-un-database%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%205%20%E2%80%93%20INTEGRARE%20UN%20DATABASE" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F07%2Fandroid-tutorial-5-integrare-un-database%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%205%20%E2%80%93%20INTEGRARE%20UN%20DATABASE" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_google_gmail" href="https://www.addtoany.com/add_to/google_gmail?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F07%2Fandroid-tutorial-5-integrare-un-database%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%205%20%E2%80%93%20INTEGRARE%20UN%20DATABASE" title="Gmail" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F07%2Fandroid-tutorial-5-integrare-un-database%2F&#038;title=ANDROID%20TUTORIAL%20%E2%80%93%205%20%E2%80%93%20INTEGRARE%20UN%20DATABASE" data-a2a-url="http://www.valeriofinazzo.it/wordpress/2014/07/android-tutorial-5-integrare-un-database/" data-a2a-title="ANDROID TUTORIAL – 5 – INTEGRARE UN DATABASE"></a></p>The post <a href="http://www.valeriofinazzo.it/wordpress/2014/07/android-tutorial-5-integrare-un-database/">ANDROID TUTORIAL – 5 – INTEGRARE UN DATABASE</a> first appeared on <a href="http://www.valeriofinazzo.it/wordpress">www.valeriofinazzo.it</a>.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ANDROID TUTORIAL &#8211; 4 &#8211; GESTIRE L&#8217;ACTION BAR</title>
		<link>http://www.valeriofinazzo.it/wordpress/2014/06/android-tutorial-4-gestire-laction-bar/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 19 Jun 2014 21:31:43 +0000</pubDate>
				<category><![CDATA[ANDROID]]></category>
		<category><![CDATA[action bar]]></category>
		<category><![CDATA[android]]></category>
		<guid isPermaLink="false">http://www.valeriofinazzo.it/wordpress/?p=212</guid>

					<description><![CDATA[<p>Nell&#8217;articolo di oggi vediamo l&#8217;utilizzo dell&#8217;action bar, il componente introdotto con Android 3.0 (Api level 11) e supportato con le versioni precedenti tramite la Support Library. L&#8217;action bar è un componente che svolge diverse funzioni: innanzitutto identifica l&#8217;app, permette di gestire funzioni contestuali alla navigazioni e di avere accesso immediato a funzioni trasversali come potrebbe essere &#8230; <a href="http://www.valeriofinazzo.it/wordpress/2014/06/android-tutorial-4-gestire-laction-bar/" class="more-link">Continua la lettura di <span class="screen-reader-text">ANDROID TUTORIAL &#8211; 4 &#8211; GESTIRE L&#8217;ACTION BAR</span> <span class="meta-nav">&#8594;</span></a></p>
The post <a href="http://www.valeriofinazzo.it/wordpress/2014/06/android-tutorial-4-gestire-laction-bar/">ANDROID TUTORIAL – 4 – GESTIRE L’ACTION BAR</a> first appeared on <a href="http://www.valeriofinazzo.it/wordpress">www.valeriofinazzo.it</a>.]]></description>
										<content:encoded><![CDATA[<p style="color: #0d293f; text-align: justify;">Nell&#8217;articolo di oggi vediamo l&#8217;utilizzo dell&#8217;action bar, il componente introdotto con Android 3.0 (Api level 11) e supportato con le versioni precedenti tramite la <a style="color: #2675b5;" href="http://developer.android.com/tools/support-library/index.html">Support Library</a>. L&#8217;action bar è un componente che svolge diverse funzioni: innanzitutto identifica l&#8217;app, permette di gestire funzioni contestuali alla navigazioni e di avere accesso immediato a funzioni trasversali come potrebbe essere il modulo search.</p>
<p style="color: #0d293f; text-align: justify;">Nell&#8217;action bar sono individuate 4 aree funzionali con queste caratteristichie:</p>
<p style="color: #0d293f; text-align: justify;"><img loading="lazy" src="http://developer.android.com/design/media/action_bar_basics.png" alt="" width="580" height="90" border="0" /></p>
<ol style="color: #143c5d; text-align: justify;">
<li>contiene l&#8217;icona dell&#8217;app ed eventualmente il pulsante Up per tornare all&#8217;activity precedente</li>
<li>permette di navigare tra i contenuti di un app</li>
<li>contiene i pulsanti che si attivano in base al contesto</li>
<li>è la cosidetta area di overflow, contiene in formato lista, le azioni che non sono visualizzabili per mancanza di spazio</li>
</ol>
<div style="color: #0d293f; text-align: justify;">Il numero di pulsanti visibili nell&#8217;action bar è determinato dalla risoluzione dello schermo, come regola non possono occupare più del 50% della larghezza e allo stato attuale le regole sono riassunte nello schema successivo:</div>
<div style="color: #0d293f; text-align: justify;"><img loading="lazy" src="http://developer.android.com/design/media/action_bar_pattern_table.png" alt="" width="580" height="300" border="0" /></div>
<p style="color: #0d293f; text-align: justify;">Qualora lo spazio non sia sufficiente le azioni sono disponibili nell&#8217;area di overflow, oppure è possibile attivare una bottom area in cui tutto lo spazio a disposizione è occupato dalle azioni rimaste.</p>
<p style="color: #0d293f; text-align: justify;">Passiamo alla nostra app e attiviamo la action bar. Nel nostro esempio l&#8217;app deve essere compatibile con dispositivi con Android 2.1, pertanto definiamo la nostra activity principale così</p>
<p></p><pre class="crayon-plain-tag">public class MainActivity extends ActionBarActivity {}</pre><p>dove ActionBarActivity è una classe della Support Library disponibile nel package android.support.v7.app;</p>
<p style="color: #0d293f; text-align: justify;">A questo punto l&#8217;action bar è già disponibile e mostra la nostra icona e nient&#8217;altro. Qualora volessimo rimuoverla è sufficiente nasconderla in modo semplice:</p>
<p></p><pre class="crayon-plain-tag">ActionBar actionBar = getSupportActionBar(); 
actionBar.hide();</pre><p>Adesso abilitiamo il pulsante di Up che consente di gestire la navigazione ed accedere alle funzioni precedentemente visualizzate. Per farlo sono sufficienti due comandi:</p><pre class="crayon-plain-tag">getSupportActionBar().setHomeButtonEnabled(true);</pre><p>(abilita il comportamento sull&#8217;icona dell&#8217;app )</p>
<p style="color: #0d293f; text-align: justify;">o</p>
<p></p><pre class="crayon-plain-tag">getSupportActionBar().setDisplayHomeAsUpEnabled(true);</pre><p>(abilita una icona dedicata )</p>
<p style="color: #0d293f; text-align: justify;">Per gestire il comportamento occorre implementare il metodo onOptionsItemSelected(MenuItem item) nella nostra activity e in particolare per gestire l&#8217;evento occorre implementare qualcosa di simile:</p>
<p></p><pre class="crayon-plain-tag">@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) { case android.R.id.home: finish(); }
return super.onOptionsItemSelected(item);
}</pre><p>In questo caso mi limito a chiudere l&#8217;app, quello che è importante notare è come il pulsante di Home sia identificato univocamente tramite la costante android.R.id.home</p>
<p style="color: #0d293f; text-align: justify;">Se adesso volessimo aggiungere dei pulsanti occorre definire un menu in formato xml</p>
<p></p><pre class="crayon-plain-tag">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"   
xmlns:yourapp="http://schemas.android.com/apk/res-auto" &gt;
&lt;item android:id="@+id/edit" 
android:title="@string/edit" 
android:icon="@drawable/ic_action_edit" 
yourapp:showAsAction="ifRoom" /&gt;
&lt;item android:id="@+id/delete" 
android:title="@string/delete" 
android:icon="@drawable/ic_action_cancel" 
yourapp:showAsAction="ifRoom" /&gt;
&lt;/menu&gt;</pre><p>Per gestire l&#8217;action bar Big G ci mette a disposizione un set di icone per gli usi più comuni disponibili <a style="color: #2675b5;" href="http://developer.android.com/design/downloads/index.html">qui</a>. E&#8217; interessante notare l&#8217;attributo showAsAction, che stabilisce il comportamento del pulsante. Big G consiglia di usare il valore ifRoom con cui consentiamo al sistema di spostare il pulsante nell&#8217;area di overflow qualora lo spazio non sia sufficiente.</p>
<p style="color: #0d293f; text-align: justify;">A questo per abilitare il pulsante implementiamo il metodo onCreateOptionsMenu, in questo caso mi trovo all&#8217;interno di un fragment</p>
<p style="color: #0d293f; text-align: justify;">@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.action_list_market, menu); super.onCreateOptionsMenu(menu, inflater); }</p>
<p style="color: #0d293f; text-align: justify;">e posso pilotare la sua comparsa tramite il comando setHasOptionsMenu, che mi permette di attivarlo in base alle mie esigenze.</p>
<p style="color: #0d293f; text-align: justify;">Nel mio caso ho collegato il menù ad una lista in modo che si attivi alla selezione di un elemento.</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F06%2Fandroid-tutorial-4-gestire-laction-bar%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%204%20%E2%80%93%20GESTIRE%20L%E2%80%99ACTION%20BAR" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F06%2Fandroid-tutorial-4-gestire-laction-bar%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%204%20%E2%80%93%20GESTIRE%20L%E2%80%99ACTION%20BAR" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F06%2Fandroid-tutorial-4-gestire-laction-bar%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%204%20%E2%80%93%20GESTIRE%20L%E2%80%99ACTION%20BAR" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F06%2Fandroid-tutorial-4-gestire-laction-bar%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%204%20%E2%80%93%20GESTIRE%20L%E2%80%99ACTION%20BAR" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_google_gmail" href="https://www.addtoany.com/add_to/google_gmail?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F06%2Fandroid-tutorial-4-gestire-laction-bar%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%204%20%E2%80%93%20GESTIRE%20L%E2%80%99ACTION%20BAR" title="Gmail" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F06%2Fandroid-tutorial-4-gestire-laction-bar%2F&#038;title=ANDROID%20TUTORIAL%20%E2%80%93%204%20%E2%80%93%20GESTIRE%20L%E2%80%99ACTION%20BAR" data-a2a-url="http://www.valeriofinazzo.it/wordpress/2014/06/android-tutorial-4-gestire-laction-bar/" data-a2a-title="ANDROID TUTORIAL – 4 – GESTIRE L’ACTION BAR"></a></p>The post <a href="http://www.valeriofinazzo.it/wordpress/2014/06/android-tutorial-4-gestire-laction-bar/">ANDROID TUTORIAL – 4 – GESTIRE L’ACTION BAR</a> first appeared on <a href="http://www.valeriofinazzo.it/wordpress">www.valeriofinazzo.it</a>.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ANDROID TUTORIAL &#8211; 3 &#8211; AGGIUNGERE UN BANNER</title>
		<link>http://www.valeriofinazzo.it/wordpress/2014/06/android-tutorial-3-aggiungere-un-banner/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 19 Jun 2014 21:28:07 +0000</pubDate>
				<category><![CDATA[ANDROID]]></category>
		<category><![CDATA[banner]]></category>
		<guid isPermaLink="false">http://www.valeriofinazzo.it/wordpress/?p=209</guid>

					<description><![CDATA[<p>Nell&#8217;articolo vedremo come aggiungere un banner alla nostra applicazione usando il Google Mobile Ads Sdk. Il precedente SDK è stato dichiarato deprecato, pertanto da Agosto 2014 il supporto di Google viene interrotto e occorre aggiornare le nostre app per gestire il nuovo SDK basato sui Google Play Services. Con la nuova soluzione offerta da Google eventuali &#8230; <a href="http://www.valeriofinazzo.it/wordpress/2014/06/android-tutorial-3-aggiungere-un-banner/" class="more-link">Continua la lettura di <span class="screen-reader-text">ANDROID TUTORIAL &#8211; 3 &#8211; AGGIUNGERE UN BANNER</span> <span class="meta-nav">&#8594;</span></a></p>
The post <a href="http://www.valeriofinazzo.it/wordpress/2014/06/android-tutorial-3-aggiungere-un-banner/">ANDROID TUTORIAL – 3 – AGGIUNGERE UN BANNER</a> first appeared on <a href="http://www.valeriofinazzo.it/wordpress">www.valeriofinazzo.it</a>.]]></description>
										<content:encoded><![CDATA[<p style="color: #0d293f;">Nell&#8217;articolo vedremo come aggiungere un banner alla nostra applicazione usando il <a style="color: #2675b5;" href="http://developer.android.com/google/play-services/ads.html">Google Mobile Ads Sdk</a>. Il precedente SDK è stato dichiarato deprecato, pertanto da Agosto 2014 il supporto di Google viene interrotto e occorre aggiornare le nostre app per gestire il nuovo SDK basato sui Google Play Services. Con la nuova soluzione offerta da Google eventuali aggiornamenti saranno gestiti automaticamente dal device senza la necessità di rilasciare un nuovo apk, cosa che prima era necessaria per risolvere bug o godere di nuove funzionalità aggiuntive.</p>
<p style="color: #0d293f;">Come prima cosa dobbiamo installare e configurare il Google Play Sdk all&#8217;interno del nostro ambiente di sviluppo.</p>
<p style="color: #0d293f;">Avviate l&#8217;SDK Manager, selezionate la sezione Extras e selezionate le voci:</p>
<ul style="color: #143c5d;">
<li>Google Play Services For Froyo</li>
<li>Google Play Services</li>
</ul>
<div style="color: #0d293f;"><img loading="lazy" src="http://www.valeriofinazzo.it/joomla/images/android/Ads/extras.png" alt="" width="650" height="107" border="0" /></div>
<div style="color: #0d293f;">Scaricate una versione compatibile delle librerie da integrare nel vostro emulatore.</div>
<div style="color: #0d293f;"><img loading="lazy" src="http://www.valeriofinazzo.it/joomla/images/android/Ads/apis.png" alt="" width="643" height="190" border="0" /></div>
<p style="color: #0d293f;">Una volta che l&#8217;SDK è stato aggiornato dobbiamo integrare le librerie nel nostro ambiente di sviluppo. Avviamo Eclipse e usiamo l&#8217;opzione:</p>
<p style="color: #0d293f;"><strong>File</strong> &gt; <strong>Import</strong>, select <strong>Android</strong> &gt; <strong>Existing Android Code into Workspace</strong></p>
<p style="color: #0d293f;">Selezionate la directory &lt;android-sdk&gt;/extras/google/google_play_services/libproject/google-play-services_lib/ ed effettuate l&#8217;import della libreria nel nostro workspace.</p>
<p style="color: #0d293f;">A questo punto create un nuovo progetto Android e integrate la libreria all&#8217;interno del progetto tramite la sezione Android del progetto.</p>
<p style="color: #0d293f;"><img loading="lazy" src="http://www.valeriofinazzo.it/joomla/images/android/Ads/integrazioneLibreria.png" alt="" width="600" height="672" border="0" /></p>
<p style="color: #0d293f;">Non resta che agganciare il nostro banner all&#8217;interno della nostra app. Secondo le best practices di Google il banner non deve essere invasivo, pertanto verrà collocato nel footer dell&#8217;app. Occorre dichiarare l&#8217;activity nel nostro manifest</p>
<p></p><pre class="crayon-plain-tag">&lt;meta-data android:name="com.google.android.gms.version" 
android:value="@integer/google_play_services_version"/&gt;
&lt;activity android:name="com.google.android.gms.ads.AdActivity"      
android:configChanges="keyboard|keyboardHidden|orientation
|screenLayout|uiMode|screenSize|smallestScreenSize"/&gt;</pre><p>e fornire i permessi per l&#8217;accesso internet</p><pre class="crayon-plain-tag">&lt;uses-permission android:name="android.permission.INTERNET"/&gt;
&lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/&gt;</pre><p>A questo punto è sufficiente instanziare l&#8217;oggetto Adview e il banner apparirà nella zona desiderata</p><pre class="crayon-plain-tag">AdView adView = new AdView(layout.getContext());
adView.setAdSize(AdSize.SMART_BANNER);
adView.setAdUnitId(Costanti.MY_AD_UNIT_ID);
layout.addView(adView);
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);</pre><p><img loading="lazy" src="http://www.valeriofinazzo.it/joomla/images/android/Ads/footerAd.png" alt="" width="256" height="441" border="0" /></p>
<p style="color: #0d293f;">Per testarlo occorre usare un adv con il supporto alle google api</p>
<p style="color: #0d293f;"><img loading="lazy" src="http://www.valeriofinazzo.it/joomla/images/android/Ads/adv.png" alt="" width="600" height="600" border="0" /></p>
<div id="_atssh" style="color: #0d293f;"></div>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F06%2Fandroid-tutorial-3-aggiungere-un-banner%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%203%20%E2%80%93%20AGGIUNGERE%20UN%20BANNER" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F06%2Fandroid-tutorial-3-aggiungere-un-banner%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%203%20%E2%80%93%20AGGIUNGERE%20UN%20BANNER" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F06%2Fandroid-tutorial-3-aggiungere-un-banner%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%203%20%E2%80%93%20AGGIUNGERE%20UN%20BANNER" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F06%2Fandroid-tutorial-3-aggiungere-un-banner%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%203%20%E2%80%93%20AGGIUNGERE%20UN%20BANNER" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_google_gmail" href="https://www.addtoany.com/add_to/google_gmail?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F06%2Fandroid-tutorial-3-aggiungere-un-banner%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%203%20%E2%80%93%20AGGIUNGERE%20UN%20BANNER" title="Gmail" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F06%2Fandroid-tutorial-3-aggiungere-un-banner%2F&#038;title=ANDROID%20TUTORIAL%20%E2%80%93%203%20%E2%80%93%20AGGIUNGERE%20UN%20BANNER" data-a2a-url="http://www.valeriofinazzo.it/wordpress/2014/06/android-tutorial-3-aggiungere-un-banner/" data-a2a-title="ANDROID TUTORIAL – 3 – AGGIUNGERE UN BANNER"></a></p>The post <a href="http://www.valeriofinazzo.it/wordpress/2014/06/android-tutorial-3-aggiungere-un-banner/">ANDROID TUTORIAL – 3 – AGGIUNGERE UN BANNER</a> first appeared on <a href="http://www.valeriofinazzo.it/wordpress">www.valeriofinazzo.it</a>.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ANDROID TUTORIAL &#8211; 2 &#8211; GESTIRE LO SPINNER</title>
		<link>http://www.valeriofinazzo.it/wordpress/2014/06/android-tutorial-2-gestire-lo-spinner/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 19 Jun 2014 21:25:40 +0000</pubDate>
				<category><![CDATA[ANDROID]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[spinner]]></category>
		<guid isPermaLink="false">http://www.valeriofinazzo.it/wordpress/?p=207</guid>

					<description><![CDATA[<p>Uno dei componenti più importanti di Android è lo spinner, ovvero la versione android della classica combobox. La gestione dello spinner può essere fatta in maniera dichiarativa o in maniera programmatica. In maniera dichiarativa occorre definire per il nostro spinner la sua fonte dati, disponibile in una delle risorse xml. Ad esempio possiamo dichiarare uno &#8230; <a href="http://www.valeriofinazzo.it/wordpress/2014/06/android-tutorial-2-gestire-lo-spinner/" class="more-link">Continua la lettura di <span class="screen-reader-text">ANDROID TUTORIAL &#8211; 2 &#8211; GESTIRE LO SPINNER</span> <span class="meta-nav">&#8594;</span></a></p>
The post <a href="http://www.valeriofinazzo.it/wordpress/2014/06/android-tutorial-2-gestire-lo-spinner/">ANDROID TUTORIAL – 2 – GESTIRE LO SPINNER</a> first appeared on <a href="http://www.valeriofinazzo.it/wordpress">www.valeriofinazzo.it</a>.]]></description>
										<content:encoded><![CDATA[<p style="color: rgb(13, 41, 63); text-align: justify;">Uno dei componenti più importanti di Android è lo spinner, ovvero la versione android della classica combobox. La gestione dello spinner può essere fatta in maniera dichiarativa o in maniera programmatica.</p>
<p style="color: rgb(13, 41, 63); text-align: justify;">In maniera dichiarativa occorre definire per il nostro spinner la sua fonte dati, disponibile in una delle risorse xml. Ad esempio possiamo dichiarare uno spinner che contiene l&#8217;elenco degli anni in questo modo:</p>
<p></p><pre class="crayon-plain-tag">&lt;Spinner 
android:id="@+id/spinnerAnnoSottoscrizione" 
style="@style/Spinner"  
android:entries="@array/annoIscrizione" /&gt;</pre><p>l&#8217;attributo id individua unicamente il nostro spinner all&#8217;interno dell&#8217;app, l&#8217;attributo style contiene le specifiche grafiche dell&#8217;oggetto e il tag entries individua l&#8217;elenco dei valori che lo spinner può assumere. Tale elenco è definito nel file strings.xml</p><pre class="crayon-plain-tag">&lt;string-array name="annoIscrizioneLabel"&gt;
&lt;item&gt;2012&lt;/item&gt;
&lt;item&gt;2011&lt;/item&gt;
&lt;/string-array&gt;</pre><p>In questo modo abbiamo definito uno spinner che conterrà due voci (2012 e 2011), selezionabili dall&#8217;utente.</p>
<p style="color: rgb(13, 41, 63); text-align: justify;">Possiamo ottenere lo stesso risultato programmaticamente in questo modo.</p>
<p></p><pre class="crayon-plain-tag">ArrayAdapter&lt;String&gt; adapter= 
new ArrayAdapter&lt;String&gt;
(this,  android.R.layout.simple_spinner_item  , 
getResources().getStringArray(R.array.annoIscrizioneLabel));
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner spinner =(Spinner) findViewById(R.id.annoIscrizioneLabel);
spinner.setAdapter( adapter );</pre><p>&nbsp;</p>
<p style="color: rgb(13, 41, 63); text-align: justify;">All&#8217;interno della nostra activity recuperiamo il nostro spinner e settiamo l&#8217;adapter che fa al caso nostro. L&#8217;Adapter è un oggetto che definisce la logica di visualizzazione dello spinner e dei suoi elementi. In questo esempio ho usato il simple_spinner_item, che definisce l&#8217;aspetto grafico dello spinner, e il simple_spinner_dropdown_item, che definisce l&#8217;aspetto grafico dell&#8217;elenco mostrato per la selezione.</p>
<p style="color: rgb(13, 41, 63); text-align: justify;">Se occorre modificare l&#8217;aspetto dello spinner o rendere dinamico l&#8217;elenco delle voci da mostrare la gestione programmatica è la scelta obbligata.</p>
<p style="color: rgb(13, 41, 63); text-align: justify;">Android mette a disposizione adapter che soddisfano la maggior parte delle nostre esigenze, ma se il nostro layout è complesso o la logica di business è più evoluta possiamo definire un nostro adapter, estendendo una delle classi già presenti.</p>
<p style="color: rgb(13, 41, 63); text-align: justify;">Per gestire l&#8217;effetto di selezione dobbiamo definire un listener, tramite la chiamata</p>
<p style="color: rgb(13, 41, 63); text-align: justify;">spinner .setOnItemSelectedListener(this);</p>
<p style="color: rgb(13, 41, 63); text-align: justify;">Con questa chiamata sto dicendo che l&#8217;activity è responsabile di implementare l&#8217;interfaccia OnItemSelectedListener e di conseguenza il metodo onItemSelected. Avrei potuto in alternativa definire una inner class e demandare a lei la gestione degli eventi di selezione. Personalmente scelgo cosa fare in base alla complessità della classe.</p>
<p style="color: rgb(13, 41, 63); text-align: justify;">Il listener (sia inner class che activity) si attiva per ogni evento di selezione. Fate attenzione, perchè si attiva anche allo start della nostra activity, quando viene popolato il nostro oggetto.</p>
<p style="color: rgb(13, 41, 63); text-align: justify;">Buona sperimentazione.</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F06%2Fandroid-tutorial-2-gestire-lo-spinner%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%202%20%E2%80%93%20GESTIRE%20LO%20SPINNER" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F06%2Fandroid-tutorial-2-gestire-lo-spinner%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%202%20%E2%80%93%20GESTIRE%20LO%20SPINNER" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F06%2Fandroid-tutorial-2-gestire-lo-spinner%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%202%20%E2%80%93%20GESTIRE%20LO%20SPINNER" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F06%2Fandroid-tutorial-2-gestire-lo-spinner%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%202%20%E2%80%93%20GESTIRE%20LO%20SPINNER" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_google_gmail" href="https://www.addtoany.com/add_to/google_gmail?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F06%2Fandroid-tutorial-2-gestire-lo-spinner%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%202%20%E2%80%93%20GESTIRE%20LO%20SPINNER" title="Gmail" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F06%2Fandroid-tutorial-2-gestire-lo-spinner%2F&#038;title=ANDROID%20TUTORIAL%20%E2%80%93%202%20%E2%80%93%20GESTIRE%20LO%20SPINNER" data-a2a-url="http://www.valeriofinazzo.it/wordpress/2014/06/android-tutorial-2-gestire-lo-spinner/" data-a2a-title="ANDROID TUTORIAL – 2 – GESTIRE LO SPINNER"></a></p>The post <a href="http://www.valeriofinazzo.it/wordpress/2014/06/android-tutorial-2-gestire-lo-spinner/">ANDROID TUTORIAL – 2 – GESTIRE LO SPINNER</a> first appeared on <a href="http://www.valeriofinazzo.it/wordpress">www.valeriofinazzo.it</a>.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ANDROID TUTORIAL &#8211; 1 &#8211; GESTIRE UN BANNER</title>
		<link>http://www.valeriofinazzo.it/wordpress/2014/06/android-tutorial-1-gestire-un-banner/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 19 Jun 2014 21:22:45 +0000</pubDate>
				<category><![CDATA[ANDROID]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[banner]]></category>
		<guid isPermaLink="false">http://www.valeriofinazzo.it/wordpress/?p=204</guid>

					<description><![CDATA[<p>Nell&#8217;articolo di oggi vedremo come gestire al meglio il banner pubblicitario all&#8217;interno della nostra app. Quello che vedremo ben si adatta anche a situazioni in cui si vuole che solo una parte dello scherma supporti lo scrolling. Sulle modalità per integrare un banner, rimando al sito di AdMob, recentemente acquisito da Google, dove potete scaricare l&#8217;SDK &#8230; <a href="http://www.valeriofinazzo.it/wordpress/2014/06/android-tutorial-1-gestire-un-banner/" class="more-link">Continua la lettura di <span class="screen-reader-text">ANDROID TUTORIAL &#8211; 1 &#8211; GESTIRE UN BANNER</span> <span class="meta-nav">&#8594;</span></a></p>
The post <a href="http://www.valeriofinazzo.it/wordpress/2014/06/android-tutorial-1-gestire-un-banner/">ANDROID TUTORIAL – 1 – GESTIRE UN BANNER</a> first appeared on <a href="http://www.valeriofinazzo.it/wordpress">www.valeriofinazzo.it</a>.]]></description>
										<content:encoded><![CDATA[<p style="color: #0d293f; text-align: justify;">Nell&#8217;articolo di oggi vedremo come gestire al meglio il banner pubblicitario all&#8217;interno della nostra app. Quello che vedremo ben si adatta anche a situazioni in cui si vuole che solo una parte dello scherma supporti lo scrolling.</p>
<p style="color: #0d293f; text-align: justify;">Sulle modalità per integrare un banner, rimando al sito di <a style="color: #2675b5;" href="https://www.admob.com/">AdMob</a>, recentemente acquisito da Google, dove potete scaricare l&#8217;SDK da integrare.</p>
<p style="color: #0d293f; text-align: justify;">E&#8217; mio interesse mostrare le modalità per integrare il banner all&#8217;interno dell&#8217;app, in modo da rendere l&#8217;operazione facile e indolore.</p>
<p style="color: #0d293f; text-align: justify;"><strong>Approccio Dichiarativo</strong></p>
<p style="color: #0d293f; text-align: justify;">E&#8217; possibile inserire direttamente il seguente blocco xml all&#8217;interno del nostro layout. Il parametro keywords deve essere valorizzato con l&#8217;ID Editore rilasciato da AdMob all&#8217;atto della creazione del profilo della nostra app.</p>
<p></p><pre class="crayon-plain-tag">&lt;com.admob.android.ads.AdView
android:id="@+id/ad"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
app:keywords="xxxxxxxxxxx" /&gt;</pre><p>In questo modo alla visualizzazione del nostro layout verrà anche visualizzato il banner. Con questo approccio, se vogliamo avere il banner in più activity della nostra app, dobbiamo inserire il blocco in ogni layout relativo all&#8217;activity.</p>
<p style="color: #0d293f; text-align: justify;"><strong>Approccio Programmatico</strong></p>
<p style="color: #0d293f; text-align: justify;">E&#8217; possibile gestire il banner programmaticamente, ovvero instanziare l&#8217;oggetto e configurarlo in uno dei metodi legati al ciclo di vita della nostra Activity, tipicamente il metodo onCreate.</p>
<p></p><pre class="crayon-plain-tag">AdView adView = new AdView(this, AdSize.BANNER, Costanti.MY_AD_UNIT_ID);
LinearLayout layout = (LinearLayout) findViewById(R.id.linearLayout);
layout.addView(adView);
AdRequest request = new AdRequest();
adView.loadAd(request);</pre><p>Con questo approccio possiamo strutturare le nostre classi in modo da rendere trasparente per le nostre activity l&#8217;invocazione del banner, ad esempio tramite una activity astratta responsabile della gestione del banner, da cui ereditare le activity responsabili della logica della nostro app.</p>
<p style="color: #0d293f; text-align: justify;"><strong>Tipici Problemi</strong></p>
<p style="color: #0d293f; text-align: justify;">Il problema che si può riscontrare è la mancata visualizzazione del banner. Fortunamente i log di Android ci danno tutte le indicazioni sulle possibili cause. Un motivo può essere il layout con spazio insufficiente per mostrare il banner e questo avviene tipicamente su dispositivi con display piccoli, dove abbiamo previsto di usare del padding. In questo caso l&#8217;errore che Android mostra è Not enough space to show ad! Wants: &lt;320, 50&gt;, Has: &lt;270, 430&gt;. Il problema si risolve agganciando il nostro banner al layout con una dimensione sufficiente a contenere il banner.</p>
<p style="color: #0d293f; text-align: justify;">Altro problema è la posizione del banner, che può essere infelice o nella posizione non attesa. Per assicurarci la posizione desiderata possiamo usare il RelativeLayout e posizionare il banner nella posizione desiderata. Nell&#8217;esempio di sotto ho posizionato il banner in basso rispetto al container e l&#8217;oggetto ScrollView al di sopra del banner. In questo modo garantiamo la visualizzazione del banner nella posizione desiderata.</p>
<p></p><pre class="crayon-plain-tag">&lt;RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android"    &gt;
&lt;LinearLayout android:layout_alignParentBottom="true" /&gt;
&lt;ScrollView android:layout_above="@id/mainAdv" &gt;
&lt;/RelativeLayout&gt;</pre><p>&nbsp;</p>
<p style="color: #0d293f; text-align: justify;">
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F06%2Fandroid-tutorial-1-gestire-un-banner%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%201%20%E2%80%93%20GESTIRE%20UN%20BANNER" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F06%2Fandroid-tutorial-1-gestire-un-banner%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%201%20%E2%80%93%20GESTIRE%20UN%20BANNER" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F06%2Fandroid-tutorial-1-gestire-un-banner%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%201%20%E2%80%93%20GESTIRE%20UN%20BANNER" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F06%2Fandroid-tutorial-1-gestire-un-banner%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%201%20%E2%80%93%20GESTIRE%20UN%20BANNER" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_google_gmail" href="https://www.addtoany.com/add_to/google_gmail?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F06%2Fandroid-tutorial-1-gestire-un-banner%2F&amp;linkname=ANDROID%20TUTORIAL%20%E2%80%93%201%20%E2%80%93%20GESTIRE%20UN%20BANNER" title="Gmail" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2014%2F06%2Fandroid-tutorial-1-gestire-un-banner%2F&#038;title=ANDROID%20TUTORIAL%20%E2%80%93%201%20%E2%80%93%20GESTIRE%20UN%20BANNER" data-a2a-url="http://www.valeriofinazzo.it/wordpress/2014/06/android-tutorial-1-gestire-un-banner/" data-a2a-title="ANDROID TUTORIAL – 1 – GESTIRE UN BANNER"></a></p>The post <a href="http://www.valeriofinazzo.it/wordpress/2014/06/android-tutorial-1-gestire-un-banner/">ANDROID TUTORIAL – 1 – GESTIRE UN BANNER</a> first appeared on <a href="http://www.valeriofinazzo.it/wordpress">www.valeriofinazzo.it</a>.]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
