`

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  
能修改滑动的时间 ,我试了下  很管用

相关推荐

Global site tag (gtag.js) - Google Analytics