第一个界面图:
[img]
[img]http://dl.iteye.com/upload/attachment/0077/1321/7693a17c-92ac-31eb-a720-2a31f8c5d77d.png[/img]
[/img]
滑动过程中效果图:
[img]
[img]http://dl.iteye.com/upload/attachment/0077/1323/8f2aa5e2-ee4b-3b15-b52a-2aeb4bc5cdd3.png[/img]
[/img]
最后一个界面图:
[img]
[img]http://dl.iteye.com/upload/attachment/0077/1325/dd86799e-f79a-35ff-a99b-6fb27bcdcdc0.png[/img]
[/img]
主Activity:
同志们,sorry,sorry,我的错,请吧//mCurrentViewID = currentID; 这个注释放开,要不手势的界面与Button的操控就不同步了 :shock: :shock: :shock: :shock: :shock: :shock:
修改按钮位置(位于屏幕两边)效果图:
[img]
[img]http://dl.iteye.com/upload/attachment/0077/1396/1bb1eb08-49df-3d84-b5ca-e901e7ebf2ab.png[/img]
[/img]
这样的效果,请下第二个 rar
[img]
[img]http://dl.iteye.com/upload/attachment/0077/1321/7693a17c-92ac-31eb-a720-2a31f8c5d77d.png[/img]
[/img]
滑动过程中效果图:
[img]
[img]http://dl.iteye.com/upload/attachment/0077/1323/8f2aa5e2-ee4b-3b15-b52a-2aeb4bc5cdd3.png[/img]
[/img]
最后一个界面图:
[img]
[img]http://dl.iteye.com/upload/attachment/0077/1325/dd86799e-f79a-35ff-a99b-6fb27bcdcdc0.png[/img]
[/img]
主Activity:
package blog.youkuaiyun.com.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的操控就不同步了 :shock: :shock: :shock: :shock: :shock: :shock:
修改按钮位置(位于屏幕两边)效果图:
[img]
[img]http://dl.iteye.com/upload/attachment/0077/1396/1bb1eb08-49df-3d84-b5ca-e901e7ebf2ab.png[/img]
[/img]
这样的效果,请下第二个 rar