Android-ViewPager( 切换动画实现 , 兼容性实现)
来源:互联网 发布:淘宝网女士服装 编辑:程序博客网 时间:2024/05/19 04:56
1.回顾
上篇学习了使用 Android Studio 实现 安卓属性动画的例子;
2.重点
(1)ViewPager实现
(2)添加动画切换效果
(3)兼容性实现
3.ViewPager实现
ViewPager实现 三种实现方式,前面已经学习过了, 具体请看:
Android-ViewPager(PagerAdapter 实现)
http://blog.csdn.net/lablenet/article/details/47958901
4.添加切换动画
4.1 通过调用 setPageTransformer(boolean,pageTransformer)
参数1 ,为 boolean 类型 , 第二个 为 pageTransformer 实现类;
4.2实现
Android 官方提供了 两种 切换 方式 即 pageTransformer 的 两种实现:
(1) DepthPageTransformer
package cn.labelnet.util;import android.annotation.SuppressLint;import android.support.v4.view.ViewPager;import android.view.View;public class DepthPageTransformer implements ViewPager.PageTransformer { private static final float MIN_SCALE = 0.75f; @SuppressLint("NewApi")public void transformPage(View view, float position) { int pageWidth = view.getWidth(); if (position < -1) { // [-Infinity,-1) // This page is way off-screen to the left. view.setAlpha(0); } else if (position <= 0) { // [-1,0] // Use the default slide transition when moving to the left page view.setAlpha(1); view.setTranslationX(0); view.setScaleX(1); view.setScaleY(1); } else if (position <= 1) { // (0,1] // Fade the page out. view.setAlpha(1 - position); // Counteract the default slide transition view.setTranslationX(pageWidth * -position); // Scale the page down (between MIN_SCALE and 1) float scaleFactor = MIN_SCALE + (1 - MIN_SCALE) * (1 - Math.abs(position)); view.setScaleX(scaleFactor); view.setScaleY(scaleFactor); } else { // (1,+Infinity] // This page is way off-screen to the right. view.setAlpha(0); } }}
(2) ZoomOutPageTransformer
package cn.labelnet.util;import android.annotation.SuppressLint;import android.support.v4.view.ViewPager;import android.view.View;public class ZoomOutPageTransformer implements ViewPager.PageTransformer { private static final float MIN_SCALE = 0.85f; private static final float MIN_ALPHA = 0.5f; @SuppressLint("NewApi")public void transformPage(View view, float position) { int pageWidth = view.getWidth(); int pageHeight = view.getHeight(); if (position < -1) { // [-Infinity,-1) // This page is way off-screen to the left. view.setAlpha(0); } else if (position <= 1) { // [-1,1] // Modify the default slide transition to shrink the page as well float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position)); float vertMargin = pageHeight * (1 - scaleFactor) / 2; float horzMargin = pageWidth * (1 - scaleFactor) / 2; if (position < 0) { view.setTranslationX(horzMargin - vertMargin / 2); } else { view.setTranslationX(-horzMargin + vertMargin / 2); } // Scale the page down (between MIN_SCALE and 1) view.setScaleX(scaleFactor); view.setScaleY(scaleFactor); // Fade the page relative to its size. view.setAlpha(MIN_ALPHA + (scaleFactor - MIN_SCALE) / (1 - MIN_SCALE) * (1 - MIN_ALPHA)); } else { // (1,+Infinity] // This page is way off-screen to the right. view.setAlpha(0); } }}
4.3 兼容性
Andorid 动画 在 Android3.0 版本 (api 11) 以上 才能使用 动画属性 ,所以 想让 兼容 低版本 就要 引用 第三方 jar包-nineoldandroids.jar;
jar包 下载 : 见 demo下载!
4.4 使用 兼容包实现 另一个自定义动画
模仿着上面的实现
package cn.labelnet.util;import com.nineoldandroids.view.ViewHelper;import android.annotation.SuppressLint;import android.support.v4.view.ViewPager.PageTransformer;import android.view.View;public class RoatePageTransformer implements PageTransformer { private static final float MIN_ROATE =20f; //旋转角度的变化 private float roate; @Overridepublic void transformPage(View view, float position) { int pageWidth = view.getWidth(); if (position < -1) { // [-Infinity,-1) // This page is way off-screen to the left. ViewHelper.setRotation(view, 0); } else if (position <= 0) { // [-1,0] // Use the default slide transition when moving to the left page roate=MIN_ROATE*position; ViewHelper.setPivotX(view, pageWidth/2); ViewHelper.setPivotY(view, view.getMeasuredHeight()); ViewHelper.setRotation(view, roate); } else if (position <= 1) { // (0,1] roate=MIN_ROATE*position; ViewHelper.setPivotX(view, pageWidth/2); ViewHelper.setPivotY(view, view.getMeasuredHeight()); ViewHelper.setRotation(view, roate); } else { // (1,+Infinity] ViewHelper.setRotation(view, 0); }} }
5.demo 免积分下载
http://download.csdn.net/detail/lablenet/9110343
0 0
- Android-ViewPager( 切换动画实现 , 兼容性实现)
- ViewPager 切换动画实现
- Android viewpager 界面切换动画实现
- Android 中ViewPager 实现动画效果切换
- android ViewPager实现 跑马灯切换图片+多种切换动画
- ViewPager实现的切换动画
- Android 实现个性的ViewPager切换动画 实战PageTransformer
- Android 实现个性的ViewPager切换动画 实战PageTransformer
- android用ViewPager实现带有动画效果的页面切换
- Android开发知识(二):ViewPager切换动画效果的实现
- PageTransformer实现个性的ViewPager切换动画
- 用开源项目JazzyViewPager实现ViewPager切换动画
- android viewpager 切换动画
- Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下) Android 实现个性的ViewPager切换动画 实战PageTrans
- 实现页面切换(动画效果实现,不用ViewPager)
- 【Android进阶】 Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下)
- android 学习 实现切换动画,
- Android 深入ViewPager补间动画,实现类京东商城首页广告Banner切换效果
- 网易游戏2015 在线笔试题(5)
- android - Toast 了解及使用
- Linux内核CPU负载均衡机制
- leetcode Binary Tree Level Order Traversal II
- 华为OJ题库—统计大写字母个数
- Android-ViewPager( 切换动画实现 , 兼容性实现)
- Struts2标签取值方式
- 15_09_16 ( ActivityNotFoundException ) 没有找到异常
- Unity3d Shader FX/Flare
- C语言中string函数详解
- 欢迎使用CSDN-markdown编辑器
- 有深度的博客
- Maven 2 + Hibernate 3.2 + MySQL Example (Annotation)
- 既使用maven编译,又使用lib下的Jar包