2009-12-20 9 views
5

¿Alguien sabe cómo usar la API JDE de Blackberry para crear una animación de diapositiva de pantalla similar a la pantalla de Elementos destacados en Blackberry App World? Soy consciente de que en Blackberry 5.0, hay algunas aplicaciones de transición para realizar eso. Pero estoy buscando hacerlo para la versión 4.6 OS. Tiene el bonito efecto de desplazamiento usando la bola de desplazamiento en negrita negrita.¿Cómo crear una animación de diapositivas en la pantalla de Blackberry similar a Blackberry App World?

Gracias.

Respuesta

4

Como una alternativa al enfoque de pantalla y/mapa de bits ...

En el método de pintura de su pantalla se puede usar Graphics.pushContext (..) para presionar una región de recorte y desplazamiento de dibujo. Para obtener los mejores resultados, querrá hacer la transición en un ejecutable y sincronizar en el bloqueo de eventos. Esto asegurará que su pantalla pueda ser descartada en medio de una transición.

ejemplo áspera:

class TransitionScreen extends Screen { 
    private int transitionOffset; 
    private boolean isTransitionHorizontal; 
    private ScreenTransition currentTransition; 

    public TransitionScreen(boolean isTransitionHorizontal) { 
     this.isTransitionHorizontal = isTransitionHorizontal; 

     transitionOffset = getTransitionMaximum(); // So the screen starts offset 
    } 

    protected void paint(Graphics graphics) { 
     // use transitionOffset as x or y depending on isTransitionHorizontal 
     graphics.pushContext(...); 
    } 

    protected void onExposed() { 
     transitionToOffset(0); 
    } 

    protected void onObscured() { 
     int target = getTransitionMaximum(); 

     transitionToOffset(target); 
    } 

    private int getTransitionMaximum() { 
     return isTransitionHorizontal ? Display.getWidth() : Display.getHeight(); 
    } 

    private void transitionToOffset(int target) { 
     if (currentTransition != null) { 
      currentTransition.stop(); 
     } 

     currentTransition = new ScreenTransition(target); 

     getApplication().invokeLater(currentTransition); 
    } 
} 

class ScreenTransition implements Runnable { 
    private boolean animating; 
    private int target; 

    public ScreenTransitionUpdater(int target) { 
     this.target = target; 
    } 

    public void stop() { 
     animating = false; 
    } 

    public void run() { 
     while(animating) { 
      Object eventLock = getApplication().getEventLock(); 

      synchronized(eventLock) { 
       // Interpolate myOffset to target 

       // Set animating = false if myOffset = target 

       invalidate(); 
      } 
     } 
    } 
} 

No hay necesidad de marcar la animación tan volátil como es ignorado en esta plataforma.

+0

gracias por la respuesta, esperamos que otros también puedan encontrarnos útiles. – dickyj

0

Tal vez utilizar un temporizador para cambiar la posición de las imágenes de coordenadas en el método de pintura

+0

Sí, estoy pensando que tengo que hacer algo así, vi partes del código haciendo eso en otros sitios, pero hasta ahora no hay ninguno que esté haciendo algo exactamente como la aplicación App World, necesitaré experimentar entonces ... gracias. – dickyj