Как реализовать действие смахивания в WebView - PullRequest
1 голос
/ 18 октября 2011

enter code here Я новичок в android и пытаюсь создать веб-представления с разными URL-адресами для каждого представления, и я хочу добавить действие смахивания, чтобы пролистывать представления. Но я не получаю ни одного из представлений при запуске.Я использую ViewFlipper для перемещения по представлениям.

    My main.xml file is:
    <?xml version="1.0" encoding="utf-8"?>
    <ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/ViewFlipper" 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <WebView xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/webview1"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent" />
        <WebView xmlns:android="http://schemas.android.com/apk/res/android"
             android:id="@+id/webview2" 
             android:layout_width="fill_parent"
             android:layout_height="fill_parent" />
      </ViewFlipper>

Мои файлы Java выглядят следующим образом:

 public class SwipeSearchActivity extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    MyWebView[] webview =new MyWebView[2];
    ViewFlipper flipper = (ViewFlipper) findViewById(R.id.ViewFlipper);
    webview[0] = new MyWebView(this);
    webview[0].setWebViewClient(new WebViewClient());
    webview[0].getSettings().setJavaScriptEnabled(false);
    webview[0].setInitialScale(60); 
    webview[0].getSettings().setBuiltInZoomControls(true);
    webview[0].loadUrl("http://www.google.com");
    webview[1] = new MyWebView(this);
    webview[1].setWebViewClient(new WebViewClient());
    webview[1].getSettings().setJavaScriptEnabled(false);
    webview[1].setInitialScale(60); 
    webview[1].getSettings().setBuiltInZoomControls(true);
    webview[1].loadUrl("http://www.bing.com");
    flipper.addView(webview[0]);
    flipper.addView(webview[1]);
}

} И Мой пользовательский класс WebView:

  public class MyWebView extends WebView {

  public MyWebView(Context context) {
   super(context);
  }



@Override 
     public boolean onTouchEvent(MotionEvent evt) {   

         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) && (time < 220) && (difference > 100) ) {
               goBack();
           }



             if ( (downXValue > currentX) && (time < 220) && (difference > 100) ) {
                   goForward();


                  }

                 //if (!moved(evt)) performClick(); 
                 break; 
             } 
         } 
         return consumed || isClickable(); 
     } 
  float downXValue;
  long downTime;
     private float lastTouchX, lastTouchY; 
     private boolean hasMoved = false; 
     private boolean moved(MotionEvent evt) { 
         return hasMoved || 
             Math.abs(evt.getX() - lastTouchX) > 10.0 || 
             Math.abs(evt.getY() - lastTouchY) > 10.0; 
     }
}

Пожалуйста, помогите мне разобраться, что здесь не так ..

...