2014-07-07 99 views
0

我做了一個平滑的滾動到定義的位置。如何知道滾動動畫何時結束?

smoothScrollTo(0, 1000); 

此方法執行後 - 我做了幾個操作。但我想做他們 - 滾動動畫結束後。

我想檢測滾動動畫何時完成。我該怎麼做?

+0

不知道,但你可以用'onScrollChanged'? [參考](http://stackoverflow.com/a/1800267/1777090) –

+0

@PurpleDroid yeap,我可以。但也許存在更簡單的方法? :) –

+0

確定:)不知道它然後:) –

回答

2

我必須做這樣的,

final ScrollView mScrollView = (ScrollView) findViewById(R.id.scrollview); 
    layoutSponsorBax.setVisibility(View.VISIBLE); 

    Timer timer = new Timer(); 

    TimerTask task = new TimerTask() { 
     @Override 
     public void run() { 
      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        ViewGroup relativeL = (ViewGroup) mScrollView 
          .getChildAt(mScrollView.getChildCount() - 1); 
        final int sVH = mScrollView.getBottom() 
          - mScrollView.getTop(); 

        View notePad = relativeL.getChildAt(2); 
        final int svHeight = 800; 
        Log.i("svHeight", "svHeight : " + svHeight); 
        final float duration = 2000; 
        ctt = new CountDownTimer((int) duration, 1) { 
         int temp = 0; 


         public void onTick(long millisUntilFinished) { 
          try { 
           Log.i("millisUntilFinished", 
             "millisUntilFinished : " 
               + millisUntilFinished); 
           Log.i("Height- Temp", "Temp : " + temp); 
           mScrollView.scrollTo(0, temp); 
           temp = (int) (((svHeight) - (millisUntilFinished/duration) 
             * (svHeight))); 
          } catch (ArithmeticException e) { 
           e.printStackTrace(); 
          } catch (Exception e) { 
           e.printStackTrace(); 
          } 
         } 

         public void onFinish() { 
         } 
        }.start(); 
       } 
      }); 
     } 
    }; 
    int duration = 1400; 
    timer.schedule(task, duration); 

請這可能是幫助你

+0

其實我創建的解決方案。默認動畫時間爲250毫秒。 –

+0

但你的答案其實是對的。我可以使用Timer任務來處理動畫,所以加上一個。 –