2011-09-02 15 views
0

當我在做3d過渡視圖停止一段時間,然後旋轉兩個視圖包含第一個視圖列表視圖和地圖和第二個視圖列表視圖兩個視圖都是與數據庫進行交互

(固定代碼塊)當我在做3d過渡動畫獲取停止一段時間

/** 
* Setup a new 3D rotation on the container view. 
* 
* @param position the item that was clicked to show a picture, or -1 to show the list 
* @param start the start angle at which the rotation must begin 
* @param end the end angle of the rotation 
*/ 

private void applyRotation(int position, float start, float end) { 
    // Find the center of the container 
    final float centerX = mContainer.getWidth()/2.0f; 
    final float centerY = mContainer.getHeight()/2.0f; 

    final float centerX2 = mContainerView.getWidth()/2.0f; 
    final float centerY2 = mContainerView.getHeight()/2.0f; 

    // Create a new 3D rotation with the supplied parameter 
    // The animation listener is used to trigger the next animation 
    final Rotate3dAnimation rotation = 
      new Rotate3dAnimation(start, end, centerX, centerY, 310.0f, true); 
    rotation.setDuration(500); 
    rotation.setFillAfter(true); 
    rotation.setInterpolator(new AccelerateInterpolator()); 
    rotation.setAnimationListener(new DisplayNextView(position)); 

    mContainer.startAnimation(rotation); 

    //for view 
    final Rotate3dAnimation rotation2 = 
      new Rotate3dAnimation(start, end, centerX2, centerY2, 310.0f, true); 
    rotation2.setDuration(500); 
    rotation2.setFillAfter(true); 
    rotation2.setInterpolator(new AccelerateInterpolator()); 
    //rotation2.setAnimationListener(new DisplayNextView(position)); 
    mContainerView.startAnimation(rotation2); 
} 

/** 
* This class listens for the end of the first half of the animation. 
* It then posts a new action that effectively swaps the views when the container 
* is rotated 90 degrees and thus invisible. 
*/ 

private final class DisplayNextView implements Animation.AnimationListener { 
    private final int mPosition; 

    private DisplayNextView(int position) { 
     mPosition = position; 
    } 

    public void onAnimationStart(Animation animation) { 
    } 

    public void onAnimationEnd(Animation animation) { 
     mContainer.post(new SwapViews(mPosition)); 
    } 

    public void onAnimationRepeat(Animation animation) { 
    } 
} 

/** 
* This class is responsible for swapping the views and start the second 
* half of the animation. 
*/ 

private final class SwapViews implements Runnable { 
    private final int mPosition; 

    public SwapViews(int position) { 
     mPosition = position; 
    } 

    public void run() { 
     final float centerX = mContainer.getWidth()/2.0f; 
     final float centerY = mContainer.getHeight()/2.0f; 
     Rotate3dAnimation rotation; 

     final float centerX2 = mContainerView.getWidth()/2.0f; 
     final float centerY2 = mContainerView.getHeight()/2.0f; 
     Rotate3dAnimation rotation2; 

     if (mPosition==2) { 
      mButtonCounty.setVisibility(Button.GONE); 
      mButtonRadar.setVisibility(Button.VISIBLE); 
      mButtonRadar.requestFocus(); 

      mNearShopsView.setVisibility(LinearLayout.GONE); 
      mCountyListView.setVisibility(RelativeLayout.VISIBLE); 
      mCountyListView.requestFocus(); 

      rotation = new Rotate3dAnimation(90, 180, centerX, centerY, 310.0f, false); 

      rotation2 = new Rotate3dAnimation(90,180, centerX2, centerY2, 310.0f, false); 
     } else { 
      mButtonRadar.setVisibility(Button.GONE); 
      mButtonCounty.setVisibility(Button.VISIBLE); 
      mButtonCounty.requestFocus(); 

      mCountyListView.setVisibility(RelativeLayout.GONE); 
      mNearShopsView.setVisibility(LinearLayout.VISIBLE); 
      mNearShopsView.requestFocus(); 

      rotation = new Rotate3dAnimation(90, 0, centerX, centerY, 310.0f, false); 
      rotation2 = new Rotate3dAnimation(90,0, centerX2, centerY2, 310.0f, true); 
     } 

     rotation.setDuration(50); 
     rotation.setFillAfter(false); 
     rotation.setInterpolator(new DecelerateInterpolator()); 

     mContainer.startAnimation(rotation); 

     rotation2.setDuration(50); 
     rotation2.setFillAfter(false); 
     rotation2.setInterpolator(new DecelerateInterpolator()); 

     mContainerView.startAnimation(rotation2); 
    } 
} 

回答

0

你得到這個 「停」,而做非3D交易?如果沒有,那麼你應該啓用DrawingCache來發表你的看法。這主要在TextView中產生效果,因爲它們在動畫的每一步都重繪了它們。將View.setDrawingCacheEnabled(true);設置爲您的意見。