Страницы

Поиск по вопросам

пятница, 13 декабря 2019 г.

как обработать свайп?

#android


Итак в чем заключается вопрос: мне нужно сделать, что когда пользователь делает свайп
пальцем, выполняется какое-то действие, например всплывает сообщение или открывается
новое activity.
P.s Не кидайте ссылки на иностранные сайты Объясните как это сделать или Киньте простой
исходник
    


Ответы

Ответ 1



Вот такой пример для вас: MainActivity.class: public class MainActivity extends AppCompatActivity { private GestureDetectorCompat lSwipeDetector; RelativeLayout main_layout; TextView tvTxt; int i; private static final int SWIPE_MIN_DISTANCE = 130; private static final int SWIPE_MAX_DISTANCE = 300; private static final int SWIPE_MIN_VELOCITY = 200; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); i = 1; lSwipeDetector = new GestureDetectorCompat(this, new MyGestureListener()); main_layout = (RelativeLayout) findViewById(R.id.main_layout); tvTxt = (TextView) findViewById(R.id.tvTxt); tvTxt.setText("" + i); main_layout.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return lSwipeDetector.onTouchEvent(event); } }); } private class MyGestureListener extends GestureDetector.SimpleOnGestureListener{ @Override public boolean onDown(MotionEvent e) { return true; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY){ if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_DISTANCE) return false; if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_MIN_VELOCITY) { i++; tvTxt.setText("" + i); } return false; } } } activity_main.xml leftSwipe (слева - направо) будет увеличивать значение TextView на 1 и сразу показывать.

Ответ 2



public class MainActivity extends Activity { ... // This example shows an Activity, but you would use the same approach if // you were subclassing a View. @Override public boolean onTouchEvent(MotionEvent event){ int action = MotionEventCompat.getActionMasked(event); switch(action) { case (MotionEvent.ACTION_DOWN) : Log.d(DEBUG_TAG,"Action was DOWN"); return true; case (MotionEvent.ACTION_MOVE) : Log.d(DEBUG_TAG,"Action was MOVE"); return true; case (MotionEvent.ACTION_UP) : Log.d(DEBUG_TAG,"Action was UP"); return true; case (MotionEvent.ACTION_CANCEL) : Log.d(DEBUG_TAG,"Action was CANCEL"); return true; case (MotionEvent.ACTION_OUTSIDE) : Log.d(DEBUG_TAG,"Movement occurred outside bounds " + "of current screen element"); return true; default : return super.onTouchEvent(event); } }

Комментариев нет:

Отправить комментарий