我有一个按钮,我试图让它可触摸,所以当我按下它时,它会在按住它的时间内不断地移动一个ImageView,但是,它只在每次我按下它时移动ImageView一次。
final ImageView box = (ImageView) findViewById(R.id.box);
currentX = (int) box.getX();
Button rightarrow = (Button) findViewById(R.id.right);
rightarrow.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, final MotionEvent e) {
v.performClick();
if (e.getAction() == MotionEvent.ACTION_DOWN) {
v.setPressed(true);
handlerRight.postDelayed(new Runnable() {
@Override
public void run() {
if (e.getAction() == MotionEvent.ACTION_DOWN) {
currentX += 5;
box.setX(currentX);
handlerRight.postDelayed(this, 100);
} else {
}
}
}, 0);
} else {
v.setPressed(false);
}
return false;
}
});发布于 2017-12-30 00:06:19
在您在那里运行新Thread中,您需要创建一个while循环,该循环将在按下按钮时运行。在while循环中,只需移动图像即可。代码如下:
final ImageView box = (ImageView) findViewById(R.id.box);
currentX = (int) box.getX();
Button rightarrow = (Button) findViewById(R.id.right);
rightarrow.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, final MotionEvent e) {
v.performClick();
if (e.getAction() == MotionEvent.ACTION_DOWN) {
v.setPressed(true);
handlerRight.postDelayed(new Runnable() {
@Override
public void run() {
while (v.isPressed()){
currentX += 5;
box.setX(currentX);
//handlerRight.postDelayed(this, 100);
}
}
}, 0);
} else {
v.setPressed(false);
}
return false;
}
});注意:我不确定它在哪里
handlerRight.postDelayed(this, 100);应该是因为我对它不熟悉所以你就把它。但我希望就是这样!
https://stackoverflow.com/questions/48024953
复制相似问题