onTouchEvent无法正常工作

时间:2014-02-02 20:21:48

标签: android webview android-webview ontouchevent

我正在尝试为Android编写应用程序,但我遇到了一些麻烦。 我想在webview中记录x和y坐标。 Webview工作得很好,但后来我试图记录坐标没有任何反应。至少我是这么认为的。当我试图打印坐标程序时,什么都不打印。

所以,这是我的代码:

package com.gm;

import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.view.View.OnClickListener;

public class MainActivity extends Activity implements OnClickListener {


WebView web;

private Button rec, end, play, stop;

private int x,y,c; 
protected static SharedPreferences prefs;
protected boolean clicked = false;

List<String> list = new ArrayList<String>(c);

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    web = (WebView) findViewById(R.id.webview01);       
    web.setWebViewClient(new myWebClient());
    web.getSettings().setJavaScriptEnabled(true);
    web.loadUrl("http://tob.lt");

    rec = (Button) this.findViewById(R.id.rec);
    rec.setOnClickListener(this);

    end = (Button) this.findViewById(R.id.end);
    end.setOnClickListener(this);

    play = (Button) this.findViewById(R.id.play);
    play.setOnClickListener(this);

    stop = (Button) this.findViewById(R.id.stop);
    stop.setOnClickListener(this);
 } 

 public class myWebClient extends WebViewClient
 {
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
        view.loadUrl(url);

        return true;

    }

 }

 @Override
 public boolean onKeyDown(int keyCode, KeyEvent event)
 {
   if ((keyCode == KeyEvent.KEYCODE_BACK) && web.canGoBack()) {
      web.goBack();
      return true;
 }
 return super.onKeyDown(keyCode, event);
 }


@Override
public boolean onTouchEvent (MotionEvent event){
   if(clicked){
   x = (int)event.getX();
   y = (int)event.getY();
     switch (event.getAction()) {
       case MotionEvent.ACTION_DOWN:
       case MotionEvent.ACTION_MOVE:
       case MotionEvent.ACTION_UP:
     }
     System.out.println("out x"+x);
     System.out.println("out y"+y);
    }
return false;
};


@Override
public void onClick(View v) {
    if (v == rec){      
        clicked = true;         
    }
    else if (v == end){
        clicked = false;            
    }
    else if (v == play){}       
    else if (v == stop){}       

}

}

任何人都可以判断我是否正确使用onTouchEvent方法?我做错了什么? 谢谢你的帮助。

P.S。抱歉我的英语不好。

1 个答案:

答案 0 :(得分:0)

System.out.println()将无法按照预期的方式在Android应用中运行(本身没有可打印的控制台)。看起来onTouchEvent方法被正确调用,但您必须以不同方式“打印”x和y坐标,以便实际看到输出。

要查看输出,请尝试写入logcat

Log.d("MainActivity", "x = " + x + ", y = " + y);

或显示Toast

Toast.makeText(this, "x = " + x + ", y = " + y, Toast.LENGTH_SHORT).show();