枪王编程方式的WebView [英] Double Tap Programmatically On WebView
问题描述
我有一个包含一个单一的web视图显示不同的HTML内容基于一个通用的活动。
每个HTML内容meta标签是这样的。
< META NAME =视口CONTENT =WIDTH =设备的宽度,高度=设备的高度,最小规模为0.4,最大规模= 3,初始规模= 0.5>
和编程的WebView配置,以适应这些$ C $屏幕内容CS。
的WebView web视图=(的WebView)findViewById(R.id.webview1);
webView.getSettings()setJavaScriptEnabled(真)。
。webView.getSettings()setLoadWithOverviewMode(真);
。webView.getSettings()setUseWideViewPort(真);
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.setScrollbarFadingEnabled(真);
。webView.getSettings()setBuiltInZoomControls(真);
。webView.getSettings()setLoadsImagesAutomatically(真);
webView.getSettings()setLightTouchEnabled(真)。
webView.getSettings()setDomStorageEnabled(真)。 webView.setBackgroundColor(0);
不幸的是既不元code和的WebView配置不会在屏幕上不适合的内容;但双攻适合的内容非常好。所以我不知道我可以可模拟双编程敲击的WebView?
/ **
*
* /
包com.y2cf.hoppr.utils.viewutils;进口android.content.Context;
进口android.os.SystemClock;
进口android.util.AttributeSet;
进口android.util.Log;
进口android.view.GestureDetector;
进口android.view.MotionEvent;
进口android.webkit.WebView;/ **
* @author拉杰什
*
* /
公共类MyWebView扩展的WebView {
私人GestureDetector gestureDetector; / **
* @参数方面
* /
公共MyWebView(上下文的背景下){
超级(上下文);
gestureDetector =新GestureDetector(上下文,新GestureListener());
// TODO自动生成构造函数存根
} / **
* @参数方面
* @参数ATTRS
* /
公共MyWebView(上下文的背景下,ATTRS的AttributeSet){
超(背景下,ATTRS);
gestureDetector =新GestureDetector(上下文,新GestureListener());
// TODO自动生成构造函数存根
} / **
* @参数方面
* @参数ATTRS
* @参数defStyle
* /
公共MyWebView(上下文的背景下,ATTRS的AttributeSet,诠释defStyle){
超(背景下,ATTRS,defStyle);
gestureDetector =新GestureDetector(上下文,新GestureListener());
// TODO自动生成构造函数存根
}
公共无效simulateDoubleTap()
{ simulateDoubleTapEvent(0);
simulateDoubleTapEvent(2);
simulateDoubleTapEvent(2);
simulateDoubleTapEvent(1);
simulateDoubleTapEvent(0);
} 私人无效simulateDoubleTapEvent(INT行动)
{
长时间的停机= SystemClock.uptimeMillis();
长EVENTTIME = SystemClock.uptimeMillis()+ 100;
浮动X = 0.0;
浮Y = 0.0;
//元状态列表在这里找到:developer.android.com/reference/android/view/KeyEvent.html#getMetaState()
INT亚状态= 0;
MotionEvent我= MotionEvent.obtain(
停机时间,
EVENTTIME,
行动,
X,
Y,
亚状态
);
dispatchTouchEvent(箱);
} @覆盖
公共布尔onTouchEvent(MotionEvent事件){
// TODO自动生成方法存根
返回gestureDetector.onTouchEvent(事件);
} 私有类GestureListener扩展GestureDetector.SimpleOnGestureListener { @覆盖
公共布尔onDown(MotionEvent五){
返回true;
}
//事件时双击出现
@覆盖
公共布尔onDoubleTap(MotionEvent五){
浮X = e.getX();
浮Y = e.getY(); Log.d(枪王,在螺纹:(+ X +,+ Y +)); 返回true;
}
}}
创建一个这样的类并调用simulateDoubleTap()基准值确定方法。希望这将帮助,和你的WebView应该是这个类的一个实例。
I have a generic activity that contains a single webview to show different html based content.
Every html content has meta tag like this.
<meta name="viewport" content="width=device-width,height=device-height, minimum-scale=0.4, maximum-scale=3,initial-scale=0.5">
And WebView programmatically configured to fit content in screen with these codes.
WebView webView = (WebView) findViewById(R.id.webview1);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.setScrollbarFadingEnabled(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setLoadsImagesAutomatically(true);
webView.getSettings().setLightTouchEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.setBackgroundColor(0);
Unfortunately neither meta code nor webview configurations doesn't fit content in screen; but double tapping fits content excellent. So i wonder can i simulate double tapping on webview programmatically?
/**
*
*/
package com.y2cf.hoppr.utils.viewutils;
import android.content.Context;
import android.os.SystemClock;
import android.util.AttributeSet;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.webkit.WebView;
/**
* @author rajesh
*
*/
public class MyWebView extends WebView {
private GestureDetector gestureDetector;
/**
* @param context
*/
public MyWebView(Context context) {
super(context);
gestureDetector = new GestureDetector(context, new GestureListener());
// TODO Auto-generated constructor stub
}
/**
* @param context
* @param attrs
*/
public MyWebView(Context context, AttributeSet attrs) {
super(context, attrs);
gestureDetector = new GestureDetector(context, new GestureListener());
// TODO Auto-generated constructor stub
}
/**
* @param context
* @param attrs
* @param defStyle
*/
public MyWebView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
gestureDetector = new GestureDetector(context, new GestureListener());
// TODO Auto-generated constructor stub
}
public void simulateDoubleTap()
{
simulateDoubleTapEvent(0);
simulateDoubleTapEvent(2);
simulateDoubleTapEvent(2);
simulateDoubleTapEvent(1);
simulateDoubleTapEvent(0);
}
private void simulateDoubleTapEvent(int action)
{
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis() + 100;
float x = 0.0f;
float y = 0.0f;
// List of meta states found here: developer.android.com/reference/android/view/KeyEvent.html#getMetaState()
int metaState = 0;
MotionEvent me = MotionEvent.obtain(
downTime,
eventTime,
action,
x,
y,
metaState
);
dispatchTouchEvent(me);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
return gestureDetector.onTouchEvent(event);
}
private class GestureListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onDown(MotionEvent e) {
return true;
}
// event when double tap occurs
@Override
public boolean onDoubleTap(MotionEvent e) {
float x = e.getX();
float y = e.getY();
Log.d("Double Tap", "Tapped at: (" + x + "," + y + ")");
return true;
}
}
}
Create a class like this and call simulateDoubleTap() methord. Hope this will help, and your webview should be an instance of this class.
这篇关于枪王编程方式的WebView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!