2013-02-20 8 views
0

Я ищу способ изменить содержимое TextViews, когда пользователь просматривает макет, содержащий эти Представления. Моя цель что-то вроде этого: enter image description hereandroid change views on swipe

Я пытаюсь сделать это с помощью SimpleOnGestureListener (код идет ниже). Проблема: когда я сажусь слева направо, значение i становится равным -1, и никакая реакция не происходит из-за следов. Справа налево салфетки заставляют меня становиться 1 (где ад нуль?), И «Вид» перестает реагировать на swipes снова. Что я делаю не так?

 public class MainActivity extends Activity { 
private static final int SWIPE_MIN_DISTANCE = 120; 
private static final int SWIPE_MAX_OFF_PATH = 250; 
private static final int SWIPE_THRESHOLD_VELOCITY = 200; 
private GestureDetector gestureDetector; 
public View mainview; 
public TextView lol; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    gestureDetector = new GestureDetector(new MyGestureDetector()); 
    mainview = (View) findViewById(R.id.mainView); 
    lol = (TextView) findViewById(R.id.textView2); 

    mainview.setOnTouchListener(new View.OnTouchListener() { 

     public boolean onTouch(View v, MotionEvent event) { 
      if (gestureDetector.onTouchEvent(event)) { 
       return true; 
      } 
      return false; 
     } 
    }); 
} 

class MyGestureDetector extends SimpleOnGestureListener { 
    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
      float velocityY) { 
     int i = 0; 

     if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) { 
      return false; 
     } 

     if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE 
       && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
      i++; 
      lol.setText("Text" + " " + Integer.toString(i)); 

      return true; 
     } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE 
       && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
      i--; 
      lol.setText("Text" + " " + Integer.toString(i)); 

      return true; 
     } 

     return false; 
    } 

    @Override 
    public boolean onDown(MotionEvent e) { 
     return true; 
    } 
} 
    } 
+0

Как использовать abt с помощью адаптера? – baboo

+0

Не могли бы Вы предоставить дополнительную информацию? – Droidman

+1

http://stackoverflow.com/questions/5786769/android-custom-gallery-view-set-own-border, google u найдет много ссылок и руководств, простыми словами добавьте GalleryView в свою деятельность, установите пользовательский адаптер (расширить базовый адаптер) в галерею. В адаптере getview, раздуйте макет с помощью textview и bg и всех и установите значение на основе индекса .. Удачи .. нет необходимости в управлении жестами, Примечание: галерея устарела, и Viewpager/HorizontalScrollview предпочтительнее ... – baboo

ответ

2

Почему бы вам не использовать viewPager? Он делает именно то, что вам нужно, и поддерживает индикаторы. Есть некоторые пользовательские библиотеки с индикаторами, где вы можете найти точный индикатор, который вам нужен, например. this one is nice.

+0

спасибо, я более подробно рассмотрим – Droidman

1

Вместо управления жестами используйте Галочку или Горизонтальное ScrollView или ViewPager

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