package com.sxit.dreamiya.utils;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.GestureDetector;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.widget.LinearLayout;
import android.widget.ListView;
/***
* 锟皆讹拷锟藉布锟斤拷锟侥硷拷.
*
* @author wangyuanshi
*
*/
public class RightMenuLinearLayout extends LinearLayout {
private GestureDetector mGestureDetector;
View.OnTouchListener mGestureListener;
private boolean isLock = false;// 锟斤拷锟斤拷锟狡讹拷锟斤拷.
public OnScrollListener onScrollListener;// 锟皆讹拷锟藉滑锟斤拷锟接匡拷
private boolean b;// 9锟斤拷touch锟斤拷识
public RightMenuLinearLayout(Context context) {
super(context);
}
public void setOnScrollListener(OnScrollListener onScrollListener) {
this.onScrollListener = onScrollListener;
}
public RightMenuLinearLayout(Context context, AttributeSet attrs) {
super(context, attrs);
mGestureDetector = new GestureDetector(new MySimpleGesture());
}
/***
* 锟铰硷拷锟街凤拷
*/
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
b = mGestureDetector.onTouchEvent(ev);// 锟斤拷取锟斤拷锟狡凤拷锟斤拷值.
/***
* 锟缴匡拷时锟角得达拷锟斤拷锟斤拷锟�..
*/
if (ev.getAction() == MotionEvent.ACTION_UP) {
onScrollListener.doLoosen();
}
return super.dispatchTouchEvent(ev);
}
/***
* 锟铰硷拷9锟截达拷锟斤拷
*
* 要锟斤拷谆锟斤拷疲锟斤拷锟斤拷锟絫ure锟侥伙拷锟斤拷锟角撅拷锟角斤拷锟斤拷9锟截o拷锟斤拷锟斤拷锟皆硷拷锟斤拷ontouch. 锟斤拷锟斤拷false锟侥伙拷锟斤拷锟斤拷么锟酵伙拷锟斤拷锟铰达拷锟斤拷...
*/
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
super.onInterceptTouchEvent(ev);
return b;
}
/***
* 锟铰硷拷锟斤拷锟斤拷
*/
@Override
public boolean onTouchEvent(MotionEvent event) {
isLock = false;
return super.onTouchEvent(event);
}
/***
* 锟皆讹拷锟斤拷锟斤拷锟斤拷执锟斤拷
*
* @author zhangjia
*
*
*/
class MySimpleGesture extends SimpleOnGestureListener {
@Override
public boolean onDown(MotionEvent e) {
isLock = true;
return super.onDown(e);
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
if (!isLock)
onScrollListener.doScroll(distanceX);
// 锟斤拷直锟斤拷锟斤拷水平
if (Math.abs(distanceY) > Math.abs(distanceX)) {
return false;
} else {
return true;
}
}
}
/***
* 锟皆讹拷锟斤拷涌锟�实锟街伙拷锟斤拷...
*
* @author zhangjia
*
*/
public interface OnScrollListener {
void doScroll(float distanceX);// 锟斤拷锟斤拷...
void doLoosen();// 锟斤拷指锟缴匡拷锟斤拷执锟斤拷...
}
}