2009-12-20 13 views
5

क्या कोई जानता है कि ब्लैकबेरी ऐप वर्ल्ड में फीचर्ड आइटम स्क्रीन के समान स्क्रीन स्लाइड एनीमेशन बनाने के लिए ब्लैकबेरी जेडीई एपीआई का उपयोग कैसे करें? मुझे पता है कि ब्लैकबेरी 5.0 में, ऐसा करने के लिए कुछ संक्रमण एपिस हैं। लेकिन मैं इसे संस्करण 4.6 ओएस के लिए करना चाहता हूं। ब्लैकबेरी बोल्ड में स्क्रॉलिंग बॉल का उपयोग करके इसका अच्छा स्क्रॉलिंग प्रभाव है।ब्लैकबेरी ऐप वर्ल्ड के समान ब्लैकबेरी स्क्रीन स्लाइड एनीमेशन कैसे बनाएं?

धन्यवाद।

उत्तर

4

स्क्रीनशॉट/बिटमैप दृष्टिकोण के लिए एक विकल्प के रूप में छवियों की स्थिति बदलने के लिए समन्वय ...

एक क्लिपिंग क्षेत्र को धक्का देने और ऑफ़सेट ड्राइंग करने के लिए Graphics.pushContext (..)। सर्वोत्तम परिणामों के लिए, आप एक रननेबल में संक्रमण करना चाहते हैं, और इवेंट लॉक पर सिंक्रनाइज़ करना चाहते हैं। इससे यह सुनिश्चित होगा कि आपकी स्क्रीन को संक्रमण के बीच में खारिज कर दिया जा सके।

असहज उदाहरण:

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

हाँ, मुझे लगता है कि मुझे ऐसा कुछ करने की ज़रूरत है, मैंने बिट्स और कोड के टुकड़े अन्य साइटों पर किया है, लेकिन अब तक ऐसा कोई नहीं है जो ऐप वर्ल्ड ऐप की तरह कुछ भी कर रहा है, मुझे इसकी आवश्यकता होगी तब प्रयोग करने के लिए ... धन्यवाद। – dickyj

संबंधित मुद्दे