#android #ontouchlistener #motionevent
#Android #ontouchlistener #событие движения
Вопрос:
Я получаю вид прокрутки, а внутри него некоторую линейную компоновку с ImageView.
<ScrollView
android:layout_weight="41"
android:layout_width="0dip"
android:layout_height="match_parent"
android:background="@color/light_red_zone"
android:id="@ id/scrl_pass"
android:clickable="true"
android:layout_gravity="center">
<LinearLayout
android:id="@ id/lytPass"
android:background="@color/light_red_zone"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="left" />
</ScrollView>
Я добавляю ImageView динамически внутри LinearLayout, и у него есть слушатель
img1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
savelog(new Dat_Log_DA(id_tile, Long.toString(System.currentTimeMillis()), id_configurazione));
if (semaphoreAudio.tryAcquire()) {
play(m1);
}
}
});
это просто запускает медиаплеер при касании изображений.
Затем мне нужно получить событие движения в режиме прокрутки, поэтому я добавляю прослушиватель касания в режим прокрутки
scrl_pass = (ScrollView) findViewById(R.id.scrl_pass);scrl_pass.setOnTouchListener(new View.OnTouchListener() {
private float mY = 0;
private static final String tag = "SCROLL VIEW";
@Override
public boolean onTouch(View v, MotionEvent motionEvent) {
Log.d(tag, "ACTION " motionEvent.getActionMasked());
if ((motionEvent.getActionMasked() == MotionEvent.ACTION_DOWN) || (motionEvent.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN)) {
mY = motionEvent.getY();
Log.d(tag, "ACTION DOWN " mY);
} else if ((motionEvent.getActionMasked() == MotionEvent.ACTION_UP) || (motionEvent.getActionMasked() == MotionEvent.ACTION_POINTER_UP)) {
Log.d(tag, "Action da " mY " a " motionEvent.getY());
float currentPosition = scrl_pass.getScrollX();
}
return false;
}
});
проблема в том, что я получаю ACTION_MOVE (id = 2) и ACTION_UP (id = 1), но я не получаю ACTION_DOWN, если он выполняется в одном из этих imageviews
Комментарии:
1. Есть ли сенсорный прослушиватель и для дочерних элементов (линейный макет или ImageView)?
2. нет, в ImageView просто OnClickListener
3. Можете ли вы реализовать прослушиватель касания в ImageView и посмотреть, улавливает ли он действие ВНИЗ?
4. Я сделал, и в ImageView я могу перехватить действие ВНИЗ
5. Я пробовал, но запускает бесконечный цикл