2012-03-17 58 views
0

爲什麼這段代碼不起作用?它總是強制結束我想切換視圖,但沒有發生。要麼它強制殺死或顯示黑屏。我想切換四個視圖。如何創建動畫?我已經創建了兩個自定義視圖,並且我想切換該視圖

public class DrawDemoActivity extends Activity { 
     DemoView demoview ; 
     FinalView finalview; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     boolean first=true; 
     boolean sec=false; 
     demoview = new DemoView(this); 
     finalview = new FinalView(this); 
      // for contnivew switching the view 
     for(int i=0;i>0;i++) 
     { 
      if (first==true||sec==false) 
      { 
       setContentView(finalview); 
       first=false; 
       sec=true; 
      }else if(first==false||sec==true) 
      { 
       setContentView(demoview); 
       first=true; 
       sec=true; 
      }else if(first==true||sec==true) 
      { 
       setContentView(demoview); 
       first=false; 
       sec=false; 
      }else 
      { 
       setContentView(demoview); 
       first=false; 
       sec=false; 
      } 
     } 
    } 
//first view 
    private class DemoView extends View{ 
     public DemoView(Context context){ 
      super(context); 
     } 

     @Override protected void onDraw(Canvas canvas) { 
      super.onDraw(canvas); 

      // custom drawing code here 
      // remember: y increases from top to bottom 
      // x increases from left to right 
      int x = 150; 
      int y = 200; 
      Paint paint = new Paint(); 
      paint.setStyle(Paint.Style.FILL); 

      // make the entire canvas white 
      paint.setColor(Color.CYAN); 
      canvas.drawPaint(paint); 
      // another way to do this is to use: 
      // canvas.drawColor(Color.WHITE); 

      // draw blue circle with antialiasing turned on 
      paint.setAntiAlias(true); 

      paint.setColor(Color.RED); 
      canvas.drawCircle(x-24, y+30, 11, paint); 
      paint.setColor(Color.WHITE);    
      canvas.drawLine(0, 300 , 320, 300, paint); 
     } 
    } 
    //second view 
     private class FinalView extends View { 
      public FinalView(Context context){ 
     super(context); 
     } 

      @Override 
      protected void onDraw(Canvas canvas) { 
       super.onDraw(canvas); 
       // custom drawing code here 
       // remember: y increases from top to bottom 
       // x increases from left to right 
       int x = 150; 
       int y = 200; 
       Paint paint = new Paint(); 
       paint.setStyle(Paint.Style.FILL); 

       // make the entire canvas white 
       paint.setColor(Color.CYAN); 
       canvas.drawPaint(paint); 
       // another way to do this is to use: 
       // canvas.drawColor(Color.WHITE); 

       // draw blue circle with antialiasing turned on 
       paint.setAntiAlias(true); 


       paint.setColor(Color.BLACK); 
       canvas.drawCircle(x, y, 11, paint); 
       canvas.drawCircle(x-11, y+19, 11, paint); 
       canvas.drawCircle(x, y+38, 11, paint); 
       canvas.drawCircle(x+20, y+30, 11, paint); 
       canvas.drawCircle(x-11, y-19, 11, paint); 


       paint.setColor(Color.RED); 
       canvas.drawCircle(x+41, y+30, 11, paint); 
       canvas.drawCircle(x+20, y+9, 11, paint); 
       canvas.drawCircle(x-23, y-37, 11, paint); 

       canvas.drawLine(0, 300 , 320, 300, paint);  
      } 
    } 
} 
+0

使用viewFlipper在一個Activity中切換視圖,使用都是以錯誤的方式進行,請參見[here](http://oudomvilla.wordpress.com/2010/08/08/android-switching-screens-in-an-activity-with-animations-using-viewflipper /) – 2012-03-17 10:42:02

+0

anand thaks但我想顯示動畫,然後hw我應該這樣做。我想顯示一些然後消失,然後再次顯示在視圖中。 – Ashishsingh 2012-03-17 16:22:58

回答

0

看來你setContentView()將不會被調用,因爲你永遠循環迭代

for(int i=0;i>0;i++) 
0

這個問題似乎是在onCreate方法。由於for循環,setContentView方法無法訪問,其中i永遠不會大於零。 int i=0;i>0;i++

此外,正如Anand提到的,如果您想切換視圖,請使用ViewFlipper。你可以找到一個很好的例子here

+0

如果我編輯循環,那麼它也不工作。 – Ashishsingh 2012-03-17 16:28:04

+0

@Ashishsingh - 你能告訴我發生了什麼嗎?如果發生錯誤,logcat條目會有所幫助。 – Rohit 2012-03-17 17:42:55

+0

它只是在32種類型的錯誤中拋出異常錯誤。 – Ashishsingh 2012-03-17 18:52:46

0

使用視圖鰭狀肢,你可以在調用下一個viewFlipper之前設置他們進出的動畫。下面是可能有用的東西..

viewFlipper.setInAnimation(pushUpIn); 
viewFlipper.setOutAnimation(pushUpOut); 
viewFlipper.showNext();