Android的动画正在添加视图到屏幕,将当前全屏显示出来(Android animate view

2019-07-29 01:26发布

我需要这样一个项目的前期API11。

进出口寻找一种方式来增加在右视图,这将导致当前全屏视图搬出到左,允许新视图在屏幕上visibe。

新的视图是屏幕宽度的约1/3,以便这就是距离当前fusll屏幕视图应该移出屏幕。

我有TranslateAnimation()累了多种解决方案,但我很高兴与动画,我在与原视图中的所有可点击区域不是在那里它们被认为是问题。

所以我就开始与布局玩与切缘阴性正确定位,但是当一个新的布局请求时几秒钟后视图弹出回原位。 也移动上的动画端听者视图时此溶液具有不连贯的效果。

这将是最简单的解决方案,具有在新的视图是进入还是退出,并在布局方面,它将在视图中的正确位置好的动画。

Answer 1:

由于您使用的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+平板电脑有麻烦。



Answer 2:

而不是使用fillAfter和fillEnabled,因为你可能做的,你需要以编程方式改变你的布局在AnimationListener以匹配所需的最终定位的onAnimationEnd。

要消除闪烁,你的动画,也onAnimationEnd查看调用clearAnimation()。



文章来源: Android animate view comming into screen that pushes the current full screen view out