这是我在项目中用的一个webview 实现翻页功能 ,这个功能主要用到了ViewFlipper控件,
下面我给详细的介绍一下:

MyWebView 这个类很重要,

package com.filpper;
import android.content.Context;
import android.util.Log;
import android.view.MotionEvent;
import android.view.animation.AnimationUtils;
import android.webkit.WebView;
import android.widget.LinearLayout;
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;
Log.i("Touch Event========", "Distance: " + difference + "px Time: "+ time + "ms");

if((downXValue < currentX) && (difference > 100 && (time < 220))) {
/** 跳到上一页 */
this.flipper.setInAnimation(AnimationUtils.loadAnimation(
this.getContext(), R.anim.push_right_in));
this.flipper.setOutAnimation(AnimationUtils.loadAnimation(
this.getContext(), R.anim.push_right_out));

flipper.showPrevious();
}


/** X轴滑动间隔大于100,并且时候小于220ms,并且向X轴左标的目标滑动 */
if ((downXValue > currentX) && (difference > 100) && (time < 220)) {
/** 跳到下一页 */
this.flipper.setInAnimation(AnimationUtils.loadAnimation(
this.getContext(),R.anim.push_left_in));
this.flipper.setOutAnimation(AnimationUtils.loadAnimation(
this.getContext(), R.anim.push_left_out));
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;
}
}


这个类中主要是对onTouchEvent事件进行处理.

更多相关文章

  1. Android辅助功能AccessibilityService自动全选择文字粘贴模拟输
  2. android实现选择图片并压缩上传的功能
  3. 一个简单、漂亮、功能强大的Android日志程序:logger
  4. android实现分享
  5. 【Android】Android清除本地数据缓存代码(这些功能很强大不要乱
  6. Android不同版本功能升级汇总
  7. Android视频播放器屏幕左侧边随手指上下滑动亮度调节功能的原理
  8. android中使用开源项目做出上拉、下拉刷新功能
  9. QT for Android项目开发微信分享功能时,出现错误: android.content

随机推荐

  1. android学习的过程
  2. mac上AndroidStudio自带的SDK manager 系
  3. android ContentResolver和ContentProvid
  4. Android简单、灵活、高效的图片裁剪框架
  5. Android实现界面刷新
  6. Android(安卓)自学之列表选择框Spinner
  7. android aidl摘要
  8. Android(安卓)中 px、dp、dip、sp详解
  9. Android启动界面优化技巧-Splash Screens
  10. Android(安卓)中LayoutInflater(布局加载