视图动画的Android性能问题(滑入/滑出)

时间:2011-03-06 21:09:58

标签: android animation viewflipper

我在galaxy选项卡上有一个全屏视图鳍状肢,包含两个相对布局,每个布局都显示5到10个图像视图。

当我尝试滑动其中一个视图翻板视图而另一个时,我遇到了问题,“动画”什么都不做,然后只是切换。

如果我删除每个视图鳍状肢子视图中除了一个图像视图之外的所有视图,那么动画就可以了。

我可以以某种方式强制它为动画使用图像的混合版本,还是导致性能问题的相对布局容器?

在鳍状肢动画发生时应该没有任何动作,所以我无法理解这个问题。

由于

编辑:一些有问题的代码:也许这可能表明导致性能问题的区域?

我有onClick,两个方法调用,用于向后切换视图和转发。在添加到翻板并切换之前,视图会立即“生成”。

所以,点击后退按钮(例如)我有(除其他外)....

nextView = new RelativeLayout(this);
makeAView(selectedViewObjects, viewHolder2);
switchViewNow(-1);
currentView = nextView;
...


private void makeAView(ViewObjects vObjects, RelativeLayout nextView)
{
  for(Object obj :  vObjects.viewObjects)
  {
   if(obj instanceof Image)
  {
    addImageView(nextView, obj);
  {
  else
  {
   if(obj instanceof Anim)
  {
    addAnimView(nextView, obj);
  }
}

其中Image是用于显示静态图像的自定义View实现,Anim是用于显示AnimationDrawable(多帧图像周期)的自定义视图实现。

接下来我们有切换方法:

private void switchViewNow(int direction)
    {
        if(direction == -1)
        {
            viewFrame.setInAnimation(AnimClass.inFromLeftAnimation(null));
            viewFrame.setOutAnimation(AnimClass.outToRightAnimation(null));
            viewFrame.showNext();
        }
        else
        if(direction == 1)
        {
            viewFrame.setInAnimation(AnimClass.inFromRightAnimation(null));
            viewFrame.setOutAnimation(AnimClass.outToLeftAnimation(null));
            viewFrame.showNext();
        }
    }

1 个答案:

答案 0 :(得分:1)

我可能是错的,但它看起来像是你以一种令人困惑的方式重载了nextView。

它是在makeAView之外定义的,但是makeAView需要一个名为nextView的参数。

您将viewHolder2作为nextView传递给此函数。

这意味着makeAView不会更改'global'nextView,它会更改viewHolder2。

但是你似乎认为'全局'nextView已被修改,因为你用它来分配currentView。

我认为如果为这两个版本的nextView分配唯一的名称,这将是一个很好的起点。

我想知道你是否还在寻找解决方案:这篇文章相当陈旧而且被忽略了。