我在Eclipse中使用android开发人员工具,用Java编程,只要按下按钮,我就需要让对象在屏幕上移动。我已经做了几个小时的研究,我找不到任何方法来实现这一目标。我已经尝试过运行线程,这些线程经常崩溃或者似乎没有执行。我还尝试了onClickListener
,它读取按钮状态并使用它来确定按钮是否仍然按下。我目前正在使用while循环,但这只会冻结程序。我相信这是最好的方法,我尝试使用Thread.sleep来限制每秒的迭代次数,因为我相信这就是它冻结的原因。我是在正确的轨道还是离开了我的离场?这是一段代码:
rightButton.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
while(arg0.isPressed())
{
mover.updateCoordinates(1, 0);
}
}
});
答案 0 :(得分:2)
你会尝试另一种方法吗?
首先将您的按钮声明为类变量,声明一个Handler和一个Runnable:
private Button rightButton; // You will assign this in onCreate() method
private Handler mHandler = new Handler();
private Runnable mRunnable = new Runnable() {
@Override
public void run() {
if(rightButton.isPressed())
{
// If press state is pressed, move your item and recall the runnable in 100 milliseconds.
mover.updateCoordinates(1, 0);
mHandler.postDelayed(mRunnable, 100);
}
}
};
然后你的按钮的onClickListener将如下所示:
rightButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0)
{
// Instead of performing a loop here, just call a runnable, do simple press state checking there.
mHandler.postDelayed(mRunnable, 100);
}
});
答案 1 :(得分:0)
创建一个循环,在完成等待后更新视图,等待并调用自身。在循环中,有一个动画if语句,其布尔字段移动为true,不移动为false。让onClick方法切换布尔字段的值。
答案 2 :(得分:0)
尝试:
myView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent e) {
if (e.getAction() == MotionEvent.ACTION_DOWN) {
// Start your animation here
} else if (e.getAction() == MotionEvent.ACTION_UP) {
// Stop your animation here
}
return false;
}
});
参考文献:
或者,覆盖onKeyUp
课程的onKeyDown
和View
并检查KEYCODE_ENTER
KeyEvent