【问题标题】:How to vibrate "while" a single listview item is pressed - android?如何在按下单个列表视图项目时“振动” - android?
【发布时间】:2013-10-08 13:34:43
【问题描述】:

我有一个只有两个元素的列表视图。

您按下其中一个,它应该会振动 1000 毫秒并停止。

按下另一个,当你的手指向下按下它时,它应该会振动。

同样,您单击第一个项目,它会振动 1000 毫秒......当您触摸并按住第二个项目时,它应该会一直振动,直到您移开手指为止。

下面我有相同的代码:

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        public void onItemClick(AdapterView<?> aView, View v, int position,
                long id) {
            switch (position) {
            case 0:
                Vibrator x = (Vibrator) getApplicationContext()
                        .getSystemService(Context.VIBRATOR_SERVICE);
                x.vibrate(1000);
                break;
            case 1: break;// Need To vibrate while pressed here
            }

        }

    });

    listview.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                Vibrator x = (Vibrator) getApplicationContext()
                        .getSystemService(Context.VIBRATOR_SERVICE);
                x.vibrate(5000);
            }
            if (event.getAction() == MotionEvent.ACTION_UP) {
                Vibrator xa = (Vibrator) getApplicationContext()
                        .getSystemService(Context.VIBRATOR_SERVICE);
                xa.cancel();
            }

            return true;
        }
    });

所以,我有两个听众

在第一个(OnItemClick)..

如果按下第一个按钮,我会振动 1 秒。

如果我只有这个功能,它会很好用(对于第一个按钮)

在第二个监听器中,我采用了motionevent,因为我需要知道用户何时按下和备份..

但是,似乎第二个侦听器覆盖了第一个侦听器。

当我的 OnCreate() 中同时存在这两个侦听器时,setOnItemListener 根本不起作用。

每个功能都完全按照我的意愿行事。但我需要将它们两者结合起来。

我需要在 OnItemListener 的 "Case:1" 内设置 OnTouchListener ...

因此,当单击第一个项目时,它会振动 1 秒...当单击第二个项目时,只要按下该项目(处于聚焦状态),它就会振动

知道如何将这两者结合起来吗?

(上面的代码效果很好,我只需要将Touch Listener放在OnItemClick()中,但它会出错......请随意复制粘贴,我只需要弄清楚如何放置函数...)

谢谢!

【问题讨论】:

    标签: android listview vibration


    【解决方案1】:

    将您的OnTouchListener 移动到由ListAdapter 膨胀的ViewViews 和position &gt; 0

    这种方法应该可以解决:

    1. OnItemClickListener 应该仍然有效。
    2. 仅在触摸 1.. 项时振动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-07
      • 1970-01-01
      • 1970-01-01
      • 2020-01-18
      相关资源
      最近更新 更多