android webview 滑动,android – 如何检测webview上的滑动手势

我正在开发一个简单的

Android应用程序与RelativeLayout和WebView里面.

我必须检测从底部到顶部的滑动,只能在屏幕左侧的20%中完成.所以当用户从底部到顶部滑动时,我必须显示一个自定义对话框.

我试过的是:

import android.app.Activity;

import android.view.MotionEvent;

import android.view.View;

public class ActivitySwipeDetector implements View.OnTouchListener {

static final String logTag = "ActivitySwipeDetector";

private Activity activity;

static final int MIN_DISTANCE = 100;

private float downY, upY;

public ActivitySwipeDetector(Activity activity){

this.activity = activity;

}

public void onRightToLeftSwipe(){

}

public void onLeftToRightSwipe(){

}

public void onTopToBottomSwipe(){

}

public void onBottomToTopSwipe(){

System.out.println("BOTTOM TO TOP SWIPE DONE!");

}

public boolean onTouch(View v, MotionEvent event) {

switch(event.getAction()){

case MotionEvent.ACTION_DOWN: {

downY = event.getY();

return true;

}

case MotionEvent.ACTION_UP: {

upY = event.getY();

float deltaY = downY - upY;

if(Math.abs(deltaY) > MIN_DISTANCE){

if(deltaY > 0) { this.onBottomToTopSwipe(); return true; }

}

else {

return false;

}

return true;

}

}

return false;

}

}

layout = (RelativeLayout)this.findViewById(R.id.layout);

layout.setOnTouchListener(activitySwipeDetector);

但它什么都不做!

所以我尝试以这种方式创建一个自定义的webview:

import android.content.Context;

import android.util.AttributeSet;

import android.view.MotionEvent;

import android.webkit.WebView;

public class MyWebView extends WebView {

public MyWebView(Context context) {

super(context);

}

public MyWebView(Context context,AttributeSet set){

super(context,set);

}

@Override

public boolean onTouchEvent(MotionEvent evt) {

boolean consumed = super.onTouchEvent(evt);

if (isClickable()) {

switch (evt.getAction()) {

case MotionEvent.ACTION_DOWN:

lastTouchY = evt.getY();

downTime = evt.getEventTime();

hasMoved = false;

break;

case MotionEvent.ACTION_MOVE:

hasMoved = moved(evt);

break;

case MotionEvent.ACTION_UP:

float actualTouchY = evt.getY();

long currentTime = evt.getEventTime();

float difference = Math.abs(lastTouchY - actualTouchY);

long time = currentTime - downTime;

if ( (lastTouchY < actualTouchY) && (time < 220) && (difference > 100) ) {

System.out.println("SWIPE1");

}

if ( (lastTouchY > actualTouchY) && (time < 220) && (difference > 100) ) {

System.out.println("SWIPE2");

}

break;

}

}

return consumed || isClickable();

}

long downTime;

private float lastTouchY;

private boolean hasMoved = false;

private boolean moved(MotionEvent evt) {

return hasMoved ||

Math.abs(evt.getY() - lastTouchY) > 10.0;

}

}

但没有成功!有人能帮我吗??谢谢!!!!! 🙂

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值