2012-07-27 94 views
2

我对Android有另一个问题。今天我试图使用WebView来显示图像。图像的尺寸大于使用户能够滚动的视图。现在,我想要实现的是当用户触摸图像上的某个地方(在web视图中)时,将触发事件并存储触摸的坐标。单击WebView上的事件坐标

当我尝试在xml布局中使用onClick来完成此操作时,我所获取的所有参数都是触发点击事件的视图对象。这里是我的xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
<WebView 
    android:id="@+id/upperview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_weight="1" 
    android:onClick="imageClicked" /> 
<WebView 
    android:id="@+id/lowerview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_weight="1" /> 

</LinearLayout> 

现在,这里是我的活动:

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

    WebView upperview = (WebView) findViewById(R.id.upperview); 
    upperview.getSettings().setBuiltInZoomControls(true); 
    upperview.loadUrl("file:///android_asset/texture.png"); 

    WebView lowerview = (WebView) findViewById(R.id.lowerview); 
    String htmlstring = "<h1>Header</h1><p>This is HTML text<br /><i>Formatted in italics</i></p>"; 
    lowerview.loadData(htmlstring, "text/html", "utf-8"); 
} 

public void imageClicked(View view) { 

} 
} 

现在,还有的imageClicked方法中没有的功能,因为我不知道在哪里可以找到坐标。我做错了吗?我在想也许xml布局中的onClick属性只对应于webview中的通用点击/触摸。有什么替代方案可以实现我想要的吗?感谢提前:)

回答

1

你有没有试着用onTouch事件,而不是的onClick。 onTouch事件为您提供x和y坐标。检查here

+0

我刚试过那个,它工作。但是我可能会在这里做错误的事情,因为我想要相对于图像的坐标。事件的坐标是相对于视图的权利? – kishidp 2012-07-27 06:33:27

1

你需要什么的onTouchEvent: Android guide

+0

好的。谢谢。只是一个问题,是相对于webview的坐标?因为我想要实现的是触摸相对于图像的坐标吗?这甚至有可能吗? – kishidp 2012-07-27 06:30:51

+0

对不起,我不太确定。尝试在坐标上书写x和y,当你触摸屏幕时登录到logcat,然后你可能会发现:) – 2012-07-27 06:44:38

+0

我有点懒,所以我用'Toast'代替显示坐标和yup,它们是相对于webview。我在这里做错了事。厄运。 – kishidp 2012-07-27 06:50:48