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]