一般APP进去之后都会有几张图片来导航,这里就学习怎么在这张图片切换的时候添加切换动画效果

先看布局文件

activity_main.layout

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/frameLayout1"
android:orientation="vertical"> </FrameLayout>

然后是java文件

mainactivity.java

 1 package com.example.viewpage;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import android.os.Bundle;
7 import android.app.Activity;
8 import android.graphics.DashPathEffect;
9 import android.support.v4.view.PagerAdapter;
10 import android.support.v4.view.ViewPager;
11 import android.text.style.SuperscriptSpan;
12 import android.view.Menu;
13 import android.view.View;
14 import android.view.ViewGroup;
15 import android.view.Window;
16 import android.widget.ArrayAdapter;
17 import android.widget.ImageView;
18 import android.widget.ImageView.ScaleType;
19
20 public class MainActivity extends Activity {
21
22 private ViewPager mviewpager; //控件
23 private int[] mImgIds = new int[]{R.drawable.guide_image1,R.drawable.guide_image2,R.drawable.guide_image3};//初始化图片
24 private List<ImageView> mImages = new ArrayList<ImageView>();
25
26
27
28 @Override
29 protected void onCreate(Bundle savedInstanceState) {
30 super.onCreate(savedInstanceState);
31 requestWindowFeature(Window.FEATURE_NO_TITLE);
32 setContentView(R.layout.activity_main);
33
34 mviewpager = (ViewPager) findViewById(R.id.id_viewpager);
35 //为ViewPage切换添加动画效果(3.0以上版本才可以有效果)
36 mviewpager.setPageTransformer(true, new ZoomOutPageTransformer());
37
38 mviewpager.setAdapter(new PagerAdapter() {
39
40 @Override
41 public Object instantiateItem(View container, int position) {
42 ImageView imageview = new ImageView(MainActivity.this);
43 imageview.setImageResource(mImgIds[position]);
44 imageview.setScaleType(ScaleType.CENTER_CROP); //设置图片不变形
45 ((ViewGroup) container).addView(imageview);
46 mImages.add(imageview);
47 return imageview;
48 };
49 @Override
50 public void destroyItem(View container, int position, Object object) {
51 // TODO Auto-generated method stub
52
53 ((ViewPager) container).removeView(mImages.get(position));
54 }
55 public boolean isViewFromObject(View view, Object object) {
56 // TODO Auto-generated method stub
57 return view == object;
58 }
59
60 @Override
61 public int getCount() { //返回图片个数
62 // TODO Auto-generated method stub
63 return mImgIds.length;
64 }
65 });
66 }
67
68
69
70 }

这里代码很简单,主要就是一行代码控制切换效果 第36行mviewpager.setPageTransformer(true, new ZoomOutPageTransformer());

第二个参数就是切换效果,当然不是随便的参数

这些参数可以在http://wear.techbrood.com/training/animation/screen-slide.html网上查阅到

代码是给定的,只要复制代码,点击包粘贴就生成了相应的java文件

这里展示下几种效果:

1、ZoomOutPageTransformer()

 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
5 public void transformPage(View view, float position) {
6 int pageWidth = view.getWidth();
7 int pageHeight = view.getHeight();
8
9 if (position < -1) { // [-Infinity,-1)
10 // This page is way off-screen to the left.
11 view.setAlpha(0);
12
13 } else if (position <= 1) { // [-1,1]
14 // Modify the default slide transition to shrink the page as well
15 float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
16 float vertMargin = pageHeight * (1 - scaleFactor) / 2;
17 float horzMargin = pageWidth * (1 - scaleFactor) / 2;
18 if (position < 0) {
19 view.setTranslationX(horzMargin - vertMargin / 2);
20 } else {
21 view.setTranslationX(-horzMargin + vertMargin / 2);
22 }
23
24 // Scale the page down (between MIN_SCALE and 1)
25 view.setScaleX(scaleFactor);
26 view.setScaleY(scaleFactor);
27
28 // Fade the page relative to its size.
29 view.setAlpha(MIN_ALPHA +
30 (scaleFactor - MIN_SCALE) /
31 (1 - MIN_SCALE) * (1 - MIN_ALPHA));
32
33 } else { // (1,+Infinity]
34 // This page is way off-screen to the right.
35 view.setAlpha(0);
36 }
37 }
38 }

效果图:

     

红色的为第一张,蓝色的为第二张,向左滑动显示蓝色。效果为两张图并行缩小滑动

2、DepthPageTransformer()

 1 public class DepthPageTransformer implements ViewPager.PageTransformer {
2 private static final float MIN_SCALE = 0.75f;
3
4 public void transformPage(View view, float position) {
5 int pageWidth = view.getWidth();
6
7 if (position < -1) { // [-Infinity,-1)
8 // This page is way off-screen to the left.
9 view.setAlpha(0);
10
11 } else if (position <= 0) { // [-1,0]
12 // Use the default slide transition when moving to the left page
13 view.setAlpha(1);
14 view.setTranslationX(0);
15 view.setScaleX(1);
16 view.setScaleY(1);
17
18 } else if (position <= 1) { // (0,1]
19 // Fade the page out.
20 view.setAlpha(1 - position);
21
22 // Counteract the default slide transition
23 view.setTranslationX(pageWidth * -position);
24
25 // Scale the page down (between MIN_SCALE and 1)
26 float scaleFactor = MIN_SCALE
27 + (1 - MIN_SCALE) * (1 - Math.abs(position));
28 view.setScaleX(scaleFactor);
29 view.setScaleY(scaleFactor);
30
31 } else { // (1,+Infinity]
32 // This page is way off-screen to the right.
33 view.setAlpha(0);
34 }
35 }
36 }

