核心操作:
1、创建一个类实现 android.support.v4.view.ViewPager.PageTransformer 根据 position 实现判断哪个界面进行界面切换动画

public class RotatePagerPageTransFormer implements android.support.v4.view.ViewPager.PageTransformer{
private static final float MAXRADIUS = 25f;
// 当 viewpager 界面切换的时候调用的方法
//page : 切换的界面
//position : 切换的界面的状态(切换的界面包含两个界面) , 当前的界面 position 是 0 ,预加载的界面的 position 是 1 ,从右往左切换界面的时候
// 当前界面的 position 会从 0 开始往 -1 变化,预加载界面的 position 是从 1 开始往 0 变化
@Override
public void transformPage(View page, float position) {
// 实现 viewpager 的切换动画效果
//System.out.println("viewpager 的界面切换动画状态: "+position);
// 界面的宽度
int width = page.getWidth();
// 因为我们的 viewpager 的动画效果是,当前界面和预加载界面进行动画,其他界面没有动画,那如何知道应该是当前界面和预加载界面执行动画呢?可以通过 position 进行判断
// 当前界面的 position[0,-1] 预加载界面的 position[1,0]
// 实现界面的旋转动画效果
// 参数:旋转的角度
//page.setRotation(rotation);
// 判断哪个界面需要执行动画,并执行动画
if (position < -1) {
// 不执行动画
page.setRotation(0);
}else if(position > 1){
// 不执行动画
page.setRotation(0);
}else if(position < 0){
// 符合 [0,-1] ,当前界面执行动画
page.setRotation(position * MAXRADIUS);
// 设置旋转的中心点坐标
page.setPivotX(width/2);// 设置旋转中心点的 x 的坐标
page.setPivotY(page.getHeight());
}else if(position < 1){
// 符合 [0,-1] ,当前界面执行动画
page.setRotation(position * MAXRADIUS);
// 设置旋转的中心点坐标
page.setPivotX(width/2);// 设置旋转中心点的 x 的坐标
page.setPivotY(page.getHeight());
}
}
}

2、在viewpager所在类中调用界面切换动画

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

自定义viewpager的界面切换动画的更多相关文章

  1. 【转】android 自定义ViewPager,修改原动画

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38026503 记 得第一次见到ViewPager这个控件,瞬间爱不释手,做东西的 ...

  2. Xcode界面切换动画效果

    CATransition *animation = [CATransition animation]; [animation setDuration:0.2f]; [animation setTimi ...

  3. 利用Theme自定义Activity间的切换动画

    转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/22990643 大多Android系统默认Activity间的动画切换效果为,右边 ...

  4. 界面切换动画(CATransition实现 )

    调用 // CATransition动画实现 [self pushWithAnimationType:@"fade"]; - (void)pushWithAnimationType ...

  5. Activity界面切换动画特效。

    效果图: 结构图: 测试代码: 布局: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearL ...

  6. 更改navigationController push和pop界面切换动画

    For Push: MainView *nextView=[[MainView alloc] init]; [UIView beginAnimations:nil context:NULL]; [UI ...

  7. [android] 手机卫士界面切换动画

    在/res/anim/ 建立文件tran_out.xml 添加<translate>节点 设置x轴来源坐标android:fromXDelta=”0” 设置x轴目的坐标android:to ...

  8. 将 GNOME 默认的界面切换动画功能关闭

    gsettings set org.gnome.desktop.interface enable-animations false

  9. Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下)

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40411921,本文出自:[张鸿洋的博客] 1.概述 之前写过一篇博文:Andro ...

随机推荐

  1. Java核心技术 卷Ⅰ 基础知识(2)

    第四章 对象与类 基于类的访问权限 静态域 类的设计技巧

  2. Linux Ubuntu 虛擬機系統自定義桌面分辨率且重啓後保持不變

    我用 VMware Workstation 12 Pro 安裝的 Ubuntu MATE Desktop Environment 1.12.1,發現安裝後沒有需要的分辨率,於是安裝 VMware To ...

  3. 原图旋转/缩放 然后画布画图 ImageProcessor

    //旋转 byte[] photoBytes = File.ReadAllBytes(HttpContext.Current.Server.MapPath(diyInfo.ImageUrl)); Im ...

  4. SQL总结之对比和备份

    -----用户解锁select * from wfuser for update ----------------------修改金额select * from bp_account where ac ...

  5. Ubuntu环境openresty的安装

    Ubuntu环境openresty的安装 相关库的安装 安装openresty需要的库  apt-get install libreadline-dev libncurses5-dev libpcre ...

  6. hibernate、easyui、struts2整合

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. 遍历json创建树状表(首先的前提条件是要引入jquery的jquery treeTable插件)

    "root":{ "children":[ { "name":"AA", "children":[ ...

  8. 敏捷开发(十一)- Scrum Sprint评审会议

    本文主要是为了检测你对SCRUM 评审会议的了解和使用程度, 通过本文你可以检测一下     1.你们的SCRUM 评审会议的过程和步骤    2.SCRUM 评审会议的输出结果一.会议目的     ...

  9. Python实现简单的HTTP服务器(支持文件上传下载)

    1.python内置模块 SimpleHTTPServer  (支持下载功能) 在对应的工作目录下,运行命令python -m SimpleHTTPServer 即可把当前目录下以共享服务的形式共享出 ...

  10. C#异常性能影响

    何谓异常 很多人在讨论异常的时候很模糊,仿佛所谓异常就是try{}catch{},异常就是Exception,非常的片面,所以导致异常影响性能,XXXX……等很多奇怪的言论,所以在此我意在对异常正名. ...