基于Android的ViewPager动画特效实现页面左右滑动效果(实现缩放

基于Android的ViewPager动画特效实现页面左右滑动效果(实现缩放和透明效果)

在上一个项目的基础上做修改,项目包截图如下:

ScaleTransformer方法在开发中ViewPager是经常用到的,自从Andriod3.0以后增加了动画的效果,让我们的App页面展示更加的生动,当然对于Viewpager来说,也增加了切换的动画。我们平时使用的是ViewPager的默认切换效果,ViewPager自带了一个setPageTransformer用于设置切换动画。

(这里我实现的是左右滑动页缩放效果,页面的不透明度也会随之变化)

新建一个transformer文件夹,里面新建一个ScaleTransformer.java文件,实现他的接口

public class ScaleTransformer implements ViewPager.PageTransformer

重写他的方法

在这个方法体内完成动画的编写,要操作两个View,一个是当前滑动的View,一个是即将出现的那个View,这个方法传递两个参数,一个是view,一个是position:

一个view怎么实现两个view,这里就通过Log日记来找他们的规律(这里就不详细讲解)

public void transformPage(@NonNull View view, float position) {

}

通过打印日志文件找出一下规律:

从a->b

a页面的position的变化是从0,1

b页面的position的变化是从1,0

从b->a

a页面的position的变化是从-1,0

b页面的position的变化是从0,1

我们定义一个常数为0.75f,通过这个数字变化实现页面变化

所以就有了,如果我们从a->b,把a页面的position(0,1)变成[1,0.75],把b页面的position(1,0)变成[0.75,1]

如果我们从b->a,把a页面的postition : (1,0) [1,0.75],把b页面的position(0,1)变成[0.75,1]

这种方式就实现了页面的缩放

这里缩放效果实现了,我们也可以设置页面的透明度,根据缩放效果来设置透明的效果

这里同样是设置一个常数变量,通过变量数值的变化来改变页面

这里根据刚才的规律,把 MIN_ALPHA + (1-MIN_ALPHA) * (1+position);的数值赋值给常熟变量

通过view.setAlpha();的方式来实现。

具体实现代码如下:

package com.example.splash.transformer;

import android.support.annotation.NonNull;

import android.support.v4.view.ViewPager;

import android.view.View;

import com.example.splash.utils.L;

public class ScaleTransformer implements ViewPager.PageTransformer {

private static final float MIN_SCALE = 0.5f;

private static final float MIN_ALPHA = 0.5f;

@Override

//在这个方法体内完成动画的编写

//要操作两个View,一个是当前滑动的View,一个是即将出现的那个View

public void transformPage(@NonNull View view, float position) {

//通过打印日志寻找规律

L.d(view.getTag() + " , pos = " + position);

//a->b

//a , positiom : (0,-1)

//b , postition : (1,0)

//b->a

//a , positiom : (-1,0)

//b , postition : (0,1)

if (position <= -1){

view.setScaleX(MIN_SCALE);

view.setScaleY(MIN_SCALE);

view.setAlpha(MIN_ALPHA);

}else if (position <= 1){

if (position < 0){//左边这个界面

//a->b position : (0,1) 把(0,1)变成[1,0.75]

float scaleA = MIN_SCALE + (1 - MIN_SCALE) * (1 + position);

view.setScaleX(scaleA);

view.setScaleY(scaleA);

//设置滑动的透明度

float alphaA = MIN_ALPHA + (1-MIN_ALPHA) * (1+position);

view.setAlpha(alphaA);

}else {//右边的这个界面

//a->b

//b , postition : (1,0) [0.75,1]

float scaleB = MIN_SCALE + (1 - MIN_SCALE) * (1 - position);

view.setScaleX(scaleB);

view.setScaleY(scaleB);

//设置滑动的透明度

float alphaB = MIN_ALPHA + (1-MIN_ALPHA) * (1+position);

view.setAlpha(alphaB);

}

}else {

view.setScaleX(MIN_SCALE);

view.setScaleY(MIN_SCALE);

view.setAlpha(MIN_ALPHA);

}

}

}

最后到MainActivity.java中去调用ViewPager的setPageTransformer()来实现动画效果

mVpMain.setPageTransformer(true,new ScaleTransformer());

效果如下图所示:

最后附上我GitHub上的源码连接:

https://github.com/ChengCeng/Splash.git

基于Android的ViewPager动画特效实现页面左右滑动效果(实现缩放相关教程

android 滑动缩放监听,基于Android的ViewPager动画特效实现页面左右滑动效果(实现缩放...相关推荐

  1. android个人理财通项目_基于Android个人理财系统设计与实现.doc

    基于Android个人理财系统设计与实现 基于Android个人理财系统设计与实现 摘要:随着Android移动应用的飞速发展人们的日常生活越来越离不开移动应用设备.该系统是基于Android移动应用 ...

  2. android应用课程设计报告,基于Android的多媒体播放器课程设计报告.doc

    基于Android的多媒体播放器课程设计报告.doc 基于Android的多媒体播放器课程设计报告2014-01-02 224652 转载标签 android多媒体播放器嵌入式课程设计报告it分类 我 ...

  3. Android媒体播放器设计,基于Android系统多媒体播放器的设计与实现

    基于Android系统多媒体播放器的设计与实现 移动互联网自从其出现就以极强的吸引力捕获了全世界的关注,近些年尤以为甚,各类相关产品也随之蓬勃发展,Android智能手机就是其中之一.另外随着科技发展 ...

  4. android记事本的设计报告,基于android记事本的设计与开发开题报告.doc

    基于android记事本的设计与开发开题报告.doc 太 原 科 技 大 学 华 科 学 院毕业设计开题报告学 生 姓 名学 号学 院.系 专 业论 文 题 目基于android的记事本的开发与设计指 ...

  5. 一篇很好的关于Android的本科毕业论文《基于android手机通讯录的设计与实现毕业论文》转自百度

    本文转自: http://wenku.baidu.com/view/bb7dad58804d2b160b4ec058.html 相应的word文档csdn下载地址: http://download.c ...

  6. 基于android的2048游戏设计,基于Android平台的2048游戏设计与开发.docx

    基于Android平台的2048游戏设计与开发 高级操作系统论文(设计) 题 目 基于Android个人2048 小游戏的设计与开发姓 名 学 号 院. 系 信息学院 专 业 指导教师 职称(学历)目 ...

  7. 基于android点餐系统需求分析,基于android的点餐系统的需求分析

    基于android的点餐系统的需求分析 基于 Android 的点餐系统的需求分析1 功能需求传统的餐饮行业,就像我们平时在街边看到的小餐馆一类的,我们点菜的时候都是有服务员站在我们旁边,我们点一个他 ...

  8. android学生个人事物管理系统,基于Android平台的学生个人事务管理系统的设计与实现(整理版).doc...

    DSJKFHJKDH FJDHJKFH KDSJH JKDHF JKDS HKJ HGFDSJHF JHFJK HFKSD JKFJDSKJF DSJF;DS 摘 要 Android智能手机越来越普及 ...

  9. 基于Android的校园二手商品交易平台,基于Android校园二手交易网站毕业设计论文.doc...

    基于Android校园二手交易网站毕业设计论文 本科生毕业设计(论文) 题 目: 基于Android的校园二手交易网站 姓 名: 学 号: 学 院: 专 业: 年 级: 校内指导教师: (签名) 校外 ...

最新文章

  1. 【转】清理Visual Studio打开的项目和文件、查找和最近引用组件痕迹
  2. Android开发中常见的设计模式
  3. 百分比单位始终根据父元素相应值来计算_CSS Viewport 单位,很多人还不知道使用它来快速布局!...
  4. tomcat的class加载的优先顺序
  5. ubuntu 16.0安装ros-kinetic
  6. 使用keepalived搭建mysql主从备份、切换
  7. SQL Server 2005中专用管理员连接 (DAC) 使用技巧修改系统表的方法
  8. 五菱汽车:并不知悉导致股价及成交量上升的任何原因
  9. html5 app list,让web app更快的HTML5最佳实践
  10. 54 字符流中第一个不重复的字符
  11. 4.C++深入理解 面向对象部分3
  12. BrnShop开源网上商城第三讲:插件的工作机制
  13. 23_使用dtree展示所有分类
  14. IE无法安装HP-QC插件
  15. flutter 基础知识点总结
  16. 第三十届香港金像奖(转)
  17. Halcon 算子 circularity
  18. SWING HACKS电子书及范例代码
  19. CDH 6系列(CDH 6.0.0、CDH 6.1.0、CDH 6.2.0等)安装和使用
  20. 计算机设计大赛感言,计算机编程比赛获奖感言.doc

热门文章

  1. 用python解析html
  2. 如何使得OCX控件能响应PreTranslateMessage消息?
  3. Word 2003中对不同的节设置不同的页面边框的特殊情况小结
  4. python 学习笔记 (核心)
  5. [RK3288][Android6.0] 系统按键驱动流程分析【转】
  6. 在Unity中实现屏幕空间反射Screen Space Reflection(2)
  7. App_Data 目录中的数据库位置指定了一个本地 SQL Server
  8. java常见面试题及答案 1-10(基础篇)
  9. 文件 md5 查看 命令
  10. 大公司都有哪些开源项目~~~简化版