2010-12-23 43 views
2

在下面的片段中onDraw方法被调用大约10-15次。任何人都可以解释这种行为吗?Android onDraw调用大量次

LinearLayout ll = new LinearLayout(this); 
     View v = new View(this) { 
      @Override 
      protected void onDraw(Canvas canvas) { 
       // TODO Auto-generated method stub 
       System.out.println("large view on draw called"); 
       super.onDraw(canvas); 
      } 
     }; 
     v.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 2000)); 
     LinearLayout ll2 = new LinearLayout(this); 
     ll2.addView(v); 
     ScrollView sv = new ScrollView(this); 
     sv.addView(ll2); 
     ll.addView(sv); 
     LinearLayout ll1 = new LinearLayout(this); 
     ll1.addView(ll); 

回答

3

每次你做一些可能影响小部件的事情时,小部件都会被重绘。将小部件放在容器中可能会影响它。将容器放在另一个容器中可能会影响它。

你应该不会假设onDraw()会被调用多少次,除了它会被调用很多,因此需要很快。

+0

其实如果我不按照上面的层次结构,那么最终的视图似乎并没有提供一个可滚动的视图。除了第一次渲染视图之外,还会发生10-15次onDraw调用。有什么办法来优化上述布局。 – pankajagarwal 2010-12-24 04:53:54