`
渐渐远行的背景
  • 浏览: 5623 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

真正实现Viewpage换页动画控制

阅读更多
近来用到了ViewPage做图片广告,但Viewpage的换页动画效果实在过于平庸,于是萌生了控制了VeiwPage换页动画的想法。

android的动画是相当丰富的,起初想到了用Animation来做,但是ViewPage提供的方法实在无法达到预期的效果,又尝试了重写ViewPage,使用Camera来对页面进行重画,但只能控制到单页,整体效果不达标,最后不得不放弃以上两种方式,当然,这里面能力的因素是客观存在的。

在网上百度了半天,不得不说现在的“拷贝党”成员广大,搜索了半天全是一模一样的,浪费精力不说,还一肚子火,做程序开发的都有同感,当一个问题久久不能解决,在希望和失望之间徘徊时,那种心境真是一种煎熬。

休息了一天,最后下狠心,直接把android官方的API拿来研究,最后在api中找到了方法:

ViewPage提供了一个内部接口PageTransformer,用于控制两页之间的切换控制,在PageTransformer中只有一个方法 public void transformPage(View view, float position),在这个方法中,可以实现对两个页面的完美控制。


public void transformPage(View view, float position)中很关键的是参数position,它是页面相对ViewPage中心位置的距离百分比,介于-1和1之间,进入者由-1向0变化,退出者由0向1变化,当页面的距离百分比为0时,界面被选中,即触发ViewPage的onPageSelected事件。

通过判定position的值,可以定位当前作用的页面是进入页面还是退出页面,并做出相应的业务逻辑,这里直接给出官方的例子供大家参考


public class DepthPageTransformer implements ViewPager.PageTransformer {     
private static float MIN_SCALE = 0.75f;      
public void transformPage(View view, float position) {         
int pageWidth = view.getWidth();          
if (position < -1) {        
  view.setAlpha(0);          
} else if (position <= 0) { 
 view.setAlpha(1);            
 view.setTranslationX(0);             
 view.setScaleX(1);             
 view.setScaleY(1);          
} else if (position <= 1) {    
   view.setAlpha(1 - position);              
   view.setTranslationX(pageWidth * -position);                         
   float scaleFactor = MIN_SCALE                     + (1 - MIN_SCALE) * (1 - Math.abs(position));             
view.setScaleX(scaleFactor);             
view.setScaleY(scaleFactor);          
} else { 
   view.setAlpha(0);         
}     
}
 }



最后直接调用ViewPage的 setPageTransformer() 方法设置创建的PageTransformer 实例即可
分享到:
评论

相关推荐

    viewpage切换动画

    下面将详细探讨ViewPage切换动画的实现方式及其相关知识点。 首先,我们来了解一下四种主要的动画效果: 1. **缩放效果**:这种动画通常会在页面切换时,对即将显示的页面进行放大或缩小操作,创造出一种从远处...

    ViewPage动画

    总结来说,`ViewPage动画`是提升Android应用用户体验的重要手段,通过`setPageTransformer()`和自定义`PageTransformer`,开发者可以轻松实现各种炫酷的页面切换效果。无论选择预设的动画还是编写自己的动画逻辑,都...

    ViewPage循环滑动伸缩渐变过度动画

    在本主题“ViewPage循环滑动伸缩渐变过度动画”中,我们将深入探讨如何利用`ViewPager`实现循环滑动,并结合伸缩和渐变动画来提升用户体验,尤其是在多图片浏览的应用中。 首先,要实现`ViewPager`的循环滑动,常规...

    android viewpage例子,并且底栏有可滑动按钮,和viewpage滑动互相控制,项目源码,直接解压

    本项目提供的源码示例展示了如何结合`ViewPager`与底部滑动按钮实现交互控制,为用户提供了更好的导航体验。 `ViewPager`的工作原理是通过懒加载机制,只加载当前页面和相邻的一页,以节省资源。当用户滑动时,`...

    Android中用ViewPage实现真实翻页效果

    在Android开发中,为了提供丰富的用户体验,我们常常需要实现各种动画和交互效果。"Android中用ViewPage实现真实翻页效果"这个主题就是关于如何在Android应用中创建类似真实书籍翻页的效果。这种效果通常被用于...

    引导页两种实现方式(viewpage和WebView网页实现)

    例如,可以使用CSS3动画实现图片的滑动效果,或者利用JavaScript实现更复杂的用户交互。 3. 加载与显示:在Android应用中,创建一个WebView对象,设置其布局并加载预准备好的网页URL。需要注意的是,为了保证安全和...

    ViewPage实现手势滑动

    用户通过在屏幕边缘滑动来切换页面,ViewPage会自动处理页面间的过渡动画,提供流畅的用户体验。 要使用ViewPage,我们需要做以下几个步骤: 1. **创建页面内容**:每个页面都是由一个View或Fragment实例化而成。...

    ViewPage引导界面,带指针移动动画

    近期在用许多软件时发现,很多软件都有用户引导画面,基本上就是几张图片用来滑动,并且每张图片上都有一个引导的指针点,但是很多软件(包括一些大公司的软件)引导的指针都是没有动画的,甚至是画在图片上的,每次...

    三种ViewPager切换动画

    首先,我们理解一下ViewPager的基本用法,然后详细讨论如何实现这三种动画效果。 1. **ViewPager基础** ViewPager通常与PagerAdapter一起使用,PagerAdapter是PagerAdapter接口的一个实现,用于为ViewPager提供...

    ViewPage实现Tab左右滑动

    总的来说,实现“ViewPage实现Tab左右滑动”的功能需要结合`ViewPage`、`PagerAdapter`、`OnPageChangeListener`以及可能的`Fragment`管理。通过细心设计和优化,我们可以创建出和微信类似的滑动Tab效果,提高用户的...

    Android引导页面的滑动实现,解决ViewPage侧滑与ListView滑动的冲突问题

    4. **设置`OnTouchListener`**:为`ViewPage`和`ListView`添加`OnTouchListener`,在`onTouch`方法中判断滑动方向,通过返回值控制事件的消耗。例如,当检测到垂直滑动时,让`ListView`消耗事件,水平滑动则由`...

    android 自定义酷炫ViewPager切换效果带页面弹性指示器动画

    为了实现弹性效果,我们可以利用`ValueAnimator`或者`ObjectAnimator`来创建动画,调整页面的缩放、透明度等属性,以模拟弹性效果。 页面指示器是视觉上提示用户当前页面状态的重要元素。为了添加弹性效果,我们...

    viewgroup实现viewpage效果

    6. **动画效果**:为了实现平滑的页面切换,可以使用`ObjectAnimator`或`ValueAnimator`来添加过渡动画。 现在,我们来逐步实现这个过程: 1. **创建自定义ViewGroup**: 创建一个名为`CustomViewPager`的`...

    viewpage实现滑动翻页

    在Android应用开发中,"viewpage实现滑动翻页"是一种常见的用户界面设计技术,用于创建引人入胜且互动性强的用户体验。ViewPage通常被用作应用程序的引导页,帮助用户了解应用的主要功能和操作流程。下面我们将深入...

    viewpager实现动画tabhost效果

    2. 动画实现:可以使用`ObjectAnimator`或者`ValueAnimator`来创建平滑的过渡效果。例如,当用户点击某个标签时,可以改变其颜色或大小,同时滑动`ViewPager`到相应页面。 3. 交互同步:确保`TabLayout`的选中状态...

    Android-OverlayCardViewPager层叠卡片效果的ViewPage

    布局管理器负责决定卡片的位置和大小,而动画逻辑则控制卡片在滑动过程中的变形和移动。这可能涉及到对Android的`ObjectAnimator`和`ValueAnimator`的使用,以实现平滑的动画效果。同时,还需要处理触摸事件,确保...

    ViewPage无缝循环左右滑动

    4. 创建`TimerTask`,在其中调用`setCurrentItem()`方法,并在`ViewPage`的生命周期方法中控制定时器的启动和停止。 5. 自定义圆点布局,通过更改圆点颜色反映当前页面。 通过以上步骤,我们可以构建一个具备无缝...

    ViewPage滑动切换界面

    【ViewPage滑动切换界面】是一种常见的Android应用交互设计,用于实现类似iOS中TabBarController的效果,用户可以通过左右滑动在不同的页面间切换。ViewPage通常与ViewPagerIndicator等组件结合使用,提供更友好的...

    ViewPage 左右滑动实例

    1. 自定义滑动效果:可以通过覆写`ViewPager`的`setPageTransformer()`方法,实现自定义的页面滑动动画效果。 2. 页面预加载:通过设置`setOffscreenPageLimit(int limit)`,可以控制预加载的页面数量,提高滑动...

Global site tag (gtag.js) - Google Analytics