2011-03-06 101 views
0

我在银河选项卡上有一个全屏视图脚蹼,其中包含两个相对布局,每个布局显示5到10个图像视图。视图动画(滑入/滑出)导致的Android性能问题

我遇到问题,当我尝试滑动其中一个视图鳍状肢查看ut和另一个,“动画”什么都不做,然后只是切换。

如果我在每个视图鳍状肢儿童中除去其中一个图像视图,则动画很好。

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

鳍状肢动画发生时应该没有任何事情发生,所以我不明白这个问题。

感谢

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

我在我的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); 
    } 
} 

哪里图片是显示静态图像的和自定义视图实现动画是用于显示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(); 
     } 
    } 
+0

我已经使用ViewFlippers与滑动动画和相当复杂的布局,在星系标签之前成功。我很确定我甚至在这些视图中使用了RelativeLayouts。我没有遇到动画问题。我认为你应该尝试发布有问题的代码的一些部分。 – 2011-03-07 01:49:55

+0

谢谢,我发布了一些有问题的代码。 – Hamid 2011-03-07 08:48:54

回答

1

我可能是错的,但它看起来像你对我已经在一个混乱的方式重载新思维。

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

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

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

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

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

我不知道你是否还在寻找解决方案:这篇文章是相当老,并被忽略。

+0

感谢您的回复,但是,这是一年多以前,当我第一次开始Android开发时的一份不同的工作,一年中发生了很多变化,而且我不再在那里工作,所以我什至不能检查什么为了解决这个问题,我做了改变。 – Hamid 2012-02-22 17:33:30