实现简单的手势比如横竖滑动可以用GestureDetector实现。
分析可以确定,
1、首先要写入onTouchListener事件获得motionEvent对象
2、创建一个GestureDetector
3、GestureDetector会转发motionEvent对象至Listener
4、listener对象做合适的处理。有SimpleOnGestureListener已经做了处理
show code
public class MainActivity extends AppCompatActivity { ImageView image; GestureDetector mGestureDetector; class mGestureListener extends GestureDetector.SimpleOnGestureListener { @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if (e1.getX() - e2.getX() > 0) { Toast.makeText(MainActivity.this, "从右往左", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "从从左往右", Toast.LENGTH_SHORT).show(); } return super.onFling(e1, e2, velocityX, velocityY); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); image = (ImageView) findViewById(R.id.image); mGestureDetector = new GestureDetector(new mGestureListener());//实例化对象,把listener实现类传入进去,这样就能建立转发的连接 image.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { mGestureDetector.onTouchEvent(event);//GestureDetector转发对象到listener return true; } }); } }
另外mGestureDetector = new GestureDetector(new mGestureListener());已经过时了,可以用替代方法:
mGestureDetector = new GestureDetector(this, this); // 注意前一个this代表的是一个Context,后一个this代表的是一个OnGestureListener。