2012-05-31 58 views
0

我正在嘗試創建一個在屏幕上具有一組圖像的應用程序。當用戶點擊圖像然後搖動手機時,視圖中的所有圖像都會從屏幕上消失,除了他點擊的圖像。這是我寫的到現在:使所有圖像動態消失

// List of the Images for the app 
private ImageView image1, image2; 
private ImageView image3, image4; 
private ImageView image5, image6; 
private ImageView image7, image8; 
private ImageView image9, image10; 
private ImageView image11, image12; 

private ImageView selectedImage; 
private boolean flag = true; 

// an array that will hold all the images. 
private ImageView cards[] = new ImageView[12]; 

//SET THE IMAGES... 


// onShake 
mSensorListener 
     .setOnShakeListener(new ShakeEventListener.OnShakeListener() { 
       public void onShake() { 
       if (selectedImage != null) { 
        showSelectedImageOnly(); 
       } 
      } 
     }); 

private void showSelectedImageOnly() { 
    if(!flag) 
     return; 

    for (ImageView image : cards){ 
     if(image.getId() != selectedImage.getId()){ 
      image.setVisibility(View.INVISIBLE); 
      Log.d("--MY-APP", "image number "+image.getId()+" was deleted"); 
     } 
    } 
    flag = false; 
} 

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
    case R.id.ImageView01: 
     selectedImage = null; 
     selectedImage = image1; 
     rotateImage(0, image1, image2); 
     defineTrickCard(0); 
     break; 
    case R.id.ImageView02: 
     selectedImage = image1; 
     rotateImage(0, image1, image2); 
     defineTrickCard(0); 
     break; 
    case R.id.ImageView03: 
    // .... THIS GOES ON... 
    case R.id.ImageView12: 
     selectedImage = image11; 
     rotateImage(5, image11, image12); 
     defineTrickCard(5); 
     break; 
    } 
} 

private void rotateImage(int index, ImageView firstImage, 
     ImageView secondImage) { 
    if (isImages[index]) { 
     applyRotation(0, 90, firstImage, secondImage, isImages[index]); 
     isImages[index] = !isImages[index]; 

    } else { 
     applyRotation(0, -90, firstImage, secondImage, isImages[index]); 
     isImages[index] = !isImages[index]; 
    } 
} 

private void applyRotation(float start, float end, ImageView firstImage, 
     ImageView secondImage, boolean isFirst) { 
    // Find the center of image 
    final float centerX = firstImage.getWidth()/2.0f; 
    final float centerY = firstImage.getHeight()/2.0f; 

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

    if (isFirst) { 
     firstImage.startAnimation(rotation); 
    } else { 
     secondImage.startAnimation(rotation); 
    } 

} 

的問題是,當用戶點擊一個以上的形象,並且該手機已被振盪後,都得到單擊的圖像留在視圖,其餘消失作爲neede。

有關如何解決此問題的任何想法?我必須讓所有未選中的(包括前面的選項)從屏幕上消失。

UPDATE:

更新的代碼,以顯示rotateImage功能,爲3D動畫的代碼的其餘部分是從這個very good tutorial拍攝。

回答

0

我想你正在使用Animation旋轉rotateImage方法中的圖像。在動畫的情況下需要注意的一點是,在動畫過程中,對象不會改變。因此,如果您必須將視圖設置爲隱藏,則需要註冊onAnimationEnd事件並致電view.setVisibility(View.INVISIBLE)

+0

我一直在使用[本教程](http://www.inter-fuser.com/2009/08/android-animations-3d-flip.html),它有一個圖像過渡到最後的輪換。 – thepoosh

+0

您可以發佈'rotateImage'方法的代碼嗎?您可以更新您的原始問題。 – Rajesh

+0

已更新原始問題 – thepoosh