Autore Topic: action bar e min target SDK  (Letto 1502 volte)

Offline esoni

  • Utente junior
  • **
  • Post: 102
  • Respect: 0
    • Mostra profilo
action bar e min target SDK
« il: 24 Ottobre 2012, 09:37:21 CEST »
0
ciao ragazzi volevo chiedervi una cosa. se non volessi usare librerie esterne e nel mio progetto facessi uso delle funzionalità minime delle action bar: ovvero mi limito esclusivamente a specificare showasaction nelle voci del mio menu nel file xml del menu. Qual è il mio target sdk ? io credo che devo usare il 3.0 . ma posso mettere piattaforme inferiori in min sdk ? come reagirebbero alla lettura della voce show as action ?
mi rendo conto che il mio dubbio è sopratutto su come impostare il min sdk e il target sdk

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:action bar e min target SDK
« Risposta #1 il: 24 Ottobre 2012, 14:14:35 CEST »
0
La classe ActionBar è API Level 11 (come puoi controllare tu stesso nella pagina della documentazione in alto a destra ActionBar | Android Developers ).

Quindi senza utilizzare librerie esterne devi mettere una minSdk a 11.

Conta che alcuni metodi della classe (come ad esempio getThemedContext) sono api 14, quindi se lo usi devi impostare come minSdk 14.

N.B.: Ti consiglio fortemente l'uso delle librerie di compatibilità per portare tutto ad api 4!

Offline esoni

  • Utente junior
  • **
  • Post: 102
  • Respect: 0
    • Mostra profilo
Re:action bar e min target SDK
« Risposta #2 il: 24 Ottobre 2012, 14:44:37 CEST »
0
Ok hai ragione ma ho un dubbio. Ho realizzato un app che deve funzionare sia su tablet che cellulari. Ho usato la libreria di support di android, per offrire i servizi della piattaforma 3.0 anche a cellulari che usano piattaforma piu datate. L unica cosa è che tale libreria l unica cosa che non offre è il supporto alla action bar. Quindi ho messo target sdk 11 ma ho impostato min sdk alla piattaforma 2.3.3. Ho eseguito l'applicazione su un cellulare che monta la 2.3.3 e l'applicazione viene eseguita senza problemi, offrendo le voci degli item dell action bar nel menu. Mi chiedevo come mai ?

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:action bar e min target SDK
« Risposta #3 il: 24 Ottobre 2012, 15:00:44 CEST »
0
La libreria per la action bar è questa: ActionBarSherlock - Home

Offline esoni

  • Utente junior
  • **
  • Post: 102
  • Respect: 0
    • Mostra profilo
Re:action bar e min target SDK
« Risposta #4 il: 24 Ottobre 2012, 15:13:14 CEST »
0
sisisi ma non hai risposto alla mia domanda :) . come mai anche senza questa libreria l'applicazione gira lo stesso su cellullari pre 3.0 (ovviamente l action bar non viene mostrata, e gli item dell action bar compaiano nel menu)?

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:action bar e min target SDK
« Risposta #5 il: 24 Ottobre 2012, 16:17:36 CEST »
0
Se non posti il codice o non dici che metodi hai usato possiamo aiutarti veramente poco!

Offline esoni

  • Utente junior
  • **
  • Post: 102
  • Respect: 0
    • Mostra profilo
Re:action bar e min target SDK
« Risposta #6 il: 24 Ottobre 2012, 17:16:40 CEST »
0
non posso postare è un codice lunghissimo . diciamo che nella mia activity ho gestito il click degli item della actionbar tramite gli stessi metodi di gestione utilizzati del menu. Ho ordinato l'uso di actionbar perche nel file menu.xml ho specificato "showasaction" nelle varie voci degli elementi. Non ho utlizzato altre funzioni avanzate della action bar

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:action bar e min target SDK
« Risposta #7 il: 24 Ottobre 2012, 17:23:39 CEST »
0
non posso postare è un codice lunghissimo

Senza di quello andiamo ad intuito, quindi inutile continuare.

La classe ActionBar esiste dalle api 11 a salire, se a te funziona tutto con le api 10 vuol dire che non usi la classe ActionBar delle api 11. Ma questo non lo sapremo mai senza il codice.

Offline esoni

  • Utente junior
  • **
  • Post: 102
  • Respect: 0
    • Mostra profilo
