我试图通过将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;
如果这个解决方案似乎不是最有效,最符合逻辑的,那么我对任何建议都持开放态度。提前谢谢。
答案 0 :(得分: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设为静态。