2012-06-14 22 views
7

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

Scroller scroller = new Scroller(getApplicationContext()); 
    scroller.startScroll(0, 0, 10, 10, 500); 
    for (int i = 0; i < 100; i++) { 
     Log.d("scroller", scroller.getCurrX()+" "+ scroller.getCurrY()); 
    } 

मेरे पास आउटपुट में केवल शून्य है। मेरी गलती कहां है?

+0

कुछ भी नहीं है पाश पाश की प्रगति के रूप में तो सभी मूल्यों रहने के अंदर बदल जाता है वही। –

+0

[एंड्रॉइड: स्क्रॉलर एनीमेशन?] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/5495855/android-scroller-animation) –

+0

दस्तावेज भी देखें। https://developer.android.com/training/gestures/scroll.html – Suragch

उत्तर

6
private class Flinger implements Runnable { 
    private final Scroller scroller; 

    private int lastX = 0; 

    Flinger() { 
     scroller = new Scroller(getActivity()); 
    } 

    void start(int initialVelocity) { 
     int initialX = scrollingView.getScrollX(); 
     int maxX = Integer.MAX_VALUE; // or some appropriate max value in your code 
     scroller.fling(initialX, 0, initialVelocity, 0, 0, maxX, 0, 10); 
     Log.i(TAG, "starting fling at " + initialX + ", velocity is " + initialVelocity + ""); 

     lastX = initialX; 
     getView().post(this); 
    } 

    public void run() { 
     if (scroller.isFinished()) { 
      Log.i(TAG, "scroller is finished, done with fling"); 
      return; 
     } 

     boolean more = scroller.computeScrollOffset(); 
     int x = scroller.getCurrX(); 
     int diff = lastX - x; 
     if (diff != 0) { 
      scrollingView.scrollBy(diff, 0); 
      lastX = x; 
     } 

     if (more) { 
      getView().post(this); 
     } 
    } 

    boolean isFlinging() { 
     return !scroller.isFinished(); 
    } 

    void forceFinished() { 
     if (!scroller.isFinished()) { 
      scroller.forceFinished(true); 
     } 
    } 
} 

startScroll() में https://stackoverflow.com/a/6219382/1351347

4

अंतिम पैरामीटर से लिया अवधि है। शायद अपने for -loop स्क्रोलर कुछ भी नहीं किया जाता है :) और यह भी आप computeScrollOffset() बुलाना चाहिए इस कोड का प्रयास करें इससे पहले कि पूर्ण होने पर, यह काम करता है:

Scroller scroller = new Scroller(getApplicationContext()); 
scroller.startScroll(0, 0, 100, 100, 500); 
while (!scroller.isFinished()) { 
    Log.d("scroller", scroller.getCurrX() + " " + scroller.getCurrY()); 
    scroller.computeScrollOffset(); 
} 
संबंधित मुद्दे