android - Losing ACTION_DOWN parameters when InterceptTouchEvent -


i have parent view should follow finger on touch , child view inside clickable. used onintercepttouchevent decide if have consume touch event on parent or child comparing touch distance before action_up.

obviously used "retrun false" on action_down in onintercepttouchevent (because propagate event before calculations) unfortunately ontouch loses action_down.

the question how can initialize parameters (as initial position of parent view) ontouch (not onintercepttouchevent)?

footnote: reason have write ontouch inline other codes have implemented onintercepttouchevent inside object definition.

a part of object definition:

boolean mmisbeingdragged;  float mlastx; float mstartx; int mtouchslop=viewconfiguration.get(getcontext()).getscaledtouchslop();  @override public boolean onintercepttouchevent(motionevent event) {      switch (event.getaction()) {         case motionevent.action_down:             mlastx = event.getx();             mstartx = mlastx;            break;          case motionevent.action_move:             float x = event.getx();             float y = event.gety();             float xdelta = math.abs(x - mlastx);              float xdeltatotal = x - mstartx;             if (math.abs(xdeltatotal) > mtouchslop) {                 mmisbeingdragged = true;                 mstartx = x;                 return true;             }             break;          case motionevent.action_cancel:          case motionevent.action_up:             mmisbeingdragged = false;             break;     }      return false; } 

and ontouch defined outside of object (inline program)

    myview.setontouchlistener(new ontouchlistener()      {         float curx=0;         float oldx;         float startx;         float delta=0;         float togo;         boolean misbeingdragged=false;         int mtouchslop=viewconfiguration.get(getactivity()).getscaledtouchslop();          @override          public boolean ontouch(final view v, motionevent event)          {             switch (event.getaction()) {             case motionevent.action_down:             //here prblem! how initialize startx?              case motionevent.action_move:                  curx = event.getrawx();                 delta=curx-startx;                 togo=oldx+delta;                  if (math.abs(delta) > mtouchslop) {                     misbeingdragged=true;                     followfingerfunction(v,togo)                     return true;                 }                 break;                  case motionevent.action_up:                     if (!misbeingdragged){v.performclick();}                 break;         }             return true;     }     }); 

just expose mstartx activity. ( know not perfect seems ok).

class parentview extends viewgroup (or other viewgroup) {     int startx;     public int getstartx(){         return startx;     } } 

// after call getstartx() activity.


Comments

Popular posts from this blog

c# - How Configure Devart dotConnect for SQLite Code First? -

java - Copying object fields -

c++ - Clear the memory after returning a vector in a function -