MotionEvent.ACTION_MOVE in Y-Richtung von HorizontalScrollView klauen

  • Antworten:2
Harry
  • Forum-Beiträge: 52

14.12.2011, 20:38:35 via Website

Hallo,

ich arbeite gerade an einer Anwendung, bei der ich eine custom HorizontalScrollView (HSV) verwende.
In dieser HSV sind Bilder zu sehen welche nach rechts und links gescrollt werden können. Soweit so gut.

Nun möchte ich aber die Bilder mit einem "ACTION_MOVE"-Event aus der HSV ziehen.
Hierzu befindet sich hinter der HSV eine bildschirmfüllende View, in der ich die OnTouchEvent-Methode überschrieben habe.
Ich habe versucht in meiner HSV die Methode onTouchEvent ebenfalls zu überschreiben. Jedoch bekomme ich es nie hin, dass beides funktioniert.
Ich habe die Methode schon mehrfach umgestellt, ich kann jedoch entweder in der HSV scrollen, oder nur ein Bild herausziehen.
Ich verzweifle noch... :wacko:

HorizontalScrollView OnTouchEvent():
1@Override
2 public boolean onTouchEvent(MotionEvent _event)
3 {
4 Logger.enter();
5
6 switch (_event.getAction())
7 {
8 case MotionEvent.ACTION_DOWN:
9 {
10 m_fXDistance = m_fYDistance = 0f;
11 m_fLastX = _event.getX();
12 m_fLastY = _event.getY();
13 break;
14 }
15 case MotionEvent.ACTION_MOVE:
16 {
17 final float fX = _event.getX();
18 final float fY = _event.getY();
19 m_fXDistance += Math.abs(fX - m_fLastX);
20 m_fYDistance += Math.abs(fY - m_fLastY);
21 m_fLastX = fX;
22 m_fLastY = fY;
23 if (m_fXDistance > m_fYDistance)
24 {
25 return true;
26 }
27 break;
28 }
29 }
30 return false;
31 }

Mit der obigen Methode ist es möglich, Bilder herauszuziehen, aber nicht zu scrollen.

Hätte da vielleicht jemand einen Tipp für mich?

Gruß Harry

Antworten
Harry
  • Forum-Beiträge: 52

15.12.2011, 19:48:53 via Website

Hallo nochmal!

Wie immer habe ich mich wohl zu kompliziert ausgedrückt.
Um es einfacher dazustellen.

Ich habe ein Layout:
1<RelativeLayout>
2 <CustomView />
3 <CustomHorizontalScrollView />
4</RelativeLayout>

Die CustomHorizontalScrollView, ist vor der CustomView.
Somit empfängt erstmal die CustomHorizontalScrollView alle Touch-Events.

Wie stelle ich es an, dass die CustomHorizontalScrollView bei horizontalen "ACTION_MOVE"-Events scrollt und bei vertikalen Bewegungen das Event durchgegeben wird an die CustomView?

Vielleicht hat ja jetzt jemand eine Antwort.
Ich wäre euch sehr verbunden.

Gruß Harry

Antworten
Ansgar M
  • Forum-Beiträge: 1.544

15.12.2011, 21:58:20 via Website

Indem du in deiner onTouch Methode durch den Rückgabewert 'false' der App sagst, dass dein Listener sich nicht darum gekümmert hat..
public abstract boolean onTouch (View v, MotionEvent event)

Called when a touch event is dispatched to a view. This allows listeners to get a chance to respond before the target view.

Parameters
v The view the touch event has been dispatched to.
event The MotionEvent object containing full information about the event.

Returns
True if the listener has consumed the event, false otherwise.
Quelle
Oder versteh ich das falsch? Hast du so einen Listener?
Lg Ansgar

edit: Oh, das machst du ja schon, wenn ich das richtig sehe.. Sorry

— geändert am 15.12.2011, 21:59:27

Antworten