touch,keydown事件遇到的问题

还是这个项目----音乐播放器。

用了别人的源码,slideup什么的,就是从下往上滑动的效果,是一个自定义view继承子viewgroup。

我需要的效果,点击音乐目录,出现一个音乐控制面板替换掉隐藏的页面,按退出,隐藏的页面往下退出。看起来很简单,因为别人的源码已经实现了这一点。

但是,真正做起来就遇到问题了。

首先,此时显示的音乐控制面板(先隐藏,后显示)按退出键没反应,我加了一个log发现,更不就没有调用这个方法。

遇到问题,好办,上网查,有人说焦点问题,然后我设置setfocused(),另外还有个类似的方法,没搞懂两者区别。我都试了试,不论是在view的构造函数中加入这个方法还是在MainActivity中加入v.setfocused都没用,后来发现了,在他的源码中重写了事件拦截方法,不过一查,发现事件拦截方法拦截的是手势,而不是按键。

好吧,继续上网,终于找到了,在MainActivity中的onkeydown方法中调用自定义view的onkeydown方法,效果达到。

怀着高兴的心情点了一首歌听听,结果发现,没反应,点一下它就缩下去隐藏好了,这不对啊,查看他的源码,发现,这次终于是事件拦截方法惹的祸了,他返回值是判断隐藏的页面是否展开的,如果展开就为true,否则为false,我在隐藏页面展开的时候点击播放按钮,页面网下滑动隐藏掉了,就是这的问题,我改为return fale;问题成功解决。


问题是解决了,但是对事件分发还是有些不清晰,明日仔继续研究


补充:

我给textview设置setontouchlistener,

结果发现,touchevent的坐标是以本控件的左上角为原点的,这里很重要,如果这个控件在下面,手势移动到了控件的上边,则y值为负数    

                                                                                                                                                  同理,如果移动到了控件的左边,则x值为负数,至于右边和下面嘛,到都是正数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值