2009-12-20 2 views
5

Blackberry App World의 Blackberry JDE API를 사용하여 Featured Items 화면과 유사한 화면 슬라이드 애니메이션을 만드는 방법을 아는 사람이 있습니까? 나는 블랙 베리 5.0에서 그것을 수행하는 몇 가지 전환 api가 있다는 것을 알고있다. 그러나 나는 4.6 버전 OS를 위해 그것을 할려고한다. 그것은 블랙 베리 볼드 볼 스크롤 공을 사용하여 좋은 스크롤 효과가 있습니다.Blackberry App World와 유사한 Blackberry 화면 슬라이드 애니메이션을 만드는 방법은 무엇입니까?

감사합니다.

답변

4

에서 이미지의 좌표 위치를 변경

를 타이머를 사용 Graphics.pushContext (..) 클리핑 영역과 그리기 오프셋을 푸시합니다. 최상의 결과를 얻으려면 runnable에서 전환을 수행하고 이벤트 잠금에 동기화해야합니다. 이렇게하면 전환 도중에 화면을 닫을 수 있습니다.

거친 예 :

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

가이 플랫폼에서 무시됩니다뿐만 휘발성 애니메이션을 표시 할 필요가 없습니다.

+0

답변을 주셔서 감사합니다. 다른 사람들도 도움이 될만합니다. – dickyj

0

어쩌면 당신이 사용할 수있는 화면의 페인트 방법은 ... (가) 페인트 방법 스크린 샷/비트 맵 방식에 대한 대안으로

+0

네, 그런 식으로해야한다고 생각합니다. 다른 사이트에서 코드를 수행하는 것을 보았습니다. 그러나 지금까지 App World 앱과 똑같은 일을하는 사람은 없었습니다. 그때 실험 해 ... 고마워. – dickyj

관련 문제