LinearLayout线性布局, 添加Touch事件, 不成功????????????????????????

fx_blog 2012-06-07 06:11:03
手机有个列表,

是用一行行LinearLayout布局的

想实现当手指触摸一个LinearLayout时, 变背景色, 当UP时,恢复本来的颜色

当手指触摸移动到另行LinearLayout时, 本来的LinearLayout也恢复本来的背景色....

类似网页上的 MouseOver, MouseOut

这个效果怎么实现.................................
...全文
386 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
AMinfo 2012-06-08
  • 打赏
  • 举报
回复
你的意思是只想要Down和Up事件?如果是这样的话,当判断是Move的时候,

假设:View对象名称为v,Event名称为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;
}

fx_blog 2012-06-08
  • 打赏
  • 举报
回复
是可以判断,

但是当, 手指移动时, 他的执行是DOWN 再 MOVE.........

然后, 无法执行到UP.....

正常情况下, 你手指Touch到某View, 再马上离开, 就会正常执行到UP (DOWN->MOVE->UP)

但如果Touch后, 是移动, 并且移出本来的View, 就无法再执行到UP, 会一直执行MOVE好一会儿
fx_blog 2012-06-08
  • 打赏
  • 举报
回复
标准答案:


@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;
}
AMinfo 2012-06-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

我说的是手指头上屏幕上移动, 不是拖某个View移动

当手指在某个View时, 该View变背景色, 移开时恢复本来颜色, 但手指没有离开屏幕...
[/Quote]

这个通过OnTouch事件里面判断event的值就可以实现啊。
fx_blog 2012-06-07
  • 打赏
  • 举报
回复
我说的是手指头上屏幕上移动, 不是拖某个View移动

当手指在某个View时, 该View变背景色, 移开时恢复本来颜色, 但手指没有离开屏幕...
fx_blog 2012-06-07
  • 打赏
  • 举报
回复
能否给个大概的代码, 谢谢了
fx_blog 2012-06-07
  • 打赏
  • 举报
回复
但是我这个OnTouchListener是作用在 某个LinearLayout上的啊...

move怎么判断移到哪个控件上叱?
ngf318 2012-06-07
  • 打赏
  • 举报
回复
android的touch event是这样的,我觉得这样是合理的,如果你想拖个东西运动的话。
你这个可以结合move的距离和touch event一起配合实现这个效果。
一种是down,up改变颜色;
一种是move的时候判断移动到哪个item上了,改变颜色
fx_blog 2012-06-07
  • 打赏
  • 举报
回复

很怪, 即使你手机点上去, 没有移动, Move 的情况, 还是会执行, 如果手指马上离开屏幕, 才马上被UP替换....

这有点不合理???????????????
fx_blog 2012-06-07
  • 打赏
  • 举报
回复
我是想说用 OnTouchListener 在点上去再马上Move 情况下无法实现,好像

因为 我测试了一下, 他的执行过各是 DOWN,然后一直MOVE...(执行好一会儿).............. 最后没有执行UP

这样, 本来改变的LinearLayout背景色, 就无法恢复过来!


想问一下, 如果用LinearLayout一行一行的界面列表, 怎么实现类似于网页上行的Mouseover, MouseOut
AMinfo 2012-06-07
  • 打赏
  • 举报
回复
发码上来

80,493

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