展会信息港展会大全

android开发中Webview无法触发手势方法(ontouchevent,onfling...)的解决方法
来源:互联网   发布日期:2015-10-03 10:41:04   浏览:1362次  

导读:关于Webview中无法触发手势方法的解决方法,我在一个页面里放入了一个webview组件,并将其组件铺满屏幕,全屏幕除了下面的导航栏其余 都是这个webview,后来我想在webview中触发滑动手势的onfling方法,在webvi ...

关于Webview中无法触发手势方法的解决方法,我在一个页面里放入了一个webview组件,并将其组件铺满屏幕,全屏幕除了下面的导航栏其余 都是这个webview,后来我想在webview中触发滑动手势的onfling方法,在webview还没加载完网页内容之前正常,可是 webview加载完网页之后,就无法触发方法了,经过上网已大艘,终于找到了解决方法,!如下

一般我们用于接收GestureDetector对象的方法是OnTouchevent();,而在View组件占用了屏幕空间之后,这个方法就无 效了,只有换成 dispatchTouchEvent方法才有效!

不多说,上代码啦!!!

package com.example.rss_test;

import com.example.rss_test.util.MyGestureListener;

import android.annotation.SuppressLint;

import android.app.Activity;

import android.os.Bundle;

import android.os.StrictMode;

import android.view.GestureDetector;

import android.view.MotionEvent;

import android.view.Window;

import android.webkit.WebView;

import android.webkit.WebViewClient;

import android.widget.Toast;

@SuppressLint( SetJavaScriptEnabled )

public class NewsContent extends Activity{

WebView webview;

GestureDetector detector;

@Override

protected void onCreate(Bundle savedInstanceState) {

requestWindowFeature(Window.FEATURE_NO_TITLE);

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()

.detectDiskReads()

.detectDiskWrites()

.detectNetwork()// or .detectAll() for all detectable problems

.penaltyLog()

.build());

StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()

.detectLeakedSqlLiteObjects()

.penaltyLog()

.penaltyDeath()

.build());

super.onCreate(savedInstanceState);

setContentView(R.layout.news_content);

webview=(WebView)findViewById(R.id.newscontent_webview);

webview.getSettings().setJavaScriptEnabled(true);//设置支持JS

webview.getSettings().setSupportZoom(true);//实现缩放

detector = new GestureDetector(this, new MyGestureListener(this));

webview.setWebViewClient(new WebViewClient(){

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);

return true;

}

});

webview.loadUrl("http://www.163.com");

}

/**

* 把触摸事件交给手势识别对象

*/

@Override

public boolean dispatchTouchEvent(MotionEvent ev) {//注意这里不能用ONTOUCHEVENT方法,不然无效的

Toast.makeText(NewsContent.this, "jinru", 1).show();

detector.onTouchEvent(ev);

webview.onTouchEvent(ev);//这几行代码也要执行,将webview载入MotionEvent对象一下,况且用载入把,不知道用什么表述合适

return super.dispatchTouchEvent(ev);

}

}

最终效果图:看!TOAST被执行了!

赞助本站

人工智能实验室

相关热词: ontouchevent 手势 android

相关内容
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港