Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public abstract class SwipeActivity extends Activity {
- private static final int SWIPE_MIN_DISTANCE = 120;
- private static final int SWIPE_MAX_OFF_PATH = 250;
- private int SWIPE_THRESHOLD_VELOCITY;
- private GestureDetector gestureDetector;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- gestureDetector = new GestureDetector(new SwipeDetector());
- ViewConfiguration configuration = ViewConfiguration.get(this);
- SWIPE_THRESHOLD_VELOCITY = configuration.getScaledMinimumFlingVelocity();
- }
- private class SwipeDetector extends SimpleOnGestureListener {
- @Override
- public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
- float velocityY) {
- // Check movement along the Y-axis. If it exceeds
- // SWIPE_MAX_OFF_PATH,
- // then dismiss the swipe.
- if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
- return false;
- // Swipe from right to left.
- // The swipe needs to exceed a certain distance (SWIPE_MIN_DISTANCE)
- // and a certain velocity (SWIPE_THRESHOLD_VELOCITY).
- if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
- && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
- leftSwipe();
- return true;
- }
- // Swipe from left to right.
- // The swipe needs to exceed a certain distance (SWIPE_MIN_DISTANCE)
- // and a certain velocity (SWIPE_THRESHOLD_VELOCITY).
- if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
- && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
- rightSwipe();
- return true;
- }
- return false;
- }
- }
- @Override
- public boolean dispatchTouchEvent(MotionEvent ev) {
- // TouchEvent dispatcher.
- if (gestureDetector != null) {
- if (gestureDetector.onTouchEvent(ev))
- // If the gestureDetector handles the event, a swipe has been
- // executed and no more needs to be done.
- return true;
- }
- return super.dispatchTouchEvent(ev);
- }
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- return gestureDetector.onTouchEvent(event);
- }
- protected abstract void rightSwipe();
- protected abstract void leftSwipe();
- }
- public class ContentActivity extends SwipeActivity implements OnLongClickListener {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- // Here I add a TextView programmatically to my Vertical ScrollView and set this activity to listen to its long clicks (touches)
- ScrollView scrollView = (ScrollView) findViewById(R.id.content_scroll);
- TextView textView = new TextView(ContentActivity.this);
- textView.setText("Some Really Long Text!");
- textView.setOnLongClickListener(this);
- scrollView.addView(textView);
- }
- @Override
- public boolean onLongClick(View v) {
- return doLongClickAction();
- }
- @Override
- public void rightSwipe() {
- doSwipeAction();
- }
- @Override
- public void leftSwipe() {
- doSwipeAction();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement