1. oncreate中设置viewPager
  2.  
  3. viewPager.setPageTransformer(true,new DepthPageTransformer());//设置页面过滤动画效果
  4. pagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());//获得页面适配的适配器
  5. viewPager.setAdapter(pagerAdapter);//设置适配器
  1. 创建一个适配器
  2.  
  3. private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
  4. public ScreenSlidePagerAdapter(FragmentManager fm) {
  5. super(fm);
  6. }
  7. @Override
  8. public Fragment getItem(int position) {
  9. return new ScreenSlidePageFragment();
  10. }
  11. @Override
  12. public int getCount() {
  13. return NUM_PAGES;
  14. }
  15. }

新建一个Frament装载内容

  1. public class ScreenSlidePageFragment extends Fragment {
  2. @Override
  3. public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
  4. ViewGroup rootView = (ViewGroup) inflater.inflate(
  5. R.layout.activity_main, container, false);
  6. return rootView;
  7. }
  8. }

Frament的 xml文件:(只显示一些文本)

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:id="@+id/content"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent" >
  6.  
  7. <TextView style="?android:textAppearanceMedium"
  8. android:padding="16dp"
  9. android:lineSpacingMultiplier="1.2"
  10. android:layout_width="match_parent"
  11. android:layout_height="wrap_content"
  12. android:text="@string/lorem_ipsum" />
  13. </ScrollView>

Activity中的xml文件:(就是一个viewPager)

  1. <android.support.v4.view.ViewPager
  2. xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:id="@+id/pager"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent" />

下面给出两种过滤动画效果:

1.新页面覆盖旧页面:

  1. public class DepthPageTransformer implements ViewPager.PageTransformer {
  2. private static final float MIN_SCALE = 0.75f;
  3.  
  4. @Override
  5. public void transformPage(View view, float position) {
  6. int pageWidth = view.getWidth();
  7.  
  8. if (position < -1) {
  9. //这一页是屏幕左边。
  10. view.setAlpha(0);
  11.  
  12. } else if (position <= 0) { // [-1,0]
  13. // 使用默认的幻灯片过渡当向左移动页面
  14. view.setAlpha(1);
  15. view.setTranslationX(0);
  16. view.setScaleX(1);
  17. view.setScaleY(1);
  18.  
  19. } else if (position <= 1) { // (0,1]
  20. // 褪色的页面
  21. view.setAlpha(1 - position);
  22.  
  23. // 抵消默认幻灯片过渡
  24. view.setTranslationX(pageWidth * -position);
  25.  
  26. float scaleFactor = MIN_SCALE + (1 - MIN_SCALE) * (1 - Math.abs(position));
  27. view.setScaleX(scaleFactor);
  28. view.setScaleY(scaleFactor);
  29.  
  30. } else { // (1,+Infinity]
  31. view.setAlpha(0);
  32. }
  33. }
  34. }

2.缩小页面过滤效果翻页

  1. public class ZoomOutPageTransformer implements ViewPager.PageTransformer {
  2. private static final float MIN_SCALE = 0.85f;
  3. private static final float MIN_ALPHA = 0.5f;
  4. @Override
  5. public void transformPage(View view, float position) {
  6. int viewPagerWidth = view.getWidth();
  7. int viewPagerHight = view.getHeight();
  8. if (position < -1){
  9. view.setAlpha(0f);
  10. } else if (position <= 1){
  11. float scaleFactor = Math.max(MIN_SCALE,1 - Math.abs(position));
  12. float vertMargin = viewPagerHight * (1 - scaleFactor) / 2;
  13. float horzMargin = viewPagerWidth * (1 - scaleFactor) / 2;
  14. if (position < 0){
  15. view.setTranslationX(horzMargin - vertMargin / 2);
  16. }else {
  17. view.setTranslationX(-horzMargin + vertMargin / 2);
  18. }
  19. view.setScaleX(scaleFactor);
  20. view.setScaleY(scaleFactor);
  21. view.setAlpha(MIN_ALPHA + (scaleFactor - MIN_SCALE) / (1 - MIN_SCALE) * (1 - MIN_ALPHA));
  22. } else {
  23. view.setAlpha(0);
  24. }
  25. }
  26. }

