LinearLayout线性布局, 添加Touch事件, 不成功???????????????????????? 手机有个列表, 是用一行行LinearLayout布局的想实现当手指触摸一个LinearLayout时, 变背景色, 当UP时,恢复本来的颜色当手指触摸移动到另行LinearLayout时, 本来的LinearLayout也恢复本来的背景色....类似网页上的 MouseOver, MouseOut 这个效果怎么实现................................. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我是想说用 OnTouchListener 在点上去再马上Move 情况下无法实现,好像因为 我测试了一下, 他的执行过各是 DOWN,然后一直MOVE...(执行好一会儿).............. 最后没有执行UP这样, 本来改变的LinearLayout背景色, 就无法恢复过来!想问一下, 如果用LinearLayout一行一行的界面列表, 怎么实现类似于网页上行的Mouseover, MouseOut 很怪, 即使你手机点上去, 没有移动, Move 的情况, 还是会执行, 如果手指马上离开屏幕, 才马上被UP替换....这有点不合理??????????????? android的touch event是这样的,我觉得这样是合理的,如果你想拖个东西运动的话。你这个可以结合move的距离和touch event一起配合实现这个效果。一种是down,up改变颜色;一种是move的时候判断移动到哪个item上了,改变颜色 但是我这个OnTouchListener是作用在 某个LinearLayout上的啊...move怎么判断移到哪个控件上叱? 我说的是手指头上屏幕上移动, 不是拖某个View移动当手指在某个View时, 该View变背景色, 移开时恢复本来颜色, 但手指没有离开屏幕... 这个通过OnTouch事件里面判断event的值就可以实现啊。 是可以判断, 但是当, 手指移动时, 他的执行是DOWN 再 MOVE......... 然后, 无法执行到UP.....正常情况下, 你手指Touch到某View, 再马上离开, 就会正常执行到UP (DOWN->MOVE->UP)但如果Touch后, 是移动, 并且移出本来的View, 就无法再执行到UP, 会一直执行MOVE好一会儿 你的意思是只想要Down和Up事件?如果是这样的话,当判断是Move的时候,假设:View对象名称为v,Event名称为eventpublic boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_MOVE || event.getAction() == MotionEvent.ACTION_OUTSIDE) { MotionEvent event1 = MotionEvent.obtain(event); event1.setAction(MotionEvent.ACTION_UP); v.dispatchTouchEvent(event1); return true; } //以下为你的Down或者Up事件代码 ....... return false;} 标准答案:@Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub int EvtNum = event.getAction(); switch (EvtNum) { case MotionEvent.ACTION_DOWN: { v.setBackgroundColor(Color.GRAY); return false; } case MotionEvent.ACTION_MOVE | MotionEvent.ACTION_OUTSIDE: { //Toast.makeText(JQqueryActivity.this, "MOVE-OUT", Toast.LENGTH_SHORT).show(); MotionEvent event1 = MotionEvent.obtain(event); event1.setAction(MotionEvent.ACTION_UP); v.dispatchTouchEvent(event1); return false; } case MotionEvent.ACTION_CANCEL : { v.setBackgroundColor(Color.BLACK); return false; } case MotionEvent.ACTION_UP: { v.setBackgroundColor(Color.BLACK); //Toast.makeText(JQqueryActivity.this, "UP", Toast.LENGTH_SHORT).show(); return false; } default: break; } return false; } 妹子是android新手,遇到数据传递问题,求少年们帮助 android游戏特效编辑器 新手想自学android编手机游戏,求推荐书籍 android重力传感器 下了一个Andorid五子棋源码 运行怎么没效果啊 android developer tools打开后,又自动关闭了,不知道是什么原因?求指点 Android 图片标注 android 锁屏软件为什么都要设置桌面? 神奇的webview,有人遇到过这种情况吗 异步上传文件 使用 android-async-http 包 报错 如何在Android实现一个流媒体服务器 KeyEvent.ACTION_MULTIPLE代表什么意思
想问一下, 如果用LinearLayout一行一行的界面列表, 怎么实现类似于网页上行的Mouseover, MouseOut
很怪, 即使你手机点上去, 没有移动, Move 的情况, 还是会执行, 如果手指马上离开屏幕, 才马上被UP替换....这有点不合理???????????????
你这个可以结合move的距离和touch event一起配合实现这个效果。
一种是down,up改变颜色;
一种是move的时候判断移动到哪个item上了,改变颜色
这个通过OnTouch事件里面判断event的值就可以实现啊。
public boolean onTouch(View v, MotionEvent event)
{
if(event.getAction() == MotionEvent.ACTION_MOVE || event.getAction() == MotionEvent.ACTION_OUTSIDE)
{
MotionEvent event1 = MotionEvent.obtain(event);
event1.setAction(MotionEvent.ACTION_UP);
v.dispatchTouchEvent(event1);
return true;
}
//以下为你的Down或者Up事件代码
.......
return false;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
int EvtNum = event.getAction(); switch (EvtNum) {
case MotionEvent.ACTION_DOWN: {
v.setBackgroundColor(Color.GRAY);
return false;
}
case MotionEvent.ACTION_MOVE | MotionEvent.ACTION_OUTSIDE: {
//Toast.makeText(JQqueryActivity.this, "MOVE-OUT", Toast.LENGTH_SHORT).show();
MotionEvent event1 = MotionEvent.obtain(event);
event1.setAction(MotionEvent.ACTION_UP);
v.dispatchTouchEvent(event1);
return false;
}
case MotionEvent.ACTION_CANCEL : {
v.setBackgroundColor(Color.BLACK);
return false;
}
case MotionEvent.ACTION_UP: {
v.setBackgroundColor(Color.BLACK);
//Toast.makeText(JQqueryActivity.this, "UP", Toast.LENGTH_SHORT).show();
return false;
}
default:
break;
}
return false;
}