2016-08-03 16 views
-1

Ich möchte Klick-Effekt, wenn Bild geklickt wird, aber aus meinem Code, wenn ich zum ersten Mal auf Bild klicken nichts passieren, aber wenn ich zum zweiten Mal es zeigt orange Farbe Auswirkung, dass auf das Bild geklickt wurde. Unten ist mein Code, ich weiß, dass dies möglicherweise nicht der richtige Weg ist. Aber ich möchte wissen, warum dies geschiehtEs dauert doppelt klicken, um Klick-Effekt auf imageButton durch onClick() zu zeigen

image.xml

<ImageView 
       style="@style/icon" 
       android:background="@drawable/fear_96" 
       android:onClick="see" 
       android:id="@+id/abulation" 
       /> 

unter Onclick Methode ist

public void see(View view) { 

    view.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View view, MotionEvent motionEvent) { 

      switch (motionEvent.getAction()) { 
       case MotionEvent.ACTION_DOWN: 
        view.getBackground().setColorFilter(0xf0f47521, 
PorterDuff.Mode.SRC_ATOP); 
        view.invalidate(); 
        break; 

       case MotionEvent.ACTION_CANCEL: 
       case MotionEvent.ACTION_UP: 

        view.getBackground().clearColorFilter(); 
        view.invalidate(); 
      startActivity(view.getId()); 
        break; 
      } 

      return true; 
     } 
    }); 
    } 

    public void startActivity(int id) 
    { 
    Intent intent=new Intent(this,DuwaListView.class); 
    switch (id) 
    { 
     case R.id.abulation: 
      intent.putExtra(Intent.EXTRA_TEXT,"Abulation"); 
      break; 
     case R.id.dressing: 
      intent.putExtra(Intent.EXTRA_TEXT,"Dressing"); 
     break; 
     case R.id.restroom: 
      intent.putExtra(Intent.EXTRA_TEXT,"Restroom"); 
      break; 
     default: 

Toast.makeText(this,"underconstruction",Toast.LENGTH_SHORT).show(); 
      return; 


    } 


    startActivity(intent); 
} 

Bitte helfen Sie, warum dieser Code ein solches Verhalten zeigt

+0

Verwenden Sie einfach _AlphaAnimation_ oder _ObjectAnimator_ – Piyush

+0

Meine Frage ist, warum es ein solches Verhalten zeigt? Ich weiß, dass es andere Methoden gibt, das zu tun. Bitte lesen Sie die letzte Zeile meiner Frage, bevor Sie einfach abstimmen – FaisalAhmed

Antwort

1

Wenn Sie auf Bild für das erste klicken, stellen Sie einfach die Touch Listener auf dem Bild. Also anstatt Touch-Listener zum Bild innerhalb der See-Funktion hinzufügen. Versuchen Sie es mit außerhalb dieser.

<ImageView 
    style="@style/icon" 
    android:background="@drawable/fear_96" 
    android:id="@+id/abulation" /> 

ImageView imageView = (ImageView)findViewById(R.id.abulation); 
imageView.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View view, MotionEvent motionEvent) { 

      switch (motionEvent.getAction()) { 
       case MotionEvent.ACTION_DOWN: 
        view.getBackground().setColorFilter(0xf0f47521, PorterDuff.Mode.SRC_ATOP); 
        view.invalidate(); 
        break; 

       case MotionEvent.ACTION_CANCEL: 
       case MotionEvent.ACTION_UP: 
        view.getBackground().clearColorFilter(); 
        view.invalidate(); 
        startActivity(view.getId()); 
        break; 
      } 

      return true; 
     } 
    }); 
    } 
+0

Ich habe um 45 imageButton und ich wollte nicht so viel Objekt machen, also habe ich nur versucht, auf diese Weise zu tun. Ich dachte auch auf diese Weise, aber es ist gut, den wahren Grund dafür zu kennen. Wie auch immer, danke für deine Antwort. – FaisalAhmed

0

Versuchen die Indienststellung

startActivity(view.getId()); 

über dem

case MotionEvent.ACTION_CANCEL: 

oder

case MotionEvent.ACTION_UP: 

es für mich gearbeitet. hoffe das hilft