使用ViewPager实现屏幕滑动效果的更多相关文章

  1. 【Android Developers Training】 70. 使用ViewPager实现屏幕滑动

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  2. android SlidingTabLayout实现ViewPager页卡滑动效果

    先来张效果图(能够滑动切换页卡) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGVuZ2t2/font/5a6L5L2T/fontsize/400/fi ...

  3. 兔子--Fragment与ViewPager要切换滑动效果

    效果图: 文件夹结构: 代码分析: MainActivity.java package com.example.myfragment; /** * @author Arthur Lee * @time ...

  4. 011 Android TabLayout+ViewPager实现顶部滑动效果(多个页面)

    1.TabLayout介绍 TabLayout提供了一个水平的布局用来展示Tabs,很多应用都有这样的设计,典型的有网易新闻,简书,知乎等.TabLayout就可以很好的完成这一职责,首先TabLay ...

  5. 使用ViewPager实现广告滑动效果

    效果图:               watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSk1DNjAx/font/5a6L5L2T/fontsize/400/ ...

  6. 手机屏幕滑动效果框架——flipsnap

    下午有时间,研究了下手机网页开发方面的内容.其中关于手机手势滑屏操作.发现有比较好的jquery 插件--flipsnap. 官方网站:http://pxgrid.github.com/js-flip ...

  7. 转:Android ViewPager多页面滑动切换以及动画效果

    一.首先,我们来看一下效果图,这是新浪微博的Tab滑动效果.我们可以手势滑动,也可以点击上面的头标进行切换.与此同方式, 白色横条会移动到相应的页卡头标下.这是一个动画效果,白条是缓慢滑动过去的.好了 ...

  8. Android ViewPager多页面滑动切换以及动画效果

    一.首先,我们来看一下效果图,这是新浪微博的Tab滑动效果.我们可以手势滑动,也可以点击上面的头标进行切换.与此同方式,白色横条会移动到相应的页卡头标下.这是一个动画效果,白条是缓慢滑动过去的.好了, ...

  9. Android——ViewPager多页面滑动切换以及动画效果

    一.首先,我们来看一下效果图,这是新浪微博的Tab滑动效果.我们可以手势滑动,也可以点击上面的头标进行切换.与此同方式,白色横条会移动到相应的页卡头标下.这是一个动画效果,白条是缓慢滑动过去的.好了, ...

随机推荐

  1. 为什么要加 -moz- -webkit- -ms- -o- ?

    没有别的,为了兼容早期版本,为了解决CSS3标准正式发布以前的遗留问题.

  2. 解决Failed to allocate memory: 8转

    解决Failed to allocate memory: 8 昨天换了x64的Win7,发现在Eclipse上启动模拟器的时候存在问题,当设置的模拟器分辨率大于400×800的时候会出现 Failed ...

  3. spring.net

    Spring.Net有两个很重要的感念就是IoC(控制反转)和DI(依赖注入). IoC.英文全称Inversion of Control.控制反转.DI.英文全称Dependency Injecti ...

  4. jquery模拟操作——trigger()函数

    在页面中很多效果需要触发才能实现,比如click后的弹窗.但有时我们无法点击或是跳过用户触发,就像网页中那些可恶的广告弹窗 trigger函数可以实现模拟操作.譬如常用的点击动作,我们可以这样, $( ...

  5. Java判断访问设备为手机、微信、PC工具类

    package com.lwj.util; import javax.servlet.http.HttpServletRequest; /** * 判断访问设备为PC或者手机--工具类 * * @de ...

  6. iconfont-矢量图标字体的运用

    发现一个奇怪的现象:(http://m.muzhiwan.com) 这里面的图标竟然不是一张张小图标图片?Firebug下查看一下元素,竟然是这样的: 页面源代码如下: 好奇怪啊,这些个乱七八糟的&a ...

  7. String s ; 和 String s = null ; 和 String s = "" ; 的却别

    String s ;该语句表示只是声明了一个引用变量,但是并没有初始化引用,所以对变量s的任何操作(除了初始化赋值外) 都将引发异常. String s=null; 表示未申请任何内存资源,即此语句表 ...

  8. c++11中的for简化用法

    1.序列for循环 map<string,int> m{{"a",1},{"b",2},{"c",3}} for(auto p: ...

  9. [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序实现继承

    这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第十一篇:为ASP.NET MVC应用程 ...

  10. 用Js+css3实现图片旋转,缩放,裁剪,滤镜

    还是前端图片的老话题,花了半天时间,东拼西凑,凑出个demo,优点在于代码少,核心代码就6行,目前刚做了旋转,缩放,裁剪,滤镜要js做,网络上也有现成的代码, 但是想做到自定义的滤镜咋办呢?这还要从底 ...