如何振动"而#34;按下一个listview项 - android?

时间:2013-10-08 05:22:50

标签: android listview vibrate

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

你按下其中一个,它应振动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秒钟。

如果我只有这个功能,那么效果很好(第一个按钮)

在第二个听众中,我接受了动作事件,因为我需要知道用户何时按下并备份..

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

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

他们自己,每个功能都完全符合我的要求。但我需要将它们两者结合起来。

我需要在OnItemListener的“Case:1”中设置setOnTouchListener ...

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

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

(上面的代码工作得非常好,我只需要将Touch Listener放在OnItemClick()中,但它会出错...请随意复制粘贴,我只需要弄清楚究竟如何放置功能......)

谢谢!

1 个答案:

答案 0 :(得分:0)

OnTouchListener移至View ListAdapter为[{1}} View position > 0 OnItemClickListener移动{/ 1}}。

这种方式应该解决:

  1. {{1}}应该仍然可以使用。
  2. 仅在触摸1 ..项目时才会振动。