2012-08-24 22 views
0

所以首先让我给你一些背景,我想要做的和我已经尝试过:) 我有多达十个视图,我需要不断从右向左移动。一旦一个视图离开屏幕,另一个视图从右侧进入。所有的观点都需要可以触摸。我能够通过几种方式实现这一点,但它们并不流畅(一些结界,其他人在应用程序放慢时似乎跳跃)。所有这些视图都在一个viewGroup中,我正在重用它们(只有10个视图)。让touchevents在2.3上使用ObjectAnimator

这些是我试图方式:

  1. 改变的视图的边缘(用处理程序更新)
  2. 调用View.layout(L,T,R,B)(更新使用的处理程序)
  3. 获取View.getDrawingCache()和绘图它在surfaceView(也使用一个处理程序)
  4. 使用ObjectAnimator(nineoldandroids)

他们没有一个工作得非常流畅(观看会停止几分之一秒和跳跃),但最好的是使用动画。我第一次使用android中的常规translateAnimation,但当然不可触摸。我试图让动画的矩阵(我不知道如果我做错了),但它不会返回顶部/左视图:

Transformation outTransformation = new Transformation(); 
     getTransformation(System.currentTimeMillis(), outTransformation); 
     Matrix transformationMatrix = outTransformation.getMatrix(); 
     float[] matrixValues = new float[9]; 
     transformationMatrix.getValues(matrixValues); 
     float transX = matrixValues[2]; 
     float transY = matrixValues[5]; 

所以现在我的问题。

我得到的最好结果是使用ObjectAnimator。

mAnimation[index] = ObjectAnimator.ofFloat(mViews[index], "translationX", -left); 
      mAnimation[index].setDuration(time); 
      mAnimation[index].setInterpolator(new LinearInterpolator()); 
      mAnimation[index].addListener(mAnimatorListener); 
      mAnimation[index].start(); 

我能够触摸使用ObjectAnimator,但只能使用android 3.0和以上(不是2.3)。

有谁知道为什么或者我该如何在android 2.3上使用touch? 还是有更好的方法来移动所有这些意见? 在移动/动画这么多视图时,我应该记住或做些什么?

您是否有任何想法知道如何使用上面提到的其他选项来提高“平滑度”(停顿或停顿几分之一秒,然后跳跃追赶)?

ViewGroup是最好用的吗?对不起,这么多问题。

任何想法,想法或意见将是超级有用,非常感谢:) 如果你有更多的问题或不明白的东西让我知道。

回答

0

我刚刚发现你的问题,因为我遇到了同样的问题。我有一个布满按钮的布局,我使用NineOldAndroids中的ObjectAnimator来移动它。如果API> = 11,那么一切工作正常,所有按钮都可以点击到他们的新位置。但是,如果API布局移动,则按钮在其新位置不可点击,而是在旧的位置。还请检查this的答案。