onClick блокировка onFling
В моей деятельности у меня есть imageView(вверху) и textView(внизу). Используя оба представления, я отображаю изображение и его соответствующее описание. Я реализовал fling, используя 'SimpleOnGestureListener'.. чтобы пользователь мог пролистывать разные изображения и соответствующее описание (при каждом броске я загружаю разное изображение и показываю его пользователю).
Теперь проблема началась, когда я добавил onClickListener для ImageView(мне нужно определить onClick, чтобы я мог отобразить тост с описанием изображения). Но onClick, кажется, блокирует событие броска. Как я могу обнаружить бросок.
Уже прошли следующие вопросы (и несколько других) на этом форуме..
Android - предоставление приоритета onTouch над onClick
Android onClick блокировка на Fling
но все еще не мог определить решение.
Ниже приведен код
public class MainActivity extends Activity{
ImageView m_imageView;
String[] m_imageNames = { "img1__", "img2__", "img2__"};
int m_index = 0;
Resources m_res;
Drawable m_drawable;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.v("INFO", "Inside oncreate");
m_imageView = (ImageView)findViewById(R.id.imageView1);
m_res = getResources();
int imageId = m_res.getIdentifier(m_imageNames[m_index], "drawable", getPackageName());
Drawable drawable = m_res.getDrawable(imageId);
m_imageView.setImageDrawable(drawable);
m_imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.v("INFO", "Inside onClick");
}
});
}
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.v("INFO", "onTouchEvent detected");
return gestureDetector.onTouchEvent(event);
}
SimpleOnGestureListener simpleOnGestureListener
= new SimpleOnGestureListener(){
private static final int SWIPE_MIN_DISTANCE = 120;
private static final int SWIPE_MAX_OFF_PATH = 250;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
//Fling code goes here
}
};
GestureDetector gestureDetector = new GestureDetector(null, SimpleOnGestureListener);
}
1 ответ
Эти методы обычно имеют boolean
Возвращает, которые указывают, что это событие было использовано и не должно распространяться дальше. Попробуйте изменить возвращаемые значения.