效果图:
主要代码:
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.RotateAnimation;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.LinearLayout;
public class MainActivity extends Activity {
private ViewPagerAdapter adapter;
private ViewPager viewpager;
private LinearLayout layout;
private int LastPageIndex=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewpager=(ViewPager)findViewById(R.id.main_viewpager);
layout=(LinearLayout)findViewById(R.id.layout_index);
adapter=new ViewPagerAdapter(getAdapterViews(new int[]{R.drawable.one,R.drawable.two,R.drawable.three,R.drawable.four,R.drawable.five}));
viewpager.setAdapter(adapter);
viewpager.setOnPageChangeListener(getPageChangerListener());
setLayoutIndexViews(5);
}
private OnPageChangeListener getPageChangerListener() {
// TODO Auto-generated method stub
return new OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// TODO Auto-generated method stub
ImageView mImageView1=(ImageView)layout.getChildAt(position);
mImageView1.setImageResource(R.drawable.index_check);
ImageView mImageView2=(ImageView)layout.getChildAt(LastPageIndex);
mImageView2.setImageResource(R.drawable.index_nor);
if(LastPageIndex>position){
View view=layout.getChildAt(position);
View view2=layout.getChildAt(LastPageIndex);
RotateAnimation mRotateAnimation2=new RotateAnimation(0.0f, 180.0f,view2.getWidth()/2,view2.getHeight()/2);
RotateAnimation mRotateAnimation=new RotateAnimation(360.0f, 180.0f,view.getWidth()/2,view.getHeight()/2);
mRotateAnimation.setDuration(500);
mRotateAnimation2.setDuration(500);
view2.setAnimation(mRotateAnimation);
view.startAnimation(mRotateAnimation);
view2.startAnimation(mRotateAnimation);
}else if(LastPageIndex<position){
View view=layout.getChildAt(position);
View view2=layout.getChildAt(LastPageIndex);
RotateAnimation mRotateAnimation2=new RotateAnimation(360.0f, 180.0f,view2.getWidth()/2,view2.getHeight()/2);
RotateAnimation mRotateAnimation=new RotateAnimation(180.0f, 360.0f,view.getWidth()/2,view.getHeight()/2);
mRotateAnimation.setDuration(500);
mRotateAnimation2.setDuration(500);
view2.setAnimation(mRotateAnimation);
view.startAnimation(mRotateAnimation);
view2.startAnimation(mRotateAnimation);
}
LastPageIndex=position;
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
};
}
private ArrayList<View> getAdapterViews(int ...params){
ArrayList<View> list=new ArrayList<View>();
LayoutParams mLayoutParams=new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
for (int i = 0; i < params.length; i++) {
ImageView mImageView=new ImageView(this);
mImageView.setLayoutParams(mLayoutParams);
mImageView.setScaleType(ScaleType.FIT_XY);
mImageView.setBackgroundResource(params[i]);
list.add(mImageView);
}
return list;
}
private void setLayoutIndexViews(int size){
for (int i = 0; i < size; i++) {
ImageView mImageView=new ImageView(this);
LayoutParams mLayoutParams=new LayoutParams(45,45);
mImageView.setPadding(5, 5, 5, 5);
mImageView.setLayoutParams(mLayoutParams);
if(i!=0){
mImageView.setImageResource(R.drawable.index_nor);
}else{
mImageView.setImageResource(R.drawable.index_check);
}
layout.addView(mImageView);
}
}
}