2009-11-04 6 views

Répondre

5

Vous pouvez la mettre en œuvre comme un tableau d'écrans et de les pousser dans le cercle. mais n'oubliez pas de tirer l'écran en cours avant d'appuyer sur nouveau.

C'est l'application va gérer le commutateur d'écran et aussi il va gérer la matrice d'écran. Mais le menu est placé sur l'écran, nous devons donc faire une certaine communication entre l'écran et la classe d'application.

Ayons auditeur pour changer d'écran:

interface IBarrelListener { 
    public void goPreviouse(); 

    public void goNext(); 
} 

Maintenant, nous pouvons mettre en œuvre l'écran avec cet écouteur et le menu approprié:

class ABarrelScreen extends MainScreen { 
    IBarrelListener mBarrelListener; 

    public ABarrelScreen(IBarrelListener barrelListener) { 
     super(); 
     mBarrelListener = barrelListener; 
    } 

    protected void makeMenu(Menu menu, int instance) { 
     super.makeMenu(menu, instance); 
     menu.add(goPreviouseMenuItem); 
     menu.add(goNextMenuItem); 
    } 

    MenuItem goPreviouseMenuItem = new MenuItem("go previouse", 0, 0) { 
     public void run() { 
      mBarrelListener.goPreviouse(); 
     }; 
    }; 

    MenuItem goNextMenuItem = new MenuItem("go next", 0, 0) { 
     public void run() { 
      mBarrelListener.goNext(); 
     }; 
    }; 
} 

et classe d'application elle-même:

public class ScrCircleApp extends UiApplication implements IBarrelListener { 

    ABarrelScreen[] mScreens = generateScreens(); 
    int mCurrentScreen = 0; 

    public ScrCircleApp() { 
     pushScreen(mScreens[mCurrentScreen]); 
    } 

    public static void main(String[] args) { 
     ScrCircleApp app = new ScrCircleApp(); 
     app.enterEventDispatcher(); 
    } 

    private ABarrelScreen[] generateScreens() { 
     ABarrelScreen[] screens = new ABarrelScreen[6]; 
     for (int i = 0; i < screens.length; i++) { 
      screens[i] = new ABarrelScreen(this); 
      screens[i].add(new LabelField("This is screen # " 
        + String.valueOf(i))); 
     } 
     return screens; 
    } 

    public void goNext() { 
     popScreen(mScreens[mCurrentScreen]); 
     mCurrentScreen++; 
     if (mCurrentScreen >= mScreens.length) 
      mCurrentScreen = 0; 
     pushScreen(mScreens[mCurrentScreen]); 
    } 

    public void goPreviouse() { 
     popScreen(mScreens[mCurrentScreen]); 
     mCurrentScreen--; 
     if (mCurrentScreen < 0) 
      mCurrentScreen = mScreens.length - 1; 
     pushScreen(mScreens[mCurrentScreen]); 
    } 
} 

alt text http://img526.imageshack.us/img526/2372/screenbarrel.jpg

+1

C'est ce dont j'avais besoin et tout est là. U Bang @ spot à chaque fois. Merci. – Bohemian

+0

De rien! –

0
getUiEngine().pushScreen(new MyNextScreen()); 

utiliser cette fonction pour afficher un autre écran

Questions connexes