`

ViewPager 滑动速度设置,并实现点击按钮滑动

阅读更多
第一个界面图:
[img]

[/img]

滑动过程中效果图:
[img]

[/img]

最后一个界面图:
[img]

[/img]

主Activity:
package blog.csdn.net.liyulei316686082;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.opengl.Visibility;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.AccelerateInterpolator;
import android.widget.Button;
import android.widget.Toast;

public class ViewPagerDemoActivity extends Activity {
    /** Called when the activity is first created. */
	
	private ViewPager mViewPager = null;
	private Button mLeft = null;
	private Button mRight = null;
	
	private static final int PAGER_NUM = 10;//10个页面
	private int mCurrentViewID = 0;         //当前页面
	private int mMyDuration = 100;          //持续时间
	
	private FixedSpeedScroller mScroller;
	private YLeiPageAdapter mYLeiPageAdapter = null;
	private List<View> mListViews;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        
       
        
        mViewPager = (ViewPager)findViewById(R.id.viewpager);
        mLeft = (Button)findViewById(R.id.left); 
        mRight = (Button)findViewById(R.id.right); 
        mLeft.setOnClickListener(mOnClickListener);
		mRight.setOnClickListener(mOnClickListener);
		
		mLeft.setVisibility(View.INVISIBLE);
		
		mListViews = new ArrayList<View>();
		for(int i= 1; i<= PAGER_NUM; i++){
			MyPagerView view = new MyPagerView(this, i);
			mListViews.add(view);
		}
		mYLeiPageAdapter = new YLeiPageAdapter(this, mListViews);
		mViewPager.setAdapter(mYLeiPageAdapter);
		mViewPager.setOnPageChangeListener(mOnPageChangeListener);
		
		/*主要代码段*/
		try {             
			Field mField = ViewPager.class.getDeclaredField("mScroller");             
			mField.setAccessible(true);   
			 //设置加速度 ,通过改变FixedSpeedScroller这个类中的mDuration来改变动画时间(如mScroller.setmDuration(mMyDuration);)  
			mScroller = new FixedSpeedScroller(mViewPager.getContext(), new AccelerateInterpolator());         
			mField.set(mViewPager, mScroller);         
			} catch (Exception e) {         
				e.printStackTrace();
			} 
    }
    
    private OnClickListener mOnClickListener = new OnClickListener(){
		@Override
		public void onClick(View v) {
			switch (v.getId()){
			case R.id.left:
				if(mCurrentViewID > 0){
					mCurrentViewID--;
					mViewPager.setCurrentItem(mCurrentViewID, true);
					Toast.makeText(getApplicationContext(), mCurrentViewID+"", 0).show();
					mMyDuration -= 100;
					mScroller.setmDuration(1000);
					Log.i("TAG", "mCurrentViewID==="+mCurrentViewID);
				}
				
				break;
			case R.id.right:
				if(mCurrentViewID < PAGER_NUM-1){
					mCurrentViewID++;
					mViewPager.setCurrentItem(mCurrentViewID, true);
					mMyDuration += 100;
					mScroller.setmDuration(1000);
					Log.i("TAG", "mCurrentViewID==="+mCurrentViewID);
				}
				
				break;
			}
			
		}};
		
		private OnPageChangeListener mOnPageChangeListener = new OnPageChangeListener(){

			@Override
			public void onPageScrollStateChanged(int arg0) {
				// TODO Auto-generated method stub
			}

			@Override
			public void onPageScrolled(int arg0, float arg1, int arg2) {
				// TODO Auto-generated method stub
			}
			@Override
			public void onPageSelected(int currentID) {
				// TODO Auto-generated method stub
				//mCurrentViewID = currentID;
				if(currentID==0){
					mLeft.setVisibility(View.INVISIBLE);
				}
				if(currentID!=0){
					mLeft.setVisibility(View.VISIBLE);
				}
				if(currentID==mListViews.size()-1){
					mRight.setVisibility(View.INVISIBLE);
				}
				if(currentID!=mListViews.size()-1){
					mRight.setVisibility(View.VISIBLE);
				}
			}};
}


同志们,sorry,sorry,我的错,请吧//mCurrentViewID = currentID;   这个注释放开,要不手势的界面与Button的操控就不同步了      

修改按钮位置(位于屏幕两边)效果图:
[img]

[/img]
这样的效果,请下第二个 rar
  • 大小: 19.8 KB
  • 大小: 20.6 KB
  • 大小: 20.4 KB
  • 大小: 22.4 KB
分享到:
评论
1 楼 yxy491012276 2013-08-09  
能修改滑动的时间 ,我试了下  很管用

相关推荐

    ViewPager 滑动速度设置,并实现点击按钮滑动!

    本篇文章将深入探讨如何调整ViewPager的滑动速度以及如何通过按钮实现页面的滑动。 首先,我们要理解ViewPager的工作原理。ViewPager依赖于`PagerAdapter`(如`FragmentPagerAdapter`或`PagerAdapter`)来加载和...

    ViewPager的使用方法(实现左右滑动切换页面)

    最后,在Activity或Fragment中设置ViewPager的Adapter,并根据需求配置其滑动效果: ```java ViewPager viewPager = findViewById(R.id.view_pager); List&lt;Fragment&gt; fragments = new ArrayList(); // 添加Fragment...

    ViewPager实现自定义左右滑动效果

    4. **设置Adapter**:在你的Activity中,实例化ViewPager,并将之前创建的PagerAdapter设置给它。例如: ```java ViewPager viewPager = findViewById(R.id.view_pager); viewPager.setAdapter(new ...

    SlidingMenu和ViewPager滑动处理Demo

    5. 在`SlidingMenu`的菜单项中,你可以添加按钮或者其他触发器,当用户点击时,切换`ViewPager`的当前页面。 最后,为了提高用户体验,你可能还需要考虑一些额外的细节,比如添加指示器来显示当前页面,或者根据...

    Android之禁止ViewPager滑动实现实例

    实现禁止ViewPager滑动的方法是通过自定义一个不滑动的ViewPager控件,继承于ViewPager,并重写其onTouchEvent方法,使其返回true,以便忽略触摸事件。下面是一个简单的示例代码: public class MyViewPager ...

    viewpager滑动引导页

    【标题】"viewpager滑动引导页"是一个常见的Android应用设计模式,用于向初次使用应用的用户介绍其主要功能和操作流程。ViewPager是Android SDK中的一个组件,它允许用户在多个页面间进行平滑的左右滑动切换,非常...

    ViewPager自定义漂亮滑动卡片

    在Android开发中,ViewPager是一种非常常用的组件,它允许用户通过左右滑动来浏览多个页面,非常适合用来实现诸如轮播图、Tab切换等效果。在这个"ViewPager自定义漂亮滑动卡片"的主题中,我们将深入探讨如何利用...

    ViewPager加载自定义View,按钮也可以控制滑动

    本篇文章将深入探讨如何利用ViewPager加载自定义View,并通过左右按钮控制页面滑动,同时实现点击删除按钮删除当前显示内容的功能。 首先,我们需要了解ViewPager的基本用法。ViewPager继承自ViewGroup,它会根据...

    安卓欢迎界面引导页面viewpager相关-ViewPage滑动加载大图和点击关注效果.rar

    【描述】提到的是一个关于ViewPager实现的滑动加载大图和点击关注效果的示例项目。这个项目可能包含多个页面,每个页面展示一张大图,并且在用户交互时,例如点击某个元素(可能是“关注”按钮),可以触发特定的...

    使用ViewPager和Fragment实现底部导航滑动Demo

    现在,当用户点击底部导航栏的按钮时,`ViewPager`会自动切换到对应的`Fragment`,并且`TabLayout`会更新当前选中的标签。 在实际开发中,`BaiDuPager`可能是一个已经封装好的库或者示例项目,它可能包含了上述功能...

    TabLayout+ViewPager,切换页面,可点击,可滑动

    `TabLayout` 提供了可自定义的标签,用户可以通过点击这些标签来切换不同的页面,而 `ViewPager` 则负责管理这些页面的滑动切换效果。在本项目中,我们将探讨如何结合使用这两个组件,实现既可点击又可滑动的页面...

    安卓抽屉效果相关-带抽屉滑动效果使用ViewPager滑动页面使用逆波兰式对表达式进行计算支持四则运算.rar

    我们无法看到具体的实现细节,但可以推测开发者可能创建了一个包含抽屉菜单的主活动,里面包含一个`ViewPager`展示多个页面,每个页面上可能有一个输入框供用户输入RPN表达式,点击按钮后调用`TestCalculator`进行...

    RadioButton和ViewPager实现页面滑动效果

    2. 设置OnCheckedChangeListener:为RadioGroup添加一个OnCheckedChangeListener监听器,当用户点击RadioButton时,可以通过事件回调获取选中的按钮,并据此更新ViewPager的当前页面。 3. 绑定ViewPager和...

    Android实现ViewPager+RadioGroup滑动效果

    `ViewPager`通常用于实现页面间的左右滑动切换,而`RadioGroup`则是用来管理一组单选按钮(RadioButton),让用户在多个选项中选择一个。本篇文章将深入探讨如何在Android应用中实现`ViewPager`与`RadioGroup`的滑动...

    viewpager实现最后一页滑动到activity

    在本案例中,我们需要实现一个功能,即用户在主页面点击按钮后,显示三张可以左右滑动的图片,当滑动到最后一页时,再次滑动则返回到带有按钮的初始页面。 首先,我们需要理解ViewPager的工作原理。ViewPager是...

    ActionBarSherlock与Fragment及ViewPager结合实现滑动界面效果

    接下来,将`ViewPager`添加到你的主Activity布局中,并在Activity的`onCreate()`方法中设置`ViewPager`的适配器。适配器将链接到之前创建的`FragmentPagerAdapter`实例,这样`ViewPager`就知道了应该加载哪些`...

    RadioGroup+ViewPager左右滑动

    在Android开发中,RadioGroup和ViewPager是两种常用的组件,它们分别用于实现单选按钮的管理以及页面间的滑动切换。本篇文章将详细讲解如何结合RadioGroup和ViewPager来创建一个可以左右滑动并且通过点击RadioGroup...

Global site tag (gtag.js) - Google Analytics