Autore Topic: Dialogo fullscreen non va su galaxy s2  (Letto 733 volte)

Offline MatteSFSP

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy s2
  • Sistema operativo:
    ubuntu 10.4 LTS / windows7
Dialogo fullscreen non va su galaxy s2
« il: 01 Marzo 2012, 16:57:26 CET »
0
ciao ragazzi !
Il mio problema è il seguente.
La mia applicazione dovrebbe visualizzare all'avvio un dialog a tutto schermo , per poi visualizzare il layout principale (senza la barra del titolo).
Infatti nel manifest ho impostato così:
Codice (XML): [Seleziona]
.......
 <activity
           android:label="@string/app_name"
           android:name=".MainActivity"
           android:theme="@android:style/Theme.NoTitleBar"

 .......

Ho provato su due telefoni, un galaxy s e un galaxy s2.
Sul galaxy S il dialog compare a schermo intero per poi essere visualizzato il layout principale in maniera corretta.
Invece sul galaxy s2 il dialogo va a schermo intero solo per una frazione di secondo per poi essere ricoperto dalla status bar immediatamente.
Addirittura questo effetto di scomparsa /ricomparsa non vi vede nemmeno se non si hanno abilitati gli effeti grafici del display.
Vi riporto il codice:

file Main.java
Codice (Java): [Seleziona]
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.main);
       ..........
       ..........
        showDialog(SPLASH_DIALOG);
    }

    private static final int SPLASH_DIALOG=1;
    Dialog splash_dialog =null;
    @Override
    protected Dialog onCreateDialog(int id) {
        // TODO Auto-generated method stub
        switch(id){
                case SPLASH_DIALOG:{    splash_dialog = new Dialog(this, R.style.Dialogo_SchermoIntero);
                                                                splash_dialog.setCancelable(false);
                                                                threadSplash = new SplashThread();
                                                                return splash_dialog;}
                default:{
                        Dialog dialog = new Dialog(this);
                        dialog.setTitle("Errore");
                        return dialog;
                }
        }
    }
    @Override
    protected void onPrepareDialog(int id, Dialog dialog) {
        switch(id){
                        case SPLASH_DIALOG:{
                                                        if(threadSplash!=null)
                                                                threadSplash.start();
                                break;}
                        default:{
                                break;}
                }
    }

   //*****************THREAD DELLO SPLASH********************//
    // Aspetta 5 secondi poi chiude lo splash
    private class SplashThread extends Thread{
               
        @Override
        public void run() {  
            try{Thread.sleep(5000);}catch(Exception e){}
            inviaMessaggioInt("SPLASH", STOP_SPLASH, splash_handler);
        }
    }
    //FUNZIONE CHE INVIA UN MESSAGGIO ALL'HANDLER SPECIFICATO
    void inviaMessaggioInt(String key,int Value,Handler handler){
       
        Message msg = handler.obtainMessage();
                Bundle b = new Bundle();
                b.putInt(key,Value);
                msg.setData(b);
                handler.sendMessage(msg);
    }

   private static final int START_SPLASH=1,
                                         STOP_SPLASH=2;
        //********************HANDLER PER LA GESTIONE DELLA GRAFICA**********************//
        final Handler splash_handler = new Handler(){
               
                public void handleMessage(Message msg) {
                        int n = msg.getData().getInt("SPLASH");
                        switch(n){
                                case START_SPLASH:{
                                                if(!isFinishing())
                                                        showDialog(SPLASH_DIALOG);
                                break;}
                                case STOP_SPLASH:{
                                        if((!isFinishing())&&(splash_dialog!=null)){
                                                splash_dialog.dismiss();
                                        }
                                break;}
                        }
                };
        };

Il file dello style del dialogo è il seguente
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<resources >
 <style name="Dialogo_SchermoIntero">
        <item name="android:windowFullscreen">true</item>
        <item name="android:background">@drawable/sfondo_unimore</item>
        <item name="android:gravity">center</item>
</style>
</resources>


« Ultima modifica: 01 Marzo 2012, 17:09:51 CET da Qlimax »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Dialogo fullscreen non va su galaxy s2
« Risposta #1 il: 01 Marzo 2012, 17:25:33 CET »
0
Essendoci di mezzo un thread, potrebbe esserci qualche corsa critica. Dovessi debuggarlo metterei Log.d() sparsi per vedere dove la sequenza non è quella che mi aspetto.

Oppure, potresti abbandonare il "thread" come metodo per creare un ritartdo, ed usare semplicemente un sendMessageDelayed.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline MatteSFSP

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy s2
  • Sistema operativo:
    ubuntu 10.4 LTS / windows7
Re:Dialogo fullscreen non va su galaxy s2
« Risposta #2 il: 01 Marzo 2012, 17:49:32 CET »
0
Ho provato con il sendMessageDelayed(msg , int millsec);

ma fa la stessa cosa di prima...

Ci tengo a precisare che sia sull'emulatore che sul GALAXY S va benissimo.

Questo metodo lo uso comunque perchè il codice è anche più pulito.
Ti ringrazio per l'informazione.

Se per caso qualcuno ha una alternativa per risolvare il problema mi sarebbe di aiuto. Grazie!

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Dialogo fullscreen non va su galaxy s2
« Risposta #3 il: 01 Marzo 2012, 18:18:15 CET »
+1
A me su galaxy S2 questo funziona ma non so se è quello che ti serve o ti può aiutare!

Codice (Java): [Seleziona]
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

Offline MatteSFSP

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy s2
  • Sistema operativo:
    ubuntu 10.4 LTS / windows7
Re:Dialogo fullscreen non va su galaxy s2
« Risposta #4 il: 01 Marzo 2012, 19:36:25 CET »
0
Vedi il mio problema non è rendere il main.xml in full screen.
Il main deve essere solamente senza titolo, e quello lo imposto già nel manifest.

Il mio problema è che quando viene visualizzato il dialogo (Splash iniziale), l'immagine una volta a schermo intero  viene immediatamente coperta dalla status bar in alto anche se lo style del dialogo che lancio è in FullScreen.

Offline MatteSFSP

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy s2
  • Sistema operativo:
    ubuntu 10.4 LTS / windows7
Re:Dialogo fullscreen non va su galaxy s2
« Risposta #5 il: 02 Marzo 2012, 10:23:49 CET »
0
Volevo solo dire che ho risolto il problema creando una activity dediicata allo splash.
Facendo così funziona anche sul galaxy s2.

Una grossa mano me la data questa guida

http://www.anddev.it/index.php?topic=4105.0

Ringrazio tutti per la disponibiltà! :-) ;-)