java - 如何在按下按钮时使一段代码循环并在不再按下按钮后停止它?

标签 java android button

我在 Eclipse 中使用 android 开发人员工具,在 Java 中编程,只要按下一个按钮,我就需要让一个对象在屏幕上移动。我已经研究了几个小时,但我找不到任何方法来实现这一目标。我试过运行线程,这些线程经常崩溃或似乎不执行。我还尝试了一个 onClickListener,它读取按钮状态并使用它来确定按钮是否仍被按下。我目前正在使用 while 循环,但这只会卡住程序。我相信这是最好的方法,并且我尝试使用 Thread.sleep 来限制每秒的迭代次数,因为我相信这就是它卡住的原因。我在正确的轨道上还是在左外野?这是一段代码:

rightButton.setOnClickListener(new OnClickListener()
    {

        @Override
        public void onClick(View arg0) 
        {
            while(arg0.isPressed())
            {
                mover.updateCoordinates(1,  0);
            }
        }

    }); 

最佳答案

你会尝试另一种方法吗?

首先将您的按钮声明为类变量,声明一个 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);
    }

}); 

关于java - 如何在按下按钮时使一段代码循环并在不再按下按钮后停止它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16504213/

相关文章:

java - 带有类名的 exception.getMessage() 输出

android - 按标签获取 fragment

Android Zbar 无法读取二维码

java - Android:如何确定是否设置了动态壁纸

java - 具有从 Hibernate 调用的 OUT 参数的 Oracle 存储过程

java - eclipse数据库创建问题

android - 无法更新联系方式

button - 如何在 extjs 的 GridView 列中添加按钮?

html - 无法单击 Bootstrap 按钮的上半部分

java - 获取 json 元素 URL netbeans