为什么我的animation留下踪迹?

我使用翻译animation从屏幕的左侧到右侧animation一个ImageView。 ImageView放置在使用FrameLayout的主布局顶部的RelativeLayout中。

当我在模拟器上运行animation时,一切都很顺利,但是当我使用它在G1上运行时,它会在其后面留下可视的工件并影响其后面的文本组件的渲染。

这是一个性能问题,我太雄心勃勃,或者是我可以克服的错误?

如果是性能问题,我有什么可以改进的地方?

  • 用自定义animation显示活动
  • 同时启动多个ViewPropertyAnimators
  • 滑动和滑动布局与animationandroid
  • Android 6.0 Marshmallow:片段animation的奇怪错误
  • 如何实现材质devise编排表面animation
  • Android TranslateAnimation在animation后重置
  • CoordinatorLayout + TabView + AnimateView(从顶部)
  • animation在视图之间转换,并在z轴上旋转,并具有深度感知
  • 我现在可能有点老了,但我刚刚发现这个:

    http://groups.google.com/group/android-developers/browse_thread/thread/5481450f8b71a26c/e750730b9953d9a8?lnk=gst&q=animation+leaves+trails#e750730b9953d9a8

    不知道你使用的是什么Android版本,但它可能是Android库中的错误!

    看起来这就是我的问题! 🙂

    …当它不是你的错时,Dontcha只是喜欢它! :d

    我也在2.3上遇到同样的问题。

    使Animation.applyTransformation中的移动视图的容器(移动视图所在的布局)无效。

    看到:

    Android – 使用animation的工件

    这里有一个解决方法,我发现解决了这个问题:“一个简单的解决方法是用一个小的(1像素应该做的)在右侧/底部的透明区域填充图像 – 这将不会影响它的外观,但是这会迫使一个比实际图像稍大的区域失效,从而弥补这个错误。“

    http://code.google.com/p/android/issues/detail?id=22151

    没有真正看到这个问题,听起来像你没有清除显示缓冲区,然后写下一帧。 这听起来不像是一个性能问题。

    你有控制是否设备双缓冲或不?

    鉴于它在仿真器上工作,这可能指向模拟器的一个问题,或者你的代码中没有出现在模拟器上的错误(我认为这在技术上是模拟器的一个问题!),而不是性能问题。

    我会build议使用SurfaceView的animation。 它是双缓冲的,所以如果你正确使用它应该消除闪烁。 如果你想要一个例子,SDK中包含的LunarLander演示很好地展现了这一点。 另外,如果你有一个更具体的代码问题,请离开。

    至于一般的Android性能,很可能会有相当高的帧速率,所以你不会期望太多。

    这也发生在我身上。 我使用的是使用1.6版Google API的模拟器,我刚刚确认它发生在运行FRF83的Nexus One上。 以下是相关的代码:

    Animation a = new TranslateAnimation(0.0f, 0.0f, 100.0f, 0.0f); a.setDuration(2000); this.myView.startAnimation(a); 

    以下是实例化视图的相关代码:

     View v = new View(this.getApplication()); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, 80); v.setLayoutParams(params); v.setBackgroundColor(0xFFFF0000); // LinearLayout layout = (LinearLayout)this.findViewById(R.id.theLayout); layout.addView(v); // v.setOnClickListener(new View.OnClickListener() { public void onClick(View arg0) { // TODO Auto-generated method stub doAnimation(); } }); // myView = v; 

    所以基本上,双缓冲等,正在由操作系统来处理,我根本无法控制它。

    我有一个类似的问题在Android 2.3,所以这个错误可能依然存在。 我用的是一个带有一些透明部分的PNG的ImageView。 当使用TranslateAnimation进行animation时,此imageview正在离开轨迹。 使用一个假的背景drawable的imageview的道路(我使用drawable作为背景)。

    我想到了这个果冻豆,我正在经历一个画廊的观点,同时执行一些animation。 它看起来更像是一个绘图问题不是CPU ….

    让你的活动实现界面AnimatorListener …..覆盖下面的方法,并select你想重画你的视图

      @Override public void onAnimationEnd(Animator animation) { // TODO Auto-generated method stub mView.requestLayout(); Toast.makeText(this, "animation ended", 0).show(); } @Override public void onAnimationRepeat(Animator animation) { // TODO Auto-generated method stub mView.requestLayout(); } @Override public void onAnimationStart(Animator animation) { // TODO Auto-generated method stub mView.requestLayout(); }