1

我需要自動滾動HorizontalScrollView滾動。Android Horizo​​ntalScrollView在循環中重複自動滾動

通過自動,我的意思是它應該:

  1. 順利從左自動滾動到右
  2. 一旦右邊緣到達,平滑滾動向後即從右到左。
  3. 重複1 & 2無限。

我試過下面的實現,它似乎沒有完全工作。 (視圖滾動從L至R,但未能來自R滾動到L)

Timer timer = new Timer("horizontalScrollViewTimer"); 
timer.scheduleAtFixedRate(new TimerTask() { 
    public void run() { 
     runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 

       if (horizontalScrollView.canScrollHorizontally(View.FOCUS_RIGHT)) { 
        horizontalScrollView.smoothScrollBy(5, 0); 
       } else { 
        while (horizontalScrollView.canScrollHorizontally(View.FOCUS_LEFT)) { 
         horizontalScrollView.smoothScrollBy(-5, 0); 
         if (!horizontalScrollView.canScrollHorizontally(View.FOCUS_LEFT)) { 
          break; 
         } 
        } 
       } 

      } 
     }); 
    } 
}, 3000, 50); 

任何幫助將不勝感激。 TIA。

回答

0

修改和嘗試這個....

private boolean scrollingLeft = false; 

.... 

Timer timer = new Timer("horizontalScrollViewTimer"); 
    timer.scheduleAtFixedRate(new TimerTask() { 
     @Override 
     public void run() { 
      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        if (scrollingLeft) { 
         if (horizontalScrollView.getScrollX() == 0) { 
          horizontalScrollView.smoothScrollBy(5, 0); 
          scrollingLeft = false; 
         } else { 
          horizontalScrollView.smoothScrollBy(-5, 0); 
         } 
        } else { 
         if (horizontalScrollView.canScrollHorizontally(View.FOCUS_RIGHT)) { 
          horizontalScrollView.smoothScrollBy(5, 0); 
         } else { 
          horizontalScrollView.smoothScrollBy(-5, 0); 
          scrollingLeft = true; 
         } 
        } 
       } 
      }); 
     } 
    }, 3000, 50); 
相關問題