我创建了一个surfaceView并附加了一个alpha淡入淡出动画,但它似乎没有动画效果。
这是我的动画代码:
fadeOut = new AlphaAnimation(1.0f, 0.0f);
fadeOut.setInterpolator(new AccelerateInterpolator());
fadeOut.setDuration(1000);
fadeIn = new AlphaAnimation(0.0f, 1.0f);
fadeIn.setInterpolator(new AccelerateDecelerateInterpolator());
fadeIn.setDuration(1000);
animation = new AnimationSet(false);
animation.addAnimation(fadeIn);
animation.addAnimation(fadeOut);
//this.setAnimation(animation);
animation.setRepeatCount(Animation.INFINITE);
animation.setRepeatMode(Animation.REVERSE);
在我的onDraw方法中,我只需要调用此
super.onDraw(canvas);
this.startAnimation(animation);
有什么建议吗?
由于
答案 0 :(得分:1)
SurfaceView是一种特殊的视图。我对它的确切实现并不是那么熟悉,但我理解的是它在你的应用程序中创建了或多或少的漏洞,并将视图呈现在普通框架之外。这导致无法对其进行动画制作(或至少限制它)。
如果您真的想要淡入淡出动画,我建议您自己在SurfaceView中实现它,或者考虑从View而不是SurfaceView进行扩展。
答案 1 :(得分:1)
Android ICS(v4)添加了TextureView supports animations
由于SurfaceView的内容不在应用程序窗口中,因此无法有效地转换(移动,缩放,旋转)。这使得在ListView或ScrollView中使用SurfaceView变得很困难。 SurfaceView也无法与UI工具包的某些功能正确交互,例如淡化边缘或View.setAlpha()。
为了解决这些问题,Android 4.0引入了一个名为TextureView的新窗口小部件,它依赖于硬件加速的2D渲染管道和SurfaceTexture。 TextureView提供与SurfaceView相同的功能,但与SurfaceView不同,它表现为常规视图。例如,您可以使用TextureView来显示OpenGL场景或视频流。 TextureView本身可以是动画,滚动等。