2016-08-03 1 views
-1

Я хочу эффект щелчка при щелчке изображения, но из моего кода всякий раз, когда я нажимаю изображение, в первый раз ничего не происходит, но когда я нажимаю второй раз, он показывает оранжевый цвет эффект, на который было нажато изображение. Ниже мой код, я знаю, что это может быть неправильный способ сделать это. Но я хочу знать, почему это происходитТребуется двойной щелчок, чтобы показать эффект щелчка на imageButton через onClick()

image.xml

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

ниже OnClick метод

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); 
} 

Пожалуйста, помогите, почему этот код демонстрирует такое поведение

+0

Просто используйте _AlphaAnimation_ или _ObjectAnimator_ – Piyush

+0

Мой вопрос, почему он показывает такое поведение? Я знаю, что есть другие способы сделать это. Пожалуйста, прочитайте последнюю строку моего вопроса, прежде чем просто вниз голосуете – FaisalAhmed

ответ

1

При щелчке по изображению для первого он просто установил Touch Listener на картинке. Итак, вместо добавления сенсорного прослушивателя в изображение внутри функции просмотра. Попробуйте это за пределами этого.

<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

У меня около 45 изображений, и я не хотел делать такой объект, поэтому я просто пытался это сделать. Я тоже так думал, но хорошо знать реальную причину этого. В любом случае спасибо за ваш ответ. – FaisalAhmed

0

попробуйте поместить

startActivity(view.getId()); 

выше

case MotionEvent.ACTION_CANCEL: 

или

case MotionEvent.ACTION_UP: 

он работал для меня. надеюсь, что это поможет

Смежные вопросы