效果图:

     

红色的为第一张,蓝色的为第二张,向左滑动显示蓝色。效果为红色无变化向左滑动,蓝色由淡到深,由小到大占据屏幕

注意:添加DepthPageTransformer()和ZoomOutPageTransformer()java文件的时候 有两个错误 很容易 ctrl+1都能解决

更多动画类:

下载地址:

http://yunpan.cn/cFyjVgaeIFZ4e (提取码:ff5f)

ViewPager 带动画的欢迎界面的更多相关文章

  1. OC实现带弹跳动画按钮的界面控制器view

    很多应用都有带弹跳动画发布界面,这里用一个 UIViewController 实现这种效果,外界只要 modal出不带动画这个控制器就可以实现 #import "BSPublishVC.h& ...

  2. jquery插件——点击交换元素位置(带动画效果)

    一.需求的诞生 在我们的网页或者web应用中,想要对列表中的元素进行位置调整(或者说排序)是一个常见的需求.实现方式大概就以下两种,一种是带有类似“上移”.“下移”的按钮,点击可与相邻元素交换位置,另 ...

  3. 模块:(日期选择)jquery、bootstrap实现日期下拉选择+bootstrap jquery UI自带动画的日期选择器

    一:jquery.bootstrap实现日期下拉选择 点击文本框弹出窗口 弹窗显示日期时间选择下拉 年份取当前年份的前后各5年 天数随年份和月份的变化而变化 点击保存,文本框中显示选中的日期 代码部分 ...

  4. android标题栏上面弹出提示框(二) PopupWindow实现,带动画效果

    需求:上次用TextView写了一个从标题栏下面弹出的提示框.android标题栏下面弹出提示框(一) TextView实现,带动画效果,  总在找事情做的产品经理又提出了奇葩的需求.之前在通知栏显示 ...

  5. android标题栏下面弹出提示框(一) TextView实现,带动画效果

    产品经理用的是ios手机,于是android就走上了模仿的道路.做这个东西也走了一些弯路,写一篇博客放在这里,以后自己也可用参考,也方便别人学习. 弯路: 1.刚开始本来用PopupWindow去实现 ...

  6. 自定义带动画的Toast

    一.style样式: 1.  // 移动和透明渐变结合的动画 <style name="anim_view">        <item name="@ ...

  7. iOS带动画的环形进度条(进度条和数字同步)

    本篇写的是实现环形进度条,并带动画效果,要实现这些,仅能通过自己画一个 方法直接看代码 为了方便多次调用,用继承UIView的方式 .m文件 #import <UIKit/UIKit.h> ...

  8. 纯CSS3带动画效果导航菜单

    随着互联网的发展,网页能表现的东西越来越多.由最开始单纯的文字和链接构成的网页,到后来的表格布局,再到div+css模式,现在发展到了html+css3.网页能表达的东西越来越多,css3兴起已经很多 ...

  9. jQuery之锚点带动画跳转特效

    背景图片为金木研,这是我最爱的一张图. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &quo ...

随机推荐

  1. 如何使用App.config文件,读取字符串?

    如何使用App.config文件,读取字符串? .在项目里添加App.config文件,内容如下: <?xml version="1.0" encoding="ut ...

  2. 小朋友学C语言(8)

    求圆周率 (一)圆周率简介 圆周率(Pi)是圆的周长与直径的比值,一般用希腊字母π表示,是一个在数学及物理学中普遍存在的数学常数.π也等于圆形之面积与半径平方之比.是精确计算圆周长.圆面积.球体积等几 ...

  3. HTML5之viewport使用

    好久都没更新博客了,最近一年转型移动端,当然网页端也得兼顾,慢慢写一写基本性的文章,多积累. 本期介绍下viewport的一些使用: 先看看viewport在页面中的样子: <meta name ...

  4. ES6

    1属性的遍历:上个图

  5. OpenACC 云水参数化方案

    ▶ 书上第十三章,用一系列步骤优化一个云水参数化方案.用于熟悉 Fortran 以及 OpenACC 在旗下的表现 ● 代码,文件较多,放在一起了 ! main.f90 PROGRAM main US ...

  6. CUDA C Programming Guide 在线教程学习笔记 Part 8

    ▶ 线程束表决函数(Warp Vote Functions) ● 用于同一线程束内各线程通信和计算规约指标. // device_functions.h,cc < 9.0 __DEVICE_FU ...

  7. xml转json的方法

    .第一种方法 使用JSON-JAVA提供的方法,之前一直使用json-lib提供的方法转json,后来发现了这个开源项目,觉得用起来很不错,并且可以修改XML.java中的parse方法满足自己的转换 ...

  8. Producer-consumer problem in Python

    from: http://agiliq.com/blog/2013/10/producer-consumer-problem-in-python/ By : Akshar Raaj We will s ...

  9. get提交时中文传值乱码的有关问题

    get提交时中文传值乱码的问题 get提交时中文传值乱码的问题 url=curWarnList.action paramBean.bsIndex=1&paramBean.siteName=萧山 ...

  10. Activity生命周期,Activity传值(Intent)

    生命周期: 从出生到死亡 Activity生命周期的7个方法和3个循环 onCreate() 创建时调用onRestart() 不可见到可见时调用onStart() 用户可见时调用onResume() ...