Slide-Effekt bei BlackBerry-Apps

von Manuel Breitfeld

Beim Gebrauch von Apps, sei es für BlackBerrys, Androids oder iPhones, fällt stets auf, dass bei der Interaktion mit dem Benutzer auf ähnliche Effekte gesetzt wird. So fährt beispielsweise bei einem Klick auf Menüpunkte oder Links meist der neue Inhalt von rechts in den Bildschirm ein.

Bei der Entwicklung von BlackBerry-Apps ist ein solcher Effekt einfach zu implementieren. Die entsprechenden Begriffe in der BlackBerry-App-Welt lauten hierbei:
- Screen: Ein Screen enthält den Inhalt, der auf dem Bildschirm angezeigt wird. So kann es etwa einen Login-Screen und einen Home-Screen geben.
- TransitionContext: Der TransitionContext beschreibt, wie von einem Screen zum nächsten gewechselt wird. Screens können beispielsweise von einer Richtung außerhalb des Bildschirms in den Bildschirm fahren (slide) oder der neue Screen kann über dem alten eingeblendet werden (fade). Weitere Effekte heißen wipe und zoom.

Die folgende Methode beschreibt, wie beim Klick auf den Login-Button der neue Home-Screen eingeblendet wird. Die Dauer ist mit 500 ms angegeben.

public void fieldChanged(Field field, int context) {
 if (field instanceof LoginButton) {
  // Get UI engine for transition effetcs
  UiEngineInstance engine = Ui.getUiEngineInstance();
  
  // Init new home screen
  homeScreen = new HomeScreen();
                         
  // Specify and set transition context for sliding in
  TransitionContext transitionContextIn = new TransitionContext(TransitionContext.TRANSITION_SLIDE);
  transitionContextIn.setIntAttribute(TransitionContext.ATTR_DURATION, 500);
  transitionContextIn.setIntAttribute(TransitionContext.ATTR_DIRECTION, TransitionContext.DIRECTION_LEFT);
  engine.setTransition(null, homeScreen, UiEngineInstance.TRIGGER_PUSH, transitionContextIn);
  
  // Specify and set transition context for sliding out
  TransitionContext transitionContextOut = new TransitionContext(TransitionContext.TRANSITION_SLIDE);
  transitionContextOut.setIntAttribute(TransitionContext.ATTR_DURATION, 500);
  transitionContextOut.setIntAttribute(TransitionContext.ATTR_DIRECTION, TransitionContext.DIRECTION_RIGHT);                                                            
  transitionContextOut.setIntAttribute(TransitionContext.ATTR_KIND, TransitionContext.KIND_OUT);
  engine.setTransition(homeScreen, null, UiEngineInstance.TRIGGER_POP, transitionContextOut);
  
  // Push home screen on stack
  synchronized(UiApplication.getEventLock())
  {
   UiApplication.getUiApplication().pushScreen(homeScreen);                       
  }          
 }
}
Da diese Effekte häufiger benutzt werden und dabei immer einheitlich aussehen sollten, bietet es sich an, die Erstellung des "Transition Contexts" in eine kleine Helper-Klasse auszugliedern.

Zurück