我有一个工作示例,可以同时为两个不同的动画制作动画。 但由于某些原因,这对Android 4.4.2(API级别19)设备无效。
动画发生了,但是没有应用setFillAfter,最后,视图返回原点。
以下是代码:
// Creating an animation set
AnimationSet animationSet = new AnimationSet(true);
animationSet.setFillAfter(true);
// Creating a Scale Animation
ScaleAnimation scaleAnimation = new ScaleAnimation(
zoomPercent, newZoom, zoomPercent, newZoom, // Start and end values for the Y axis scaling
Animation.RELATIVE_TO_SELF, zoomPointX, // Pivot point of X scaling
Animation.RELATIVE_TO_SELF, zoomPointY); // Pivot point of Y scaling
// Creating a Translate animation
TranslateAnimation anim = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, translateX,
Animation.RELATIVE_TO_SELF, 0f,
Animation.RELATIVE_TO_SELF, translateY,
Animation.RELATIVE_TO_SELF, 0f);
//Adding the animations to the set
animationSet.addAnimation(anim);
animationSet.addAnimation(scaleAnimation);
animationSet.setDuration(duration);
// Creating Alpha animation
AlphaAnimation alphaAnimation = new AlphaAnimation(1.0f,0f);
alphaAnimation.setFillAfter(true);
alphaAnimation.setDuration(duration);
relativeLayout.startAnimation(animationSet); //id="@+id/relative_layout"
darkOverlay.startAnimation(alphaAnimation); //darkOverlay is DarkOverlayView extends View, can be seen below
我动画的布局看起来像这样
<RelativeLayout
android:id="@+id/relative_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<com.example.DarkOverlayView
android:id="@+id/dark_overlay_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
任何建议都会有所帮助。到目前为止,我已经在两个集合上尝试过.setFillEnabled(true)但没有效果。 在调用第一个动画的onAnimationStart回调之后,我也尝试启动第二个动画。 这也没有结果。
更新 我发现了问题,当动画仍在运行时,我正在使用Animation.getTansformation(long currentTime, Transformation outTransformation),并且在动画结束后由于某种原因,结果未应用。