Sid*_*mit 4 android android-layout android-view
我有
RelativeLayout
A---BIG IMAGE
B---MEDIUM IMAGE
C---SMALL IMAGE
Run Code Online (Sandbox Code Playgroud)
图片看起来像这样

我用下面的java代码
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (v.getId()) {
// LEFT
case R.id.tblLOne:
System.out.println("IMG_L_A");
playBeep(TABLA_L_BIG);
changeLeftDrum();
break;
case R.id.tblLTwo:
System.out.println("IMG_L_B");
playBeep(TABLA_L_MID);
changeLeftDrum();
break;
case R.id.tblLThree:
System.out.println("IMG_L_C");
playBeep(TABLA_L_SMALL);
changeLeftDrum();
break;
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
问题是,每当我单击小图像(黑色)时
我得到以下输出
IMG_L_A
IMG_L_B
IMG_L_C
Run Code Online (Sandbox Code Playgroud)
每当我点击中间的图像我
IMG_L_A
IMG_L_B
Run Code Online (Sandbox Code Playgroud)
在OuterImage大图上
IMG_L_A
Run Code Online (Sandbox Code Playgroud)
为什么我全都落后于ImageView的OnTouch方法
它与onClick完美搭配,但与OnTouch搭配却不完美
这是因为视图相互堆叠。
这里的重点是要知道从中返回的布尔标志的重要性onTouchListener。布尔标志告诉android事件是否被消耗。
假设您触摸tblRthree,case R.id.tblLThree然后执行,但是由于返回false,因此在android上似乎未使用该事件,并且该事件冒泡到tblRTwo视图后面的tblRthree视图,该视图对的对象执行相同的侦听器,case R.id.tblLTwo但随后您又返回false,所以冒泡查看tblROne并执行所有三种情况。
每当您使用事件时,都应返回true;否则,您应返回false。
| 归档时间: |
|
| 查看次数: |
266 次 |
| 最近记录: |