您的位置:首页 > 移动开发 > Android开发

实现Fragment左右滑动onFling的手势识别

2016-03-02 17:35 344 查看
需要导入的包
import android.view.GestureDetector;
import android.view.MotionEvent;
需要添加的变量
private GestureDetector gesture; //手势识别
@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){View view = inflater.inflate(R.layout.fragment_card , container, false); 
 //根据父窗体getActivity()为fragment设置手势识别   
 gesture new GestureDetector(this.getActivity(), new MyOnGestureListener()); 
//为fragment添加OnTouchListener监听器 
view.setOnTouchListener(new View.OnTouchListener() { 
@Override           
public boolean onTouch(View v, MotionEvent event) {                 
return gesture.onTouchEvent(event);//返回手势识别触发的事件 
});    
 return view; 
}
//设置手势识别监听器private class MyOnGestureListener extends GestureDetector.SimpleOnGestureListener{ 
 @Override//此方法必须重写且返回真,否则onFling不起效    
public boolean onDown(MotionEvent e) {             
return true
@Override     
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
 if((e1.getX()- e2.getX()>120)&&Math.abs(velocityX)>200){ 
                      ……                    
 return true
}else if((e2.getX()- e1.getX()>120)&&Math.abs(velocityX)>200){ 
                   ……                     
return true
 }        
 return false;} 
}
提示:如果Fragment里面有ScrollView,而且其中还包含子控件,则需要再为ScrollView里面的子控件单独设置setOnTouchListener,设置和view一样,因为ScrollView的触碰事件会先响应,而里面的子控件的触碰事件则不会再响应了
参考:http://stackoverflow.com/questions/11421368/android-fragment-oncreateview-with-gestures
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息