Из документов Input Events
onTouch() От View.OnTouchListener. Это вызывается, когда пользователь выполняет действие, квалифицируемое как событие касания, включая прессу, выпуск или любой жест движения на экране (в пределах объекта).
Таким образом, вы можете использовать onTouchListener
:
iv1.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
// PRESSED
iv1.setImageResource(R.drawable.button_push);
return true; // if you want to handle the touch event
case MotionEvent.ACTION_UP:
// RELEASED
iv1.setImageResource(R.drawable.button_normal);
return true; // if you want to handle the touch event
}
return false;
}
});
Вот лучший способ
Вместо использования OnTouchListener
вы можете использовать Drawable селектор, чтобы изменить состояние показа кнопки.
Создать файл селектор XML в res/drawable
, например, "button_bg.xml"
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/button_push" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@drawable/button_focused" /> <!-- focused -->
<item android:drawable="@drawable/button_normal" /> <!-- default -->
</selector>
Теперь в вашей деятельности (может быть внутри onCreate()
), вы можете просто использовать
iv1.setBackgroundResource(R.drawable.button_bg);
И может делать то, что вы хотите внутри iv1.setOnClickListener()
, чтобы обрабатывать события click.You не нужно беспокоиться теперь о настройке вашего фонового ресурса в вашем коде. Он будет автоматически изменяться соответственно, когда ваша кнопка нажата или сфокусирована.
, но если я использую GridView для динамического ImageViews, то что? OnTouchListener возможен для GridView? или я должен использовать прослушиватель OnItemClick? – polandsux
См. Мои правки. Использование 2-го решения должно эффективно решить вашу проблему. –
спасибо, но я пытаюсь и пытается и не работает для меня :(, Probabli im делает что-то не так или этот метод не работает с GridView? Когда я нажимаю ImageView на GridView, тогда никакого эффекта. Я попытался установить android: background = blabla в одном файле XML и никакого эффекта тоже – polandsux