Viewpager切换效果

viewpager.setPageTransformer(true, new ZoomOutPageTransformer());

//第一个为Boolean类型的值,第二个是实现类

下面为两个切换方式,后面切换出来和 变浅效果

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

public class DepthPageTransformer implements PageTransformer {
    private static float MIN_SCALE = 0.75f;

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

        }
    }
}

第二种

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

public class ZoomOutPageTransformer implements PageTransformer {
    private static float MIN_SCALE = 0.85f;

    private static float MIN_ALPHA = 0.5f;

    @Override
    public void transformPage(View view, float position) {
        int pageWidth = view.getWidth();
        int pageHeight = view.getHeight();

        if (position < -1) { // [-Infinity,-1)
                                // This page is way off-screen to the left.
            view.setAlpha(0);
        } else if (position <= 1) { // [-1,1]
                                    // Modify the default slide transition to
                                    // shrink the page as well
            float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
            float vertMargin = pageHeight * (1 - scaleFactor) / 2;
            float horzMargin = pageWidth * (1 - scaleFactor) / 2;
            if (position < 0) {
                view.setTranslationX(horzMargin - vertMargin / 2);
            } else {
                view.setTranslationX(-horzMargin + vertMargin / 2);
            }
            // Scale the page down (between MIN_SCALE and 1)
            view.setScaleX(scaleFactor);
            view.setScaleY(scaleFactor);
            // Fade the page relative to its size.
            view.setAlpha(MIN_ALPHA + (scaleFactor - MIN_SCALE)
                    / (1 - MIN_SCALE) * (1 - MIN_ALPHA));
        } else { // (1,+Infinity]
                    // This page is way off-screen to the right.
            view.setAlpha(0);
        }
    }
}
时间: 2024-10-26 08:43:52

Viewpager切换效果的相关文章

Android 自定义 ViewPager 打造千变万化的图片切换效果

Android 自定义 ViewPager 打造千变万化的图片切换效果 标签: Android自定义ViewPagerJazzyViewPager 目录(?)[+] 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38026503 记 得第一次见到ViewPager这个控件,瞬间爱不释手,做东西的主界面通通ViewPager,以及图片切换也抛弃了ImageSwitch之类的,开 始让ViewPager来做.时间长了,ViewPa

viewpager+fragment的懒加载实现微信点击和滑动切换功能(切换效果)

前言 1.从上一片文章之后已经半年没有写文章了,那篇文章之后公司进入疯狂的加班,一直到放年假.年后回来之后换了一家创业公司之后,然后又进入疯狂的加班(≧﹏ ≦) -所以一直都没有写文章(其实这都是借口⊙﹏⊙).现在公司没有那么忙了,也该把文章捡起来了,这毕竟是百利有一害的事(一害:费时间). 2.这半年里除了对代码的热情更加高涨(虽然它总是虐我千百遍(≧﹏ ≦) ),还深深的中了爬山的毒,对于年轻的我来说,爬山让我明白了许多.懂得了许多,也锻炼了我的身体.对于程序员来说身体是非常重要的,大家在周

巧用ViewPager 打造不一样的广告轮播切换效果

一.概述 如果大家关注了我的微信公众号的话,一定知道我在5月6号的时候推送了一篇文章,文章名为Android超高仿QQ附近的人搜索展示(一),通过该文可以利用ViewPager实现单页显示多个Item且能够添加一些炫酷的动画效果.我当时阅读这篇文章的时候,简单做了下记录,然后想了想,可以按照该思路做一个比较特殊轮播效果,如图: 其实看到这个大家肯定不陌生,对于ViewPager切换有个很出名的库叫JazzViewPager,没错,我又跑了下JazzyViewPager的例子,看看有什么动画效果可

基于ViewPager的一些酷炫切换效果

1.ViewPager可以用于实现类似banner的功能,我曾经在“时间超市”项目中使用过.但如何在此基础上实现一些切换的酷炫效果呢?今天细细品读了鸿洋大神的相关博文,终于学会了如何自定义切换效果. 详见博文:巧用ViewPager 打造不一样的广告轮播切换效果 2.对于ViewPager切换有个很出名的库叫JazzViewPager(点击访问gitHub),有时间去研究一下. 3.在看<Android超高仿QQ附近的人搜索展示>一文时,发觉了SparseArray这个安卓类,并阅读了<

viewpager切换添加动画效果viewpager切换添加动画效果--IT蓝豹

viewpager切换添加动画效果,本项目中主要有三种切换特效,(1):DepthPageTransformer 效果(2):RotateDownPageTransformer 每一个view切换的时候旋转(3):ZoomOutPageTransformer 效果主要实现代码:  mViewPager.setPageTransformer(true,new ZoomOutPageTransformer());  mViewPager.setPageTransformer(true,new Rot

ViewPager切换动画效果修改

比如我们点击向右按钮,希望左边的view移动过来,有个平移效果,但是用系统默认的ViewPager切换的时候,会一闪而过.这是为什么呢? 因为viewpager外面其实有个scrollview,你可以使用反射的方法,设置他的scroll时间.代码如下. 主要代码: //第一步: LayoutInflater mInflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View v

ViewPager切换动画效果改动

比方我们点击向右button,希望左边的view移动过来,有个平移效果,可是用系统默认的ViewPager切换的时候,会一闪而过. 这是为什么呢? 由于viewpager外面事实上有个scrollview,你能够使用反射的方法,设置他的scroll时间.代码例如以下. 主要代码: //第一步: LayoutInflater mInflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE)

android 为viewPager增加动画切换效果

在android应用开发中,viewPager可以实现很多炫丽的切换功能,如banner无限广告滚动条.新手引导等都用得到,使用频率不言而喻.依赖谷歌提供的辅助代码,viewPager的切换效果还可以更加出彩,实现过程也相当地简单. 先在浏览器中输入谷歌提供的网址,链接如:http://developer.android.com/training/animation/screen-slide.html ,如不能流畅打开,你最好准备一个翻墙工具,保留备需. 在网站中你可以看到viewPager的一

Android项目实战(四):ViewPager切换动画(3.0版本以上有效果)

原文:Android项目实战(四):ViewPager切换动画(3.0版本以上有效果) 学习内容来自“慕课网” 一般APP进去之后都会有几张图片来导航,这里就学习怎么在这张图片切换的时候添加切换动画效果 先看布局文件 activity_main.layout <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.c