0

我试图通过将 setPressed 设置为 true 来模拟击键,然后通过 postDelay 设置 setPressed 设置为 false 几个滴答声。我的问题是,这在应用一次时效果很好,但是当我尝试遍历包含多个元素的列表时,我认为延迟会相互影响。迭代太快了。我相信解决方案是延迟循环的迭代时间比 postDelayed 长,但我在这方面也没有太大的成功。

public void myOnClickListener(View view) {

    switch (view.getId()) {

    case R.id.test:
        //adds two random digits to list
        addRandomDigits(2);

        int size = list.size();
        System.out.println("Size: " + size);
            tmpButton = map.get(list.get(list.size()-1));
            tmpButton.setPressed(true);
            tmpButton.postDelayed(new Runnable() {
                public void run() {
                    tmpButton.setPressed(false);
                }
            }, 200);

        Log.e("**droid", "Droid sequence: " + getArrayListAsString(list));
        break;

如果此解决方案似乎不是最有效、最合乎逻辑等的,我愿意接受任何建议。提前致谢。

4

1 回答 1

0

我想建议您使用 TimerTask 类而不是循环来在特定时间段执行。

private class myLoop extends TimerTask
{
       public void run()
       {
           // Place your code here.

           addRandomDigits(2);

           int size = list.size();
           System.out.println("Size: " + size);
           tmpButton = map.get(list.get(list.size()-1));
           tmpButton.setPressed(true);
           tmpButton.setPressed(false);

          Log.e("**droid", "Droid sequence: " + getArrayListAsString(list));
          break;
       }
}

您需要将 tmpButton 设为静态。

于 2012-01-09T04:22:16.247 回答