Re:action bar e min target SDK
« Risposta #8 il: 24 Ottobre 2012, 20:29:49 CEST »
0
scusami hai ragione ma risulterebbe difficile postare tutto il codice . ti riassumo cosa uso
1) non uso nessuna API delle action bar
2) mi limito a specificare x ogni item del menu nel file xml l'attributo : android:showAsAction="ifRoom|withText"
3) uso Theme.holo x il mio layout. questo layout abilita di default l action bar
4) imposto nel manifest:
 
Codice (Java): [Seleziona]
  <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="11" />
Ho il risultato che se eseguo il programma su un dispositivo che usa una piattaforma >=3.0 vedo l action bar, e su un cellulare pre 3.0 visualizzo le voci della action bar nel menu. MI Sembra un risultato accettabile, pero vorrei capire il perchè XD.

Sulla doc ufficiale trovo un esempio che forse può essere utile a capire la mia situazione:

Citazione
Beginning with Android 3.0 (API level 11), the action bar is included in all activities that use the Theme.Holo theme (or one of its descendants), which is the default theme when either the targetSdkVersion or minSdkVersion attribute is set to "11" or greater. For example:

<manifest ... >
    <uses-sdk android:minSdkVersion="4"
              android:targetSdkVersion="11" />
    ...
</manifest>

In this example, the application requires a minimum version of API Level 4 (Android 1.6), but it also targets API level 11 (Android 3.0). This way, when the application runs on Android 3.0 or greater, the system applies the holographic theme to each activity, and thus, each activity includes the action bar.

If you want to use ActionBar APIs, such as to add navigation modes and modify action bar styles, you should set the minSdkVersion to "11" or greater. If you want your app to support older versions of Android, there are ways to use a limited set of ActionBar APIs on devices that support API level 11 or higher, while still running on older versions. See the sidebox for information about remaining backward-compatible.

che ne pensi ?

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:action bar e min target SDK
« Risposta #9 il: 25 Ottobre 2012, 09:48:01 CEST »
0
Ho il risultato che se eseguo il programma su un dispositivo che usa una piattaforma >=3.0 vedo l action bar, e su un cellulare pre 3.0 visualizzo le voci della action bar nel menu. MI Sembra un risultato accettabile, pero vorrei capire il perchè XD.

Ah, io avevo capito che vedevi sempre la ActionBar, sia in dispositivi >= alla 3.0 che in dispositivi < alla 3.0.

In questo caso tutto ti sta funzionando normalmente, non capisco perché ti stupisci. Il tema holo non viene riconosciuto in versione < alla 3.0 quindi viene visualizzato il menu "vecchio stile". Ovvero i tuoi menu vengono caricati sulla actionbar o sul "tasto menu" a seconda del tuo tema.

Per fare le cose precise, infatti, dovresti avere 3 cartelle values con tre diversi stili:

values/style.xml
Codice (XML): [Seleziona]
<resources>
        <style name="AppTheme" parent="android:Theme.Light" />
</resources>

values-v11/style.xml
Codice (XML): [Seleziona]
<resources>
        <style name="AppTheme" parent="android:Theme.Holo.Light" />
</resources>

values-v14/style.xml
Codice (XML): [Seleziona]
<resources>
        <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar" />
</resources>

Offline esoni

  • Utente junior
  • **
  • Post: 102
  • Respect: 0
    • Mostra profilo
Re:action bar e min target SDK
« Risposta #10 il: 25 Ottobre 2012, 10:12:45 CEST »
0
ultima domanda poi chiudo il topic. Se io usa la libreria di compability ( che offre le funzionalità della 3.0 tranne l actionbar)+ action bar sherlock, è come se avessi una 3.0 su un dispositivo pre 3.0 ?
grazie di tutto

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:action bar e min target SDK
« Risposta #11 il: 25 Ottobre 2012, 10:20:09 CEST »
0
Esatto!

Offline esoni

  • Utente junior
  • **
  • Post: 102
  • Respect: 0
    • Mostra profilo
Re:action bar e min target SDK
« Risposta #12 il: 25 Ottobre 2012, 10:26:45 CEST »
0
e per offrire i temi Holo anche ai pre 3.0 c è qualche libreria ?

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:action bar e min target SDK
« Risposta #13 il: 25 Ottobre 2012, 11:13:29 CEST »
0
e per offrire i temi Holo anche ai pre 3.0 c è qualche libreria ?

action bar sherlock