android_zhang 发表于 2013-1-30 04:01:41

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

第一个界面图:

http://dl.iteye.com/upload/attachment/0077/1321/7693a17c-92ac-31eb-a720-2a31f8c5d77d.png


滑动过程中效果图:

http://dl.iteye.com/upload/attachment/0077/1323/8f2aa5e2-ee4b-3b15-b52a-2aeb4bc5cdd3.png


最后一个界面图:

http://dl.iteye.com/upload/attachment/0077/1325/dd86799e-f79a-35ff-a99b-6fb27bcdcdc0.png


主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(){@Overridepublic 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(){@Overridepublic void onPageScrollStateChanged(int arg0) {// TODO Auto-generated method stub}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {// TODO Auto-generated method stub}@Overridepublic 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的操控就不同步了 http://www.agoit.com/images/smiles/icon_eek.gif http://www.agoit.com/images/smiles/icon_eek.gif http://www.agoit.com/images/smiles/icon_eek.gif http://www.agoit.com/images/smiles/icon_eek.gif http://www.agoit.com/images/smiles/icon_eek.gif http://www.agoit.com/images/smiles/icon_eek.gif

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

http://dl.iteye.com/upload/attachment/0077/1396/1bb1eb08-49df-3d84-b5ca-e901e7ebf2ab.png

这样的效果,请下第二个 rar
页: [1]
查看完整版本: ViewPager 滑动速度设置,并实现点击按钮滑动