zoukankan      html  css  js  c++  java
  • 修改ViewPager调用setCurrentItem时,滑屏的速度

    原文摘自: 修改ViewPager调用setCurrentItem时,滑屏的速度

    在使用ViewPager的过程中,有需要直接跳转到某一个页面的情况,这个时候就需要用到ViewPager的setCurrentItem方法了,它的意思是跳转到ViewPager的指定页面,但在使用这个方法的时候有个问题,跳转的时候有滑动效果,当需要从当前页面跳转到其它页面时,跳转页面跨度过大、或者ViewPager每个页面的视觉效果相差较大时,通过这种方式实现ViewPager跳转显得很不美观,怎么办呢,我们可以去掉在使用ViewPager的setCurrentItem方法时的滑屏速度,具体实现如下:

    一、自定义一个Scroll类,用于控制ViewPager滑动速度:

    [java] view plaincopy
     
    1. <span style="font-size:18px">import android.content.Context;  
    2. import android.view.animation.Interpolator;  
    3. import android.widget.Scroller;  
    4.   
    5. public class FixedSpeedScroller extends Scroller {  
    6.     private int mDuration = 0;  
    7.   
    8.     public FixedSpeedScroller(Context context) {  
    9.         super(context);  
    10.     }  
    11.   
    12.     public FixedSpeedScroller(Context context, Interpolator interpolator) {  
    13.         super(context, interpolator);  
    14.     }  
    15.   
    16.     public FixedSpeedScroller(Context context, Interpolator interpolator, boolean flywheel) {  
    17.         super(context, interpolator, flywheel);  
    18.     }  
    19.   
    20.   
    21.     @Override  
    22.     public void startScroll(int startX, int startY, int dx, int dy, int duration) {  
    23.         super.startScroll(startX, startY, dx, dy, mDuration);  
    24.     }  
    25.   
    26.     @Override  
    27.     public void startScroll(int startX, int startY, int dx, int dy) {  
    28.         super.startScroll(startX, startY, dx, dy, mDuration);  
    29.     }  
    30. }</span>  


    二、在初始化ViewPager时,对ViewPager作如下设置:

    [java] view plaincopy
     
    1. <span style="font-size:18px">/** 
    2.      * 设置ViewPager的滑动速度 
    3.      *  
    4.      * */  
    5.     private void setViewPagerScrollSpeed( ){  
    6.         try {  
    7.             Field mScroller = null;  
    8.             mScroller = ViewPager.class.getDeclaredField("mScroller");  
    9.             mScroller.setAccessible(true);   
    10.             FixedSpeedScroller scroller = new FixedSpeedScroller( mViewPager.getContext( ) );  
    11.             mScroller.set( mViewPager, scroller);  
    12.         }catch(NoSuchFieldException e){  
    13.               
    14.         }catch (IllegalArgumentException e){  
    15.               
    16.         }catch (IllegalAccessException e){  
    17.               
    18.         }  
    19.     }</span>  


    运行代码后你就发现,它是直接跳转,没有滑屏效果了。

  • 相关阅读:
    HashMap按键排序和按值排序
    LeetCode 91. Decode Ways
    LeetCode 459. Repeated Substring Pattern
    JVM
    LeetCode 385. Mini Parse
    LeetCode 319. Bulb Switcher
    LeetCode 343. Integer Break
    LeetCode 397. Integer Replacement
    LeetCode 3. Longest Substring Without Repeating Characters
    linux-网络数据包抓取-tcpdump
  • 原文地址:https://www.cnblogs.com/YangBinChina/p/3540612.html
Copyright © 2011-2022 走看看