自定义viewpager的界面切换动画
核心操作:
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的界面切换动画的更多相关文章
- 【转】android 自定义ViewPager,修改原动画
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38026503 记 得第一次见到ViewPager这个控件,瞬间爱不释手,做东西的 ...
- Xcode界面切换动画效果
CATransition *animation = [CATransition animation]; [animation setDuration:0.2f]; [animation setTimi ...
- 利用Theme自定义Activity间的切换动画
转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/22990643 大多Android系统默认Activity间的动画切换效果为,右边 ...
- 界面切换动画(CATransition实现 )
调用 // CATransition动画实现 [self pushWithAnimationType:@"fade"]; - (void)pushWithAnimationType ...
- Activity界面切换动画特效。
效果图: 结构图: 测试代码: 布局: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearL ...
- 更改navigationController push和pop界面切换动画
For Push: MainView *nextView=[[MainView alloc] init]; [UIView beginAnimations:nil context:NULL]; [UI ...
- [android] 手机卫士界面切换动画
在/res/anim/ 建立文件tran_out.xml 添加<translate>节点 设置x轴来源坐标android:fromXDelta=”0” 设置x轴目的坐标android:to ...
- 将 GNOME 默认的界面切换动画功能关闭
gsettings set org.gnome.desktop.interface enable-animations false
- Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40411921,本文出自:[张鸿洋的博客] 1.概述 之前写过一篇博文:Andro ...
随机推荐
- Java核心技术 卷Ⅰ 基础知识(2)
第四章 对象与类 基于类的访问权限 静态域 类的设计技巧
- Linux Ubuntu 虛擬機系統自定義桌面分辨率且重啓後保持不變
我用 VMware Workstation 12 Pro 安裝的 Ubuntu MATE Desktop Environment 1.12.1,發現安裝後沒有需要的分辨率,於是安裝 VMware To ...
- 原图旋转/缩放 然后画布画图 ImageProcessor
//旋转 byte[] photoBytes = File.ReadAllBytes(HttpContext.Current.Server.MapPath(diyInfo.ImageUrl)); Im ...
- SQL总结之对比和备份
-----用户解锁select * from wfuser for update ----------------------修改金额select * from bp_account where ac ...
- Ubuntu环境openresty的安装
Ubuntu环境openresty的安装 相关库的安装 安装openresty需要的库 apt-get install libreadline-dev libncurses5-dev libpcre ...
- hibernate、easyui、struts2整合
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 遍历json创建树状表(首先的前提条件是要引入jquery的jquery treeTable插件)
"root":{ "children":[ { "name":"AA", "children":[ ...
- 敏捷开发(十一)- Scrum Sprint评审会议
本文主要是为了检测你对SCRUM 评审会议的了解和使用程度, 通过本文你可以检测一下 1.你们的SCRUM 评审会议的过程和步骤 2.SCRUM 评审会议的输出结果一.会议目的 ...
- Python实现简单的HTTP服务器(支持文件上传下载)
1.python内置模块 SimpleHTTPServer (支持下载功能) 在对应的工作目录下,运行命令python -m SimpleHTTPServer 即可把当前目录下以共享服务的形式共享出 ...
- C#异常性能影响
何谓异常 很多人在讨论异常的时候很模糊,仿佛所谓异常就是try{}catch{},异常就是Exception,非常的片面,所以导致异常影响性能,XXXX……等很多奇怪的言论,所以在此我意在对异常正名. ...