嗨,谢谢你的帮助。
我需要一个按钮来执行以下行为:
按下按钮时动作开始(在这种情况下视图滚动)
只要按住按钮,操作就会继续(视图继续滚动)
释放按钮时,动作(滚动)停止。
我试过这个,但是不起作用:
Button left = (Button) findViewById(R.id.left);
left.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.e("","left");
return false;
}
});
答案 0 :(得分:5)
我认为您正在寻找OnTouchListener和MotionEvent.ACTION_DOWN
的组合修改强>
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// TODO start scroll
break;
case MotionEvent.ACTION_UP:
// TODO stop scroll
break;
default:
break;
}
return false;
希望这会有所帮助.. :)
答案 1 :(得分:5)
使用MotionEvent.ACTION_DOWN
和MotionEvent.ACTION_UP
来检测操作以及向下
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
//start action here
break;
}
return super.onTouchEvent(event);
}
答案 2 :(得分:3)
Button button = (Button) findViewById(R.id.button);
button.setOnTouchListener(new View.OnTouchListener() {
@Override public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
//Start your work
break;
case MotionEvent.ACTION_UP:
// stop the work
break;
case MotionEvent.ACTION_CANCEL:
// stop the work
break;
}
return false;
}
});
答案 3 :(得分:1)
默认情况下,你可以使用onlongclick监听器,但在你的情况下,它的最大时间不会生效1-2秒,所以在按钮上应用运动事件并应用你的逻辑..
答案 4 :(得分:1)
您可以使用MotionEvent.ACTION_DOWN
和MotionEvent.ACTION_UP
来检测上下行动
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
//start action
break;
case MotionEvent.ACTION_UP:
//stop action
break;
}
return super.onTouchEvent(event);
}
答案 5 :(得分:1)
制作新的滚动视图
ScrollView sv=new ScrollView(this);
当您单击/开始按钮时。然后启动增加int值并滚动的线程,然后按下键操作。停止线程。
//start thread which incrment value one by one
sv.scrollBy(x, y); //x the amount of pixels to scroll by horizontally
//y the amount of pixels to scroll by vertically