1

HorizontalScrollViewを自動的にスクロールさせる必要があります。右端に達すると逆方向、すなわち右から左へ、スムーズなスクロールを Android Horizo​​ntalScrollViewループ内のオートスクロールを繰り返し実行する

  • を右に自動的に左から

    1. スムーズスクロール:自動的にすることで

      は、私はそれべき意味します。

    2. リピート1 & 2無限に。

    次の実装を試したところ、完全に機能していないようです。

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

    任意の助けを理解されるであろう(LからRへのビュースクロール、しかしはLにRからスクロールすることができません)。 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); 
    
    これを変更してみてください
    関連する問題