port.v4.view.ViewPager;
importandroid.support.v4.view.ViewPager.OnPageChangeListener;
importandroid.view.LayoutInflater;
importandroid.view.View;
importandroid.view.animation.Animation;
importandroid.view.animation.TranslateAnimation;
importandroid.widget.ImageView;
publicclassViewpagerextendsActivity {
privateViewPager mViewPager;//声明ViewPager对象
privatePagerTitleStrip mPagerTitleStrip;//声明动画标题
privateImageView mPageImg;// 动画图片
privateintcurrIndex =0;//当前页面
privateImageView mPage0,mPage1,mPage2,mPage3,mPage4,mPage5,mPage6,mPage7,mPage8;//声明导航图片对象
@Override
publicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewpager);
mViewPager = (ViewPager)findViewById(R.id.viewpager);
mViewPager.setOnPageChangeListener(newMyOnPageChangeListener());
mPagerTitleStrip = (PagerTitleStrip)findViewById(R.id.pagertitle);
mPage0 = (ImageView)findViewById(R.id.page0);
mPage1 = (ImageView)findViewById(R.id.page1);
mPage2 = (ImageView)findViewById(R.id.page2);
mPage3 = (ImageView)findViewById(R.id.page3);
mPage4 = (ImageView)findViewById(R.id.page4);
mPage5 = (ImageView)findViewById(R.id.page5);
mPage6 = (ImageView)findViewById(R.id.page6);
mPage7 = (ImageView)findViewById(R.id.page7);
mPage8 = (ImageView)findViewById(R.id.page8);
//将要分页显示的View装入数组中
LayoutInflater mLi = LayoutInflater.from(this);
View view1 = mLi.inflate(R.layout.view1, null);
View view2 = mLi.inflate(R.layout.view2, null);
View view3 = mLi.inflate(R.layout.view3, null);
View view4 = mLi.inflate(R.layout.view4, null);
View view5 = mLi.inflate(R.layout.view5, null);
View view6 = mLi.inflate(R.layout.view6, null);
View view7 = mLi.inflate(R.layout.view7, null);
View view8 = mLi.inflate(R.layout.view8, null);
View view9 = mLi.inflate(R.layout.view9, null);
//每个页面的view数据
finalArrayList views =newArrayList();
views.add(view1);
views.add(view2);
views.add(view3);
views.add(view4);
views.add(view5);
views.add(view6);
views.add(view7);
views.add(view8);
views.add(view9);
//每一个也没得标题
finalArrayList titles =newArrayList();
titles.add("①");
titles.add("②");
titles.add("③");
titles.add("④");
titles.add("⑤");
titles.add("⑥");
titles.add("⑦");
titles.add("⑧");
titles.add("⑨");
//填充ViewPager的数据适配器,我们重写即可
PagerAdapter mPagerAdapter = newPagerAdapter() {
@Override
publicbooleanisViewFromObject(View arg0, Object arg1) {
returnarg0 == arg1;
}
@Override
publicintgetCount() {
returnviews.size();
}
@Override
publicvoiddestroyItem(View container,intposition, Object object) {
((ViewPager)container).removeView(views.get(position));
}
@Override
publicCharSequence getPageTitle(intposition) {
returntitles.get(position);
}
@Override
publicObject instantiateItem(View container,intposition) {
((ViewPager)container).addView(views.get(position));
returnviews.get(position);
}
};
mViewPager.setAdapter(mPagerAdapter);//与ListView用法相同,设置重写的Adapter。这样就实现了ViewPager的滑动效果。
}
publicclassMyOnPageChangeListenerimplementsOnPageChangeListener {
publicvoidonPageSelected(intarg0) {//参数arg0为选中的View
Animation animation = null;//声明动画对象
switch(arg0) {
case0://页面一
mPage0.setImageDrawable(getResources().getDrawable(R.drawable.page_now));//进入第一个导航页面,小圆点为选中状态,下一个页面的小圆点是未选中状态。
mPage1.setImageDrawable(getResources().getDrawable(R.drawable.page));
if(currIndex == arg0+1) {
animation = newTranslateAnimation(arg0+1, arg0,0,0);//圆点移动效果动画,从当前View移动到下一个View
}
break;
case1://页面二
mPage1.setImageDrawable(getResources().getDrawable(R.drawable.page_now));//当前View
mPage0.setImageDrawable(getResources().getDrawable(R.drawable.page));//上一个View
mPage2.setImageDrawable(getResources().getDrawable(R.drawable.page));//下一个View
if(currIndex == arg0-1) {//如果滑动到上一个View
animation = newTranslateAnimation(arg0-1, arg0,0,0);//圆点移动效果动画,从当前View移动到下一个View
} elseif(currIndex == arg0+1) {//圆点移动效果动画,从当前View移动到下一个View,下同。
animation = newTranslateAnimation(arg0+1, arg0,0,0);
}
break;
case2://页面三
mPage2.setImageDrawable(getResources().getDrawable(R.drawable.page_now));
mPage1.setImageDrawable(getResources().getDrawable(R.drawable.page));
mPage3.setImageDrawable(getResources().getDrawable(R.drawable.page));
if(currIndex == arg0-1) {
animation = newTranslateAnimation(arg0-1, arg0,0,0);
} elseif(currIndex == arg0+1) {
animation = newTranslateAnimation(arg0+1, arg0,0,0);
}
break;
case3:
mPage3.setImageDrawable(getResources().getDrawable(R.drawable.page_now));
mPage4.setImageDrawable(getResources().getDrawable(R.drawable.page));
mPage2.setImageDrawable(getResources().getDrawable(R.drawable.page));
if(currIndex == arg0-1) {
animation = newTranslateAnimation(arg0-1, arg0,0,0);
} elseif(currIndex == arg0+1) {
animation = newTranslateAnimation(arg0+1, arg0,0,0);
}
break;
case4:
mPage4.setImageDrawable(getResources().getDrawable(R.drawable.page_now));
mPage3.setImageDrawable(getResources().getDrawable(R.drawable.page));
mPage5.setImageDrawable(getResources().getDrawable(R.drawable.page));
if(currIndex == arg0-1) {
animation = newTranslateAnimation(arg0-1, arg0,0,0);
} elseif(currIndex == arg0+1) {
animation = newTranslateAnimation(arg0+1, arg0,0,0);
}
break;
case5:
mPage5.setImageDrawable(getResources().getDrawable(R.drawable.page_now));
mPage4.setImageDrawable(getResources().getDrawable(R.drawable.page));
mPage6.setImageDrawable(getResources().getDrawable(R.drawable.page));
if(currIndex == arg0-1) {
animation = newTranslateAnimation(arg0-1, arg0,0,0);
} elseif(currIndex == arg0+1) {
animation = newTranslateAnimation(arg0+1, arg0,0,0);
}
break;
case6:
mPage6.setImageDrawable(getResources().getDrawable(R.drawable.page_now));
mPage5.setImageDrawable(getResources().getDrawable(R.drawable.page));
mPage7.setImageDrawable(getResources().getDrawable(R.drawable.page));
if(currIndex == arg0-1) {
animation = newTranslateAnimation(arg0-1, arg0,0,0);
} elseif(currIndex == arg0+1) {
animation = newTranslateAnimation(arg0+1, arg0,0,0);
}
break;
case7:
mPage7.setImageDrawable(getResources().getDrawable(R.drawable.page_now));
mPage8.setImageDrawable(getResources().getDrawable(R.drawable.page));
mPage6.setImageDrawable(getResources().getDrawable(R.drawable.page));
if(currIndex == arg0-1) {
animation = newTranslateAnimation(arg0-1, arg0,0,0);
} elseif(currIndex == arg0+1) {
animation = newTranslateAnimation(arg0+1, arg0,0,0);
}
break;
case8:
mPage8.setImageDrawable(getResources().getDrawable(R.drawable.page_now));
mPage7.setImageDrawable(getResources().getDrawable(R.drawable.page));
if(currIndex == arg0-1) {
animation = newTranslateAnimation(arg0-1, arg0,0,0);
}
break;
}
currIndex = arg0;//设置当前View
animation.setFillAfter(true);// True:设置图片停在动画结束位置
animation.setDuration(300);//设置动画持续时间
}
publicvoidstartbutton(View v) {
Intent intent = newIntent();
intent.setClass(Viewpager.this,Viewdoor.class);//进入到开门效果的Activity
startActivity(intent);
this.finish();//结束本Activity
}
}