2015-11-04 1 views
0

J'ai codé une application où, lorsque les utilisateurs tapent sur un ImageView, il va basculer de l'autre côté. Au début, imgFront sera affiché. Au démarrage, imgBack doit être affiché sur le même axe que imgFront. Cependant, cela n'arrive pas mais mon application est capable de fonctionner correctement. Des idées sur quel est le problème?Android: Impossible de retourner

Java:

import android.animation.AnimatorInflater; 
import android.animation.AnimatorSet; 
import android.media.Image; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageView; 

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 

ImageView imgFront; 
ImageView imgBack; 
ImageView imageView3; 
ImageView imageView4; 

boolean isBackVisible = false; // Boolean variable to check if the back image is visible currently 

AnimatorSet setRightOut; 
AnimatorSet setLeftIn; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    setRightOut = (AnimatorSet) AnimatorInflater.loadAnimator(getApplicationContext(), R.animator.flight_right_out); 
    setLeftIn = (AnimatorSet) AnimatorInflater.loadAnimator(getApplicationContext(), R.animator.flight_left_in); 

    imgFront = (ImageView) findViewById(R.id.imgFront); 
    imgFront.setOnClickListener(this); 

    imgBack = (ImageView) findViewById(R.id.imgBack); 
    imgBack.setOnClickListener(this); 

    imageView3 = (ImageView) findViewById(R.id.imageView3); 
    imageView3.setOnClickListener(this); 

    imageView4 = (ImageView) findViewById(R.id.imageView4); 
    imageView4.setOnClickListener(this); 





} 

@Override 
public void onClick(View view) { 
    switch (view.getId()) { 
     case R.id.imgFront: 
      if (!isBackVisible) { 
       setRightOut.setTarget(this.imgFront); 
       setLeftIn.setTarget(this.imgBack); 
       setRightOut.start(); 
       setLeftIn.start(); 
       isBackVisible = true; 
      } else { 
       setRightOut.setTarget(this.imgBack); 
       setLeftIn.setTarget(this.imgFront); 
       setRightOut.start(); 
       setLeftIn.start(); 
       isBackVisible = false; 
      } 
      break; 
     case R.id.imageView3: 
      if (!isBackVisible) { 
       setRightOut.setTarget(this.imageView3); 
       setLeftIn.setTarget(this.imageView4); 
       setRightOut.start(); 
       setLeftIn.start(); 
       isBackVisible = true; 
      } else { 
       setRightOut.setTarget(this.imageView4); 
       setLeftIn.setTarget(this.imageView3); 
       setRightOut.start(); 
       setLeftIn.start(); 
       isBackVisible = false; 
      } 
      break; 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 
} 

Activity.xml:

<RelativeLayout 
    android:layout_width="90dp" 
    android:layout_height="90dp" 
    android:layout_marginTop="80dp" 
    android:clickable="false"> 

    <ImageView 
    android:id="@+id/imgFront" 
    android:layout_width="90dp" 
    android:layout_height="90dp" 
    android:src="@drawable/front" 
    android:layout_alignTop="@+id/imgBack" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
     android:contentDescription="@string/imgFront" 
     android:clickable="false" /> 

    <ImageView 
    android:id="@+id/imgBack" 
    android:layout_width="90dp" 
    android:layout_height="90dp" 
    android:alpha="0" 
    android:src="@drawable/back" 
     android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
     android:contentDescription="@string/imgBack" 
     android:clickable="false" /> 

</RelativeLayout> 

<RelativeLayout 
    android:layout_width="90dp" 
    android:layout_height="90dp" 
    android:layout_marginTop="80dp" 
    android:layout_marginLeft="130dp" 
    android:clickable="false"> 

    <ImageView 
     android:id="@+id/imageView3" 
     android:layout_width="90dp" 
     android:layout_height="90dp" 
     android:src="@drawable/front" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:contentDescription="@string/imgFront3" 
     android:clickable="false" /> 

    <ImageView 
     android:id="@+id/imageView4" 
     android:layout_width="90dp" 
     android:layout_height="90dp" 
     android:alpha="0" 
     android:src="@drawable/back" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:contentDescription="imgBack3" 
     android:clickable="false" /> 
</RelativeLayout> 

Répondre

0

Bel effort pour ce code, mais s'il vous plaît jeter un oeil à ma bibliothèque juste développé FlipView qui comprend l'animation flip de base et s'étend ViewFlipper. Je veux dire une bibliothèque entièrement personnalisable où vous pourrez échanger n'importe quel type de vues et de mises en page avec n'importe quel type d'animation et de formes que vous désirez (et beaucoup plus), y compris le retournement d'image Gmail.