2016-12-23 4 views
1

In meiner App möchte ich ein Bild nach dem Zufallsprinzip auswählen und in der Mitte des Bildschirms platzieren. Danach können Animationen ausgeführt werden, das Bild wird verschoben und anschließend auf seine Ursprungsposition zurückgesetzt. Dann möchte ich ein neues Bild des Schaltergehäuses wählen, aber das Bild bleibt immer gleich. Wie kann ich es reparieren?android - wiederhole eine switch statement

public class MainActivity extends Activity implements OnGestureListener 
{  

     private ImageView imageView; 
     float x1,x2; 
     float y1, y2; 
     public int sco = 0; 
     TextView score; 
     final Random rand = new Random(); 

      @Override 
      protected void onCreate(Bundle savedInstanceState) 
      {   
         super.onCreate(savedInstanceState);      
         setContentView(R.layout.activity_main);       
         imageView = (ImageView) findViewById(R.id.imageview1); 
         imageView.setImageResource(getMyRandomResId()); 
         score = (TextView)findViewById(R.id.textView2);     
      } 


      int imag = rand.nextInt(4); 
       int getMyRandomResId() { 


        switch (imag) { 
        case 0: 

         return R.drawable.a; 
        case 1: 

         return R.drawable.b; 
        case 2: 

         return R.drawable.c; 
        default: 

         return R.drawable.d; 
       } 
      } 


      private boolean animationRunning = false; 

      public boolean onTouchEvent(MotionEvent touchevent) 
      { 

       final ViewPropertyAnimator animator = imageView.animate(); 

       switch (touchevent.getAction()) 
       { 

        case MotionEvent.ACTION_DOWN: 
        { 

         x1 = touchevent.getX(); 
         y1 = touchevent.getY(); 
         break; 
        } 
        case MotionEvent.ACTION_UP: 
        { 

         x2 = touchevent.getX(); 
         y2 = touchevent.getY(); 

         if (!animationRunning) { 
        //left to right sweep event on screen 
         if (x1 < x2 && (x2-x1)>=(y1-y2) && (x2-x1)>=(y2-y1)) { 

          animationRunning = true;       
          animator.translationX(imageView.getWidth() * 2)        
            .setDuration(180)          
            .setListener(new AnimatorListenerAdapter() { 
             @Override 
             public void onAnimationEnd(Animator animation) { 
              if(getMyRandomResId() == R.drawable.ballgrue) { 
               sco++; 
              } 
              imageView.setTranslationX(0); 
              imageView.setImageResource(getMyRandomResId()); 
              animationRunning = false; 

             } 
            }) 
            .start();   
         } 
      } 
      } 
      } 
     } 
} 
+0

Kann ich den 'getMyRandomResId()' Teil in einem Verfahren setzen, ohne zu verlieren? –

+0

Schritt durch Ihren Code mit einem Debugger. Dies ist wahrscheinlich der schnellste Weg, um die Ursache des Problems zu finden. –

+0

Aber wenn eine Methode fehlt, was wird der Debugger sagen? –

Antwort

1
  int getMyRandomResId() { 

    int imag = rand.nextInt(4); 
       switch (imag) { 
       case 0: 

        return R.drawable.a; 
       case 1: 

        return R.drawable.b; 
       case 2: 

        return R.drawable.c; 
       default: 

        return R.drawable.d; 
      } 
     } 

der Grund, warum Sie bcoz dieser nur

eine gleiche Bild bekam Hoffe, es hilft

+0

Sorry für die vorherige Antwort mein Fehler nur das wird dir sicher weiterhelfen !!!!!!!! –

+0

Danke, es funktioniert –

Verwandte Themen