2012-02-28 2 views
0

Я знаю эффекты анимации и их применение к представлениям (layouts) для onclicklistener, ontouchlistener и т. Д., Но какое событие происходит, когда я перемещаю макет влево или вправо.проведите анимацию в макетах: android

previousButton.setOnClickListener(new OnClickListener() { 
     @Override 
     publicvoid onClick(View v) { 
       viewFlipper.setInAnimation(MainActivity.this,R.anim.view_transition_in_right); 
       viewFlipper.setOutAnimation(MainActivity.this,R.anim.view_transition_out_right); 
       viewFlipper.showPrevious(); 
     } 
    }); 
} 

i dont want onclicklistener. т.е.), если я касаюсь и перемещаю текущий макет влево, он должен выйти, а следующий макет должен быть в текущем представлении. Как это сделать?

ответ

1

Сделайте свою деятельность реализацией onGestureListener.

тогда в вас активности добавить

private GestureDetector gestureScanner; 
gestureScanner = new GestureDetector(this); 
private static final int SWIPE_MIN_DISTANCE = 100; 
    private static final int SWIPE_THRESHOLD_VELOCITY = 100; 

Тогда overrid в (событие MotionEvent) onTouchEvent, как показано ниже:

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

Кроме того, наконец, вы должны overide onFling метод что-то вроде:

@Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
      float velocityY) { 
     /* on scroll to the next page */ 
     if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE 
       && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY 
       ) { 
      //Ur code goes here 
     } 
     /* on scroll to the previous page */ 
     else if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE 
       && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY 
       ) { 
      //ur code goes here. 
     } 
     return false; 
    } 

Надеюсь, что это поможет.

+0

Это хорошо работает для меня, но не полностью. Мой текущий макет имеет большое количество просмотров на странице, и когда я прокручиваю верх над этими представлениями, это не сработает. Единственное время, когда прокрутка работает правильно, - это если я прокручиваю строку заголовка поверх приложения. Есть ли способ получить эту функциональность для прокрутки по всему экрану? – JuiCe

+0

Я нашел здесь http://developer.android.com/training/gestures/viewgroup.html решение. Если вы используете ViewGroup для обнаружения салфетки, вы можете реализовать onInterceptTouchEvent, чтобы получить все события движения и выбрать, должны ли они обрабатываться представлениями детей или если они составят жест жестов. – hara

0

Вы должны использовать Фрагменты для перемещения между видами. Используйте FragmentActivity и Fragment (для каждого представления). android developers example

Или вы можете просто использовать этот opensource library

0

Вам понадобится вид пейджера -

ViewPager

Очень легко реализовать слишком, вы просто предоставить адаптер подобным образом, что вы бы с ListView.

Смежные вопросы