2009-12-20 11 views
5

qualcuno sa come utilizzare l'API JDE blackberry per creare un'animazione di diapositive simile a quella degli elementi in primo piano nel Blackberry App World? Sono consapevole del fatto che in blackberry 5.0, ci sono alcune API di transizione per farlo. Ma sto cercando di farlo per versione 4.6 OS. Ha un bell'effetto di scorrimento usando la pallina scorrevole in blackberry grassetto.Come creare un'animazione di diapositive su schermo blackberry simile a Blackberry App World?

Grazie.

risposta

4

In alternativa all'approccio screenshot/Bitmap ...

Nel metodo della vernice dello schermo si può usare Graphics.pushContext (..) per spingere un'area di ritaglio e l'offset del disegno. Per ottenere i migliori risultati, ti consigliamo di eseguire la transizione in un eseguibile e sincronizzarli sul blocco eventi. Ciò assicurerà che il tuo schermo possa essere rimosso nel bel mezzo di una transizione.

ruvida esempio:

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(); 
      } 
     } 
    } 
} 

Non c'è bisogno di marcare l'animazione volatile come viene ignorato su questa piattaforma.

+0

grazie per la risposta, speriamo che anche altri possano trovare utili. – dickyj

0

Forse utilizzare un timer per cambiare la posizione delle immagini coordinate nel metodo paint

+0

Sì, sto pensando di dover fare qualcosa del genere, ho visto pezzi di codice farlo su altri siti, ma finora non c'è nessuno che stia facendo qualcosa di esattamente come l'app App World, ho bisogno per sperimentare poi ... grazie. – dickyj