package com.example.love.rsqfanye; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; import android.webkit.WebView; import android.widget.AdapterView; import android.widget.ListView; /** * @author liwan * 這裏的GestureList是在xml佈局的 */ public class GestureTestActivity extends Activity { /** * 自定義的listview */ ListView gestureListView; /** * 自定義的adapter */ MyBaseAdapter myBaseAdapter; private GestureDetector mDetector; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); myBaseAdapter = new MyBaseAdapter(this); gestureListView = (ListView) this.findViewById(R.id.list1); WebView webView = new WebView(this); gestureListView.addHeaderView(webView); gestureListView.setAdapter(myBaseAdapter); gestureListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Log.i("isFling", "setOnItemClickListener"); if (!(isFling && System.currentTimeMillis() - startFlingTime < 300)) { ToastUtil.shortToast(GestureTestActivity.this, "點擊了item"); } } }); //創建手勢監聽器對象 mDetector = new GestureDetector(getApplicationContext(), new MyGestureListener()); } //分發事件執行的入口,一定會首先執行 @Override public boolean dispatchTouchEvent(MotionEvent ev) { //開啓手勢結束的動作 mDetector.onTouchEvent(ev);//手勢監聽 //isFling = false; Log.i("isFling", "dispatchTouchEvent"); return super.dispatchTouchEvent(ev); } boolean isFling = false; long startFlingTime = 0; //繼承了簡單的手勢類 private class MyGestureListener extends GestureDetector.SimpleOnGestureListener { @Override public boolean onSingleTapConfirmed(MotionEvent e) { return super.onSingleTapConfirmed(e); } @Override public boolean onSingleTapUp(MotionEvent e) { return super.onSingleTapUp(e); } //做手勢判斷 @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { Log.i("isFling", "onFling"); if (e1 != null && e2 != null) { //左滑動 if (e1.getX() - e2.getX() > 100 && Math.abs(e1.getY() - e2.getY()) < 100) { ToastUtil.shortToast(GestureTestActivity.this, "向左"); isFling = true; startFlingTime = System.currentTimeMillis(); return true; } //右滑動 else if (e1.getX() - e2.getX() < -100 && Math.abs(e1.getY() - e2.getY()) < 100) { ToastUtil.shortToast(GestureTestActivity.this, "向右"); isFling = true; startFlingTime = System.currentTimeMillis(); return true; } } startFlingTime = System.currentTimeMillis(); isFling = false; return super.onFling(e1, e2, velocityX, velocityY); } } }
代碼下載地址:http://download.csdn.net/detail/weimingchuan/9418143