Android 触摸事件图像视图+;GLSURFACHEVIEW
我想知道是否有可能在GLSURFACHEVIEW上有一个ImageView,并获得两者各自的触摸事件。我的问题是,我想知道何时按下ImageView(因此我会使用OnTouchListener)。但是,我仍然希望能够获得我的GLSURFACHEVIEW的touchEvents 我尝试的是从我的GLSURFACHEVIEW中删除onTouchEvent的实现,并使类实现OnTouchListener并实现onTouchEvent,例如: 公共布尔onTouch(视图v,运动事件){ int action=event.getAction() 我这样做的问题是,我无法将触摸imageView和触摸GLSurfaceView结合起来,这正是我真正想要实现的。因此,我尝试添加手指数检查,但仍然无法使其工作,因为当我同时触摸imageView和GLSurfaceView时,仅检测到一个手指。 现在,很难解释,但是当我把一根手指放在imageView上,另一根手指放在我的GLSurfaceView上的其他地方时,不知何故,我在else部分的一段代码被调用,手指的位置在imageView上,而不是另一根手指 一个用例示例是:假设我用双手握住平板电脑。如果我用左手拇指按下此ImageView,我希望右手拇指在屏幕上的手指移动来执行旋转,而不是平移或类似操作 所以,我想知道到目前为止我的实现出了什么问题。也许我没有正确地考虑这个问题。在这种情况下,我很高兴知道出了什么问题以及如何正确地实现这类事情 提前感谢,Android 触摸事件图像视图+;GLSURFACHEVIEW,android,imageview,ontouchlistener,touch-event,glsurfaceview,Android,Imageview,Ontouchlistener,Touch Event,Glsurfaceview,我想知道是否有可能在GLSURFACHEVIEW上有一个ImageView,并获得两者各自的触摸事件。我的问题是,我想知道何时按下ImageView(因此我会使用OnTouchListener)。但是,我仍然希望能够获得我的GLSURFACHEVIEW的touchEvents 我尝试的是从我的GLSURFACHEVIEW中删除onTouchEvent的实现,并使类实现OnTouchListener并实现onTouchEvent,例如: 公共布尔onTouch(视图v,运动事件){ int act
编辑: 这是我的活动_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id= "@+id/linearlayout1" >
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="450dp"
android:id= "@+id/relativeLayout" >
<com.kitware.VolumeRender.VolumeRenderView
android:id="@+id/glSurfaceViewID"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0.23" />
<ImageView
android:id="@+id/ImageView"
android:layout_width="60dp"
android:layout_height="70dp"
android:layout_alignParentLeft="true"
android:layout_centerInParent="true"
android:src="@drawable/i3" />
<ImageView
android:id="@+id/ImageView2"
android:layout_width="40dp"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:src="@drawable/tmp" />
</RelativeLayout>
<Spinner
android:id="@+id/myspinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/country_arrays"
android:prompt="@string/country_prompt" />
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id= "@+id/linearlayout2" >
// And so on, the end of the file is irrelevant I suppose
//以此类推,我想文件的结尾是无关紧要的
您可以这样做
imageView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus) {
v.getParent().requestDisallowInterceptTouchEvent(true);
} else {
v.getParent().requestDisallowInterceptTouchEvent(false);
}
}
});
你的surfaceView也一样你可以这样做
imageView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus) {
v.getParent().requestDisallowInterceptTouchEvent(true);
} else {
v.getParent().requestDisallowInterceptTouchEvent(false);
}
}
});
你的surfaceView也一样这两个视图的视图边界相同吗?哪一个在顶部?@Bhargav没有完全理解你的第一个问题。ImageView在顶部。即将编辑以添加我的activity_main.xml内容意味着ImageView完全覆盖了表面视图?如果是这样,你的surfaceView将永远无法获得focus@Bhargav,所以它实际上没有完全覆盖我的GLSURFACHEVIEW。你可以在我的编辑器中看到详细信息。这两个视图的视图边界相同吗?还有哪个在顶部?@Bhargav没有完全理解你的第一个问题。ImageView在顶部。即将编辑以添加我的activity_main.xml内容意味着ImageView完全覆盖了表面e视图?如果是这样,您的surfaceView将永远无法获得focus@Bhargav,所以它实际上没有完全覆盖我的GLSURFACHEVIEW。你可以在我的编辑器中看到详细信息。不确定这是否会起作用。我希望能够同时触摸我的ImageView和GLSURFACHEVIEW,而不是ImageView或GLSURFACHEVIEW的二进制内容,which是我已经拥有的。你的代码将如何改变这一点?我不确定我是否理解这段代码的用途。是的,只要它们都是可聚焦的,你就可以触摸它们,正如你从代码中看到的,当hasFocus为false时,false被传递到
v.getParent()。requestDisallowerWinterCeptTouchEvent(false)
刚刚尝试过,它并没有改变并发触摸事件不能正常工作的事实。问题是,我在GLSURFACHEVIEW PROCESTOUCHEVENT中的代码块是用手指在ImageView上的位置调用的,然后当imagview具有焦点nake时,表面会单击False,但我不希望它不可单击。请查看使用case我在问题中提供了更多信息。有点难以解释^^不确定这是否可行。我希望能够同时触摸ImageView和GLSurfaceView,而不是ImageView或GLSurfaceView中的二进制内容,这是我已经拥有的。您的代码将如何更改此内容?我不确定我是否理解了解该代码的用途是的,只要它们都是可聚焦的,您就可以触摸它们,从代码中可以看出,当hasFocus为false时,false被传递给v.getParent()。requestDisallowernCepttouchevent(false)
刚刚尝试过,它并没有改变并发触摸事件不能正常工作的事实。问题是,我在GLSURFACHEVIEW PROCESTOUCHEVENT中的代码块是用手指在ImageView上的位置调用的,然后当imagview具有焦点nake时,表面会单击False,但我不希望它不可单击。请查看使用cas我在问题中提供了更多的信息。有点难以解释^^