Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3

}

});

}

private void initData()

{

for (int imgId : mImgIds)

{

ImageView imageView = new ImageView(getApplicationContext());

imageView.setScaleType(ScaleType.CENTER_CROP);

imageView.setImageResource(imgId);

mImageViews.add(imageView);

}

}

}

好了,这样一个传统ViewPager就实现了~~大家对上面代码应该不会有任何陌生的感觉运行效果也不用贴图了,大家肯定知道~

3、PageTransformer


ViewPager有个方法叫做:

setPageTransformer(boolean reverseDrawingOrder, PageTransformer transformer) 用于设置ViewPager切换时的动画效果,并且google官方还给出了两个示例。

只需要在上述代码中调用setPageTransformer即可添加切换动画效果~~下面演示google的两个PageTransformer的代码,以及运行效果。

1、DepthPageTransformer

public class DepthPageTransformer implements ViewPager.PageTransformer {

private static final float MIN_SCALE = 0.75f;

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

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

}

}

}

调用代码:

mViewPager.setPageTransformer(true, new DepthPageTransformer());

效果:

2、ZoomOutPageTransformer

package com.zhy.view;

import android.annotation.SuppressLint;

import android.support.v4.view.ViewPager;

import android.util.Log;

import android.view.View;

public class ZoomOutPageTransformer implements ViewPager.PageTransformer

{

private static final float MIN_SCALE = 0.85f;

private static final float MIN_ALPHA = 0.5f;

@SuppressLint(“NewApi”)

public void tran

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值