我有一个只有两个元素的列表视图。
您按下其中一个,它应该会振动 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() 中,但它会报错...请随意复制 paste ,我只需要弄清楚如何准确放置函数。 ..)
谢谢 !