Android ViewPager 引导页的一种效果

效果图:


主要代码:

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);
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值