WebView在ViewFlipper中 实现 切换

来源:互联网 发布:sql注入检测 编辑:程序博客网 时间:2024/06/01 09:52
package com.dt5000.ischool.logic;




import com.dt5000.ischool.activity.R;


import android.content.Context;
import android.view.MotionEvent;
import android.view.animation.AnimationUtils;


import android.webkit.WebView;
import android.widget.ViewFlipper;


public class MyWebView extends WebView {


float downXValue;
long downTime;
private ViewFlipper flipper;
private float lastTouchX, lastTouchY;
private boolean hasMoved = false;


public MyWebView(Context context, ViewFlipper flipper) {
super(context);
this.flipper = flipper;
}


@Override
public boolean onTouchEvent(MotionEvent evt) {
// TODO Auto-generated method stub
boolean consumed = super.onTouchEvent(evt);
if (isClickable()) {
switch (evt.getAction()) {
case MotionEvent.ACTION_DOWN:
lastTouchX = evt.getX();
lastTouchY = evt.getY();
downXValue = evt.getX();
downTime = evt.getEventTime();
hasMoved = false;
break;
case MotionEvent.ACTION_MOVE:
hasMoved = moved(evt);
break;
case MotionEvent.ACTION_UP:
float currentX = evt.getX();
long currentTime = evt.getEventTime();
float difference = Math.abs(downXValue - currentX);
long time = currentTime - downTime;

/** X轴滑动距离大于100,并且时间小于220ms,并且向X轴右方向滑动 && (time < 220) */
if ((downXValue < currentX) && (difference > 50 && (time < 220))) {
/** 跳到上一页 */
 this.flipper.setInAnimation(getContext(), R.drawable.push_right_in);  
         this.flipper.setOutAnimation(getContext(), R.drawable.push_right_out);  
         this. flipper.showPrevious();
}
/** X轴滑动距离大于100,并且时间小于220ms,并且向X轴左方向滑动 */
if ((downXValue > currentX) && (difference > 50) && (time < 220)) {
/** 跳到下一页 */
this.flipper.setInAnimation(getContext(), R.drawable.push_left_in);  
        this.flipper.setOutAnimation(getContext(), R.drawable.push_left_out); 
this.flipper.showNext();
}
break;
}
}
return consumed || isClickable();
}


private boolean moved(MotionEvent evt) {
return hasMoved || Math.abs(evt.getX() - lastTouchX) > 10.0
|| Math.abs(evt.getY() - lastTouchY) > 10.0;
}
}