Come creare un'animazione di diapositive sullo schermo del Blackberry simile a Blackberry App World?

StackOverflow https://stackoverflow.com/questions/1936178

Domanda

qualcuno sa come utilizzare l'API JDE di Blackberry per creare un'animazione di diapositiva sullo schermo simile alla schermata degli elementi in primo piano in Blackberry App World?Sono consapevole che in Blackberry 5.0 sono presenti alcune API di transizione per eseguire questa operazione.Ma sto cercando di farlo per la versione 4.6 del sistema operativo.Ha un piacevole effetto di scorrimento utilizzando la pallina di scorrimento in grassetto Blackberry.

Grazie.

È stato utile?

Soluzione

In alternativa all'approccio screenshot / Bitmap ...

Nel metodo della vernice dello schermo è possibile utilizzare Graphics.pushContext (..) per spingere una regione di ritaglio e disegno offset. Per ottenere risultati ottimali, ti consigliamo di fare la transizione in un eseguibile, e sincronizzare sulla serratura evento. Questo farà sì che il vostro schermo può essere respinta nel bel mezzo di una transizione.

Esempio ruvida:

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.

Altri suggerimenti

Forse usa un timer per cambiare la posizione delle coordinate delle immagini nel metodo di pittura

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top