ViewPager的实现过程及其多种方式的动画效果

//此类为Activity实现了加载图片资源、添加图片的动画效果
package com.example.viewpager_demo;

import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.app.Activity;

public class MainActivity extends Activity {

private ViewPager mViewPager;
private int[] mImgIds = new int[] { R.drawable.picture_001,
        R.drawable.picture_002, R.drawable.picture_003 };
private List<ImageView> mImages = new ArrayList<ImageView>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // 去掉主题
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    mViewPager = (ViewPager) findViewById(R.id.id_viewpager);
    // 为ViewPager添加动画效果
    mViewPager.setPageTransformer(true, new DepthPageTransformer());
    mViewPager.setAdapter(new PagerAdapter() {

        @Override
        public Object instantiateItem(ViewGroup container, int position) {

            ImageView mImageView = new ImageView(MainActivity.this);
            mImageView.setImageResource(mImgIds[position]);
            mImageView.setScaleType(ScaleType.CENTER_CROP);
            container.addView(mImageView);
            mImages.add(mImageView);
            return mImageView;
        }

        @Override
        public void destroyItem(ViewGroup container, int position,
                Object object) {

            container.removeView(mImages.get(position));
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {

            return view == object;
        }

        @Override
        public int getCount() {

            return mImgIds.length;
        }
    });
}

}

//ViewPager的实现,Googal原生提供更多的方式,文章下边有贴出链接
package com.example.viewpager_demo;

import android.support.v4.view.ViewPager.PageTransformer;
import android.view.View;

public class DepthPageTransformer implements PageTransformer {

private static float MIN_SCALE = 0.5f;
@Override
public void transformPage(View view, float position) {
    int pageWidth = view.getWidth();
    if (position < -1) { // [-Infinity,-1)
        // This page is way off-screen to the left.
        view.setAlpha(0);
        view.setTranslationX(0);
    } else if (position <= 0) { // [-1,0]
        // Use the default slide transition when
        // moving to the left page
        view.setAlpha(1);
        view.setTranslationX(0);
        view.setScaleX(1);
        view.setScaleY(1);
    } else if (position <= 1) { // (0,1]
        // Fade the page out.
        view.setAlpha(1 - position);
        // Counteract the default slide transition
        view.setTranslationX(pageWidth * -position);
        // Scale the page down (between MIN_SCALE and 1)
        float scaleFactor = MIN_SCALE + (1 - MIN_SCALE)
                * (1 - Math.abs(position));
        view.setScaleX(scaleFactor);
        view.setScaleY(scaleFactor);
    } else { // (1,+Infinity]
        // This page is way off-screen to the right.
        view.setAlpha(0);
        view.setScaleX(1);
        view.setScaleY(1);
    }
}

}

//用系统自带的ViewPager(按CTRL + SHIFT + T, 输入ViewPager会出现包名)

<android.support.v4.view.ViewPager
    android:id="@+id/id_viewpager"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >        
</android.support.v4.view.ViewPager>

//更多实现ViewPager动画方式:
http://git.oschina.net/yuhj/CatEyeMovie/blob/02fa10d82e330b3efd964a47d0cb82affb22e1be/CatEyeMovie/src/com/yuhj/cateyemovie/effect/ZoomOutPageTransformer.java

猜你喜欢

转载自blog.csdn.net/u013012391/article/details/44085151