我正在尝试为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。抱歉我的英语不好。
答案 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();