需要在android中的webview中左右滑动实现

时间:2015-02-12 06:40:17

标签: android android-gesture

我正在开发一个应用程序,它将数据库中的内容显示到webview中。

在第一个屏幕中,我有索引,用户选择一个项目,然后在webview中打开内容。目前我有两个按钮可以转到下一个或上一个项目。

现在我想用左/右滑动来替换按钮以转到下一个或上一个项目。

以下是我的webview代码

private void setupwebview(){
    final WebView wvBrowser = ( WebView ) findViewById( R.id.wvBrowser );
    wvBrowser.getSettings( ).setLoadsImagesAutomatically( true );
    wvBrowser.getSettings( ).setJavaScriptEnabled( true );
    wvBrowser.getSettings( ).setBuiltInZoomControls( true );

wvBrowser.loadDataWithBaseURL( sBanner, html, this.mimeType,
            this.encoding, null );

    wvBrowser.setWebViewClient( new DefinitionWebViewClient( ) );
    // wvBrowser.getZoomControls( ).setVisibility( View.VISIBLE );

    wvBrowser.getSettings( ).setBuiltInZoomControls( true );

    new Handler( ).postDelayed( new Runnable( )
    {

        public void run( )
        {
            wvBrowser.setVisibility( View.VISIBLE );

            //wvBrowser.reload( );
        }
    }, 100 );
}

上面的方法我调用了oncreate的活动类。

Customewebview ::

public class CustomWebView extends WebView{
private GestureDetector gestureDetector;

public CustomWebView(Context context) {
    super(context);

}

public CustomWebView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public CustomWebView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
    super.onScrollChanged(l, t, oldl, oldt);
}

@Override
public boolean onTouchEvent(MotionEvent ev) {
    return gestureDetector.onTouchEvent(ev) || super.onTouchEvent(ev);
}

public void setGestureDetector(GestureDetector gestureDetector) {
    this.gestureDetector = gestureDetector;
}



}

手势检测器

private class CustomeGestureDetector extends SimpleOnGestureListener {      
    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        if(e1 == null || e2 == null) return false;
        if(e1.getPointerCount() > 1 || e2.getPointerCount() > 1) return false;
        else {
            try { // right to left swipe .. go to next page
                if(e1.getX() - e2.getX() > 100 && Math.abs(velocityX) > 800) {
                    Log.d( "gesture", "moving right to left" );
                    moveDown();
                    return true;
                } //left to right swipe .. go to prev page
                else if (e2.getX() - e1.getX() > 100 && Math.abs(velocityX) > 800) {
                    Log.d( "gesture", "moving left to right" );
                    moveUp();

                    return true;
                } 
            } catch (Exception e) { // nothing
            }
            return false;
        }
    }      
}

0 个答案:

没有答案