近来用到了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切换动画的实现方式及其相关知识点。 首先,我们来了解一下四种主要的动画效果: 1. **缩放效果**:这种动画通常会在页面切换时,对即将显示的页面进行放大或缩小操作,创造出一种从远处...
总结来说,`ViewPage动画`是提升Android应用用户体验的重要手段,通过`setPageTransformer()`和自定义`PageTransformer`,开发者可以轻松实现各种炫酷的页面切换效果。无论选择预设的动画还是编写自己的动画逻辑,都...
在本主题“ViewPage循环滑动伸缩渐变过度动画”中,我们将深入探讨如何利用`ViewPager`实现循环滑动,并结合伸缩和渐变动画来提升用户体验,尤其是在多图片浏览的应用中。 首先,要实现`ViewPager`的循环滑动,常规...
本项目提供的源码示例展示了如何结合`ViewPager`与底部滑动按钮实现交互控制,为用户提供了更好的导航体验。 `ViewPager`的工作原理是通过懒加载机制,只加载当前页面和相邻的一页,以节省资源。当用户滑动时,`...
在Android开发中,为了提供丰富的用户体验,我们常常需要实现各种动画和交互效果。"Android中用ViewPage实现真实翻页效果"这个主题就是关于如何在Android应用中创建类似真实书籍翻页的效果。这种效果通常被用于...
例如,可以使用CSS3动画实现图片的滑动效果,或者利用JavaScript实现更复杂的用户交互。 3. 加载与显示:在Android应用中,创建一个WebView对象,设置其布局并加载预准备好的网页URL。需要注意的是,为了保证安全和...
用户通过在屏幕边缘滑动来切换页面,ViewPage会自动处理页面间的过渡动画,提供流畅的用户体验。 要使用ViewPage,我们需要做以下几个步骤: 1. **创建页面内容**:每个页面都是由一个View或Fragment实例化而成。...
近期在用许多软件时发现,很多软件都有用户引导画面,基本上就是几张图片用来滑动,并且每张图片上都有一个引导的指针点,但是很多软件(包括一些大公司的软件)引导的指针都是没有动画的,甚至是画在图片上的,每次...
首先,我们理解一下ViewPager的基本用法,然后详细讨论如何实现这三种动画效果。 1. **ViewPager基础** ViewPager通常与PagerAdapter一起使用,PagerAdapter是PagerAdapter接口的一个实现,用于为ViewPager提供...
总的来说,实现“ViewPage实现Tab左右滑动”的功能需要结合`ViewPage`、`PagerAdapter`、`OnPageChangeListener`以及可能的`Fragment`管理。通过细心设计和优化,我们可以创建出和微信类似的滑动Tab效果,提高用户的...
4. **设置`OnTouchListener`**:为`ViewPage`和`ListView`添加`OnTouchListener`,在`onTouch`方法中判断滑动方向,通过返回值控制事件的消耗。例如,当检测到垂直滑动时,让`ListView`消耗事件,水平滑动则由`...
为了实现弹性效果,我们可以利用`ValueAnimator`或者`ObjectAnimator`来创建动画,调整页面的缩放、透明度等属性,以模拟弹性效果。 页面指示器是视觉上提示用户当前页面状态的重要元素。为了添加弹性效果,我们...
6. **动画效果**:为了实现平滑的页面切换,可以使用`ObjectAnimator`或`ValueAnimator`来添加过渡动画。 现在,我们来逐步实现这个过程: 1. **创建自定义ViewGroup**: 创建一个名为`CustomViewPager`的`...
在Android应用开发中,"viewpage实现滑动翻页"是一种常见的用户界面设计技术,用于创建引人入胜且互动性强的用户体验。ViewPage通常被用作应用程序的引导页,帮助用户了解应用的主要功能和操作流程。下面我们将深入...
2. 动画实现:可以使用`ObjectAnimator`或者`ValueAnimator`来创建平滑的过渡效果。例如,当用户点击某个标签时,可以改变其颜色或大小,同时滑动`ViewPager`到相应页面。 3. 交互同步:确保`TabLayout`的选中状态...
布局管理器负责决定卡片的位置和大小,而动画逻辑则控制卡片在滑动过程中的变形和移动。这可能涉及到对Android的`ObjectAnimator`和`ValueAnimator`的使用,以实现平滑的动画效果。同时,还需要处理触摸事件,确保...
4. 创建`TimerTask`,在其中调用`setCurrentItem()`方法,并在`ViewPage`的生命周期方法中控制定时器的启动和停止。 5. 自定义圆点布局,通过更改圆点颜色反映当前页面。 通过以上步骤,我们可以构建一个具备无缝...
【ViewPage滑动切换界面】是一种常见的Android应用交互设计,用于实现类似iOS中TabBarController的效果,用户可以通过左右滑动在不同的页面间切换。ViewPage通常与ViewPagerIndicator等组件结合使用,提供更友好的...
1. 自定义滑动效果:可以通过覆写`ViewPager`的`setPageTransformer()`方法,实现自定义的页面滑动动画效果。 2. 页面预加载:通过设置`setOffscreenPageLimit(int limit)`,可以控制预加载的页面数量,提高滑动...