OnGestureListener
onscroll不执行:onDown返回true就执行了
package com.example.main;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.animation.TranslateAnimation;
import android.widget.FrameLayout;
public class NoticeFramelayout extends FrameLayout implements OnGestureListener {
private View view = getRootView();
private GestureDetector detector;
private int mWidth;
private TranslateAnimation outAni;
public NoticeFramelayout(Context context) {
super(context);
init(context);
}
public NoticeFramelayout(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public NoticeFramelayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
public NoticeFramelayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init(context);
}
private void init(Context context) {
WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
mWidth = wm.getDefaultDisplay().getWidth();
detector = new GestureDetector(context, this);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_CANCEL || event.getAction() == MotionEvent.ACTION_UP) {
view.setX(0);
view.setAlpha(1);
}
return detector.onTouchEvent(event);
}
@Override
public boolean onDown(MotionEvent arg0) {
return true;
}
@Override
public boolean onFling(MotionEvent arg0, MotionEvent arg1, float arg2, float arg3) {
outAni = new TranslateAnimation(0, mWidth, 0, 0);
view.startAnimation(outAni);
view.setVisibility(GONE);
return false;
}
@Override
public void onLongPress(MotionEvent arg0) {
}
@Override
public boolean onScroll(MotionEvent arg0, MotionEvent arg1, float x, float y) {
setTranslationX(getTranslationX() + arg1.getX() - arg0.getX());
view.setAlpha(1 - view.getX() / mWidth);
return false;
}
@Override
public void onShowPress(MotionEvent arg0) {
}
@Override
public boolean onSingleTapUp(MotionEvent arg0) {
return false;
}
}