首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从OnLongClickListener振动

从OnLongClickListener振动
EN

Stack Overflow用户
提问于 2013-03-12 22:35:30
回答 2查看 1.1K关注 0票数 0

也许有人能给我解释一下,如何正确地从OnLongClickListener震动。在下面的方法中,振动是非常短的。如果我像预期的那样设置return false;振动持续5000毫秒,但是OnClickListener被触发。

我应该如何在整个周期内从OnLongClickListener震动,而不是激发OnClickListener

代码语言:javascript
运行
复制
final Vibrator x = (Vibrator) getParent()
            .getSystemService(Context.VIBRATOR_SERVICE);
button.setOnLongClickListener(new OnLongClickListener() {
        @Override
    public boolean onLongClick(View v) {
        x.vibrate(5000);
        return true;
    } 
}); 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-12 23:03:53

当一个click事件被触发时,它被传递到可用的最低级别的处理程序(除非有人中断)。在本例中,首先将一个长单击事件传递给OnLongClickListener。如果侦听器返回true,它基本上宣布这个单击事件已经被处理。如果返回false,则声明click事件未由它处理,这就是为什么该事件被传递到层次结构中更高一级的处理程序,在您的示例中是OnClickListener

这就是为什么不应该返回false的原因,因为您确实想要处理长单击事件。

如何为振动本身创建一个后台线程或ASyncTask呢?类似于:

代码语言:javascript
运行
复制
@Override
public boolean onLongClick(View v) {
    getHandler().post(new Runnable() {

        @Override
        public void run() {
            x.vibrate(5000);           
        }

    });
    return true;
} 

我没有测试代码,但它应该是好的。

票数 0
EN

Stack Overflow用户

发布于 2013-03-12 22:52:02

您可以将计时器设置为在振动周期内运行,并且仅当它超时时才返回True。有点笨拙,但应该能行得通。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15364153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档