我需要这样一个项目的前期API11。
进出口寻找一种方式来增加在右视图,这将导致当前全屏视图搬出到左,允许新视图在屏幕上visibe。
新的视图是屏幕宽度的约1/3,以便这就是距离当前fusll屏幕视图应该移出屏幕。
我有TranslateAnimation()累了多种解决方案,但我很高兴与动画,我在与原视图中的所有可点击区域不是在那里它们被认为是问题。
所以我就开始与布局玩与切缘阴性正确定位,但是当一个新的布局请求时几秒钟后视图弹出回原位。 也移动上的动画端听者视图时此溶液具有不连贯的效果。
这将是最简单的解决方案,具有在新的视图是进入还是退出,并在布局方面,它将在视图中的正确位置好的动画。
由于您使用的API11,使用动画API 。 所有视图现在有性能与相应的getter和setter方法。 要将视图向左移动超出范围,得到了屏幕的宽度,然后做:
View viewToShiftOut = getOutView();
ObjectAnimator outAnim = ObjectAnimator.ofFloat(viewToShiftOut, "x", 0, -widthOfScreen);
outAnim.setDuration(1000);
outAnim.start();
这将转向角度和它的内容完全在屏幕的1秒(1000毫秒)的持续时间。 在它的地方转移一个做到这一点:
View viewToShiftIn = getInView();
ObjectAnimator inAnim = ObjectAnimator.ofFloat(viewToShiftIn, "x", widthOfScreen, 0);
inAnim.setDuration(1000);
inAnim.start();
所有属性,可点击区域等将遵循视图,所以你当动画完成来完成。 你可以像这样在一起,它们的动画:
View viewToShiftOut = getOutView();
View viewToShiftIn = getInView();
ObjectAnimator outAnim = ObjectAnimator.ofFloat(viewToShiftOut, "x", 0, -widthOfScreen);
ObjectAnimator inAnim = ObjectAnimator.ofFloat(viewToShiftOut, "x", widthOfScreen, 0);
outAnim.setDuration(1000);
inAnim.setDuration(1000);
outAnim.start();
inAnim.start();
博客文章
编辑:我注意到你想只用1/3的一个视图切换,这样你就可以得到的像素量转移每个widthOfScreen/3
。
编辑2:另一个好处是你可以用硬件加速使用它,而其中大部分3.0+平板电脑有麻烦。
而不是使用fillAfter和fillEnabled,因为你可能做的,你需要以编程方式改变你的布局在AnimationListener以匹配所需的最终定位的onAnimationEnd。
要消除闪烁,你的动画,也onAnimationEnd查看调用clearAnimation()。
文章来源: Android animate view comming into screen that pushes the current full screen view out