Viewpager设置滑动速率以及外部按钮控制viewpager的左右切换
来源:互联网 发布:硅藻泥排行榜 知乎 编辑:程序博客网 时间:2024/06/09 21:40
Viewpager设置滑动速率以及外部按钮控制viewpager的左右切换
设置viewpager外部按钮控制左右滑动很简单直接设置setcurrentitem()就可以了但是这样的话点击会发现viewpager的滑动速率非常快所以我们需要修改滑动速率下面是代码
我们需要用反射机制将viewpager的滑动事件拿出来换成自己自定义的
自定义的设置滑动速率的类
package com.wquant.quanttrade.viewpagerspeed;import android.content.Context;import android.view.animation.Interpolator;import android.widget.Scroller;/** * 设置viewpagersetcurrentitem的滑动速率 * @author zhaomy * */public class FixedSpeedScroller extends Scroller { private int mDuration = 1500; public FixedSpeedScroller(Context context) { super(context); } public FixedSpeedScroller(Context context, Interpolator interpolator) { super(context, interpolator); } @Override public void startScroll(int startX, int startY, int dx, int dy, int duration) { // Ignore received duration, use fixed one instead super.startScroll(startX, startY, dx, dy, mDuration); } @Override public void startScroll(int startX, int startY, int dx, int dy) { // Ignore received duration, use fixed one instead super.startScroll(startX, startY, dx, dy, mDuration); } public void setmDuration(int time) { mDuration = time; } public int getmDuration() { return mDuration; }}
在初始化Viewpager之后利用反射机制拿到滑动事件
/** 初始化Viewpager */ private void initViewpager() { pager = (ViewPager) findViewById(R.id.viewpager_stock); List<View> list = new ArrayList<View>(); for (int i = 0; i < 10; i++) { list.add(LayoutInflater.from(StockMarketActivity.this).inflate( R.layout.grid_item, null)); } MyViewPagerAdapter adapter = new MyViewPagerAdapter(list, StockMarketActivity.this, Data); pager.setAdapter(adapter); /** * 设置加速度 ,通过改变FixedSpeedScroller这个类中的mDuration来改变动画时间(如mScroller. * setmDuration(mMyDuration) */ try { Field mField = ViewPager.class.getDeclaredField("mScroller"); mField.setAccessible(true); mScroller = new FixedSpeedScroller(pager.getContext(), new AccelerateInterpolator()); mField.set(pager, mScroller); } catch (Exception e) { e.printStackTrace(); } }
在设置按钮点击切换的时候设置速率
case R.id.stock_left: if (pager.getCurrentItem() != 0) { pager.setCurrentItem(pager.getCurrentItem() - 1, true); mScroller.setmDuration(2000); } break;case R.id.stock_right: if (pager.getCurrentItem() < 9) { pager.setCurrentItem(pager.getCurrentItem() + 1, true); mScroller.setmDuration(2000); } break;
1 0
- Viewpager设置滑动速率以及外部按钮控制viewpager的左右切换
- 禁用ViewPager左右滑动(只通过按钮切换)
- 设置ViewPager不能通过屏幕左右滑动切换页面
- 设置ViewPager不可左右滑动
- Android ViewPager禁止左右滑动以及点击选项卡切换闪烁的问题
- ViewPager的滑动切换
- ViewPager左右滑动页面,下面的按钮跟着动态变化
- ViewPager的使用方法(实现左右滑动切换页面)
- viewpager禁用左右滑动和去掉中间的切换页面
- ViewPager取消左右滑动切换功能
- android ViewPager页面左右滑动切换
- android ViewPager页面左右滑动切换
- ViewPager取消左右滑动切换功能
- ViewPager撤消左右滑动切换功能
- ViewPager禁止左右滑动切换功能
- 禁止ViewPager左右滑动,只能点击切换
- TabLayout+ViewPager撤消左右滑动切换功能
- ViewPager撤消左右滑动切换功能
- 浅谈做web项目的一般步骤(根据新闻发布系统)
- Codeforces Round #320 (Div. 2) B. Finding Team Member
- POJ 3507 Judging Olympia 模拟 水
- 微信公众号运营辅助工具汇总
- linux进程(四)之 退出
- Viewpager设置滑动速率以及外部按钮控制viewpager的左右切换
- CentOS6.5定制系统iso制作
- 关于学习与问题解决的一些认识
- myeclipse script标签背景设置
- unity3d NGUI满足不了需求,修改源代码记录
- NOIP2013 表达式求值
- 多线程出现的问题
- Android通过百度地图API用Service和Alarm在后台定时获取地理位置信息
- 字节流与字符流的区别