2014-10-28 2 views
0

Я ищу решение для обнаружения конца из жестов onScroll. Я нашел just this, но я не хочу, чтобы он отображался в определенном виде, чем в действии, которое реализует OnGestureListener в целом. Каков наилучший способ решить эту проблему?Как определить, где закончился onScroll в сочетании с GesturDetector?

Мой код так тариф:

public class MyActivity extends Activity implements OnGestureListener { 

private GestureDetector myGesture; 
private RelativeLayout rl; 
private LinearLayout ll; 
private LinearLayout lltest; 
private HorizontalScrollView hsv; 
private CardView cv; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_my); 

    rl = (RelativeLayout) findViewById(R.id.rl); 
    ll = (LinearLayout) findViewById(R.id.ll); 
    lltest = (LinearLayout) findViewById(R.id.lltest); 
    cv = (CardView) findViewById(R.id.card1); 
    hsv = (HorizontalScrollView) findViewById(R.id.hsv); 

    myGesture =new GestureDetector(this); 

    LayoutTransition transition = lltest.getLayoutTransition(); 
    transition.setDuration(500); 
    transition.enableTransitionType(LayoutTransition.CHANGING); 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    return myGesture.onTouchEvent(event); 
} 

@Override 
public boolean onDown(MotionEvent e) { 
    return false; 
} 

@Override 
public void onShowPress(MotionEvent e) { 
} 

@Override 
public boolean onSingleTapUp(MotionEvent e) { 
    return false; 
} 

@Override 
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { 
    Log.d("!!!!!", e1.toString()); 
    //Log.d("?????", e2.toString()); 
    if (e1.getX() > 1030) { 
     Log.d("!!!!!", "Edge fling!"); 
     TextView text = (TextView) findViewById(R.id.text); 
     text.setText("swiped!!!!!"); 
     HorizontalScrollView hsv = (HorizontalScrollView) findViewById(R.id.hsv); 
     hsv.setVisibility(View.VISIBLE); 
    } 
    return true; 
} 

@Override 
public void onLongPress(MotionEvent e) { 
} 

@Override 
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 

    return false; 
} 

public void klick(View view) { 
    LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) 
     cv.getLayoutParams(); 
    params.height = 200; 

    cv.setLayoutParams(params); 
} 
} 

ответ

1
@Override 
public boolean onTouchEvent(MotionEvent event) { 
if(event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_UP) 
{ 
    // you can get a call back here. 
    return true; 
} 
return myGesture.onTouchEvent(event); 
}