2009-12-20 17 views
5

, Blackberry App World'deki Özellikli Öğeler ekranına benzer bir ekran slayt animasyonu oluşturmak için böğürtlen JDE API'sini nasıl kullanacağını bilen var mı? Ben blackberry 5.0, bunu gerçekleştirmek için bazı geçiş apis vardır farkındayım. Ama ben 4.6 işletim sistemi için yapmak istiyorum. Böğürtlen kalınlığında kaydırma topunu kullanarak güzel kaydırma efekti vardır.Blackberry App World'e benzeyen blackberry ekran slayt animasyonu nasıl oluşturulur?

Teşekkürler.

cevap

4

görüntülerin konumunu koordinat değiştirmek için

bir zamanlayıcı kullanın Kırpma bölgesini ve çizim ofsetini itmek için Graphics.pushContext (..). En iyi sonuçlar için geçişi bir runnable'da yapmak ve etkinlik kilidinde senkronize etmek isteyeceksiniz. Bu, ekranınızın geçişin ortasında reddedilmesini sağlayacaktır.

Kaba örnek:

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

bu platformda göz ardı edilir gibi uçucu animasyon işaretlemek gerek yok.

+0

Cevabınız için teşekkürler, umarım diğerleri de yardımcı olabilir. – dickyj

0

Belki kullanabilirsiniz ekranınızın boya yönteminde ... boya yöntemiyle ekran görüntüsü/Bitmap yaklaşımına alternatif olarak

+0

Evet, sanki böyle bir şey yapmam gerektiğini düşünüyorum, diğer sitelerdeki bit ve kod parçalarını gördüm, ama şu ana kadar App World uygulaması gibi tam olarak bir şey yapmıyor, ihtiyacım olacak denemek o zaman ... teşekkürler. – dickyj

İlgili konular