我正在做速度游戏,其中线程更改集中在4个不同的按钮上。我只想让线程更改焦点在按钮上。我遇到的问题是,当线程选择蓝色按钮进行聚焦时,如果我按下红色按钮,则蓝色按钮失去焦点。我可以清楚地看到这一点,因为我的按钮在默认,按下和聚焦时有不同的图片。所以,无论如何强制保持专注于我选择的按钮,即使我按下其他按钮。这是我的代码:
主题:
public void run() {
while (aika > 0 && isKaynnissa()) {
try {
Thread.sleep(aika);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
debug.setText(Integer.toString(aika));
if (isKaynnissa()) {
arvoNappi();
}
}
});
} catch (InterruptedException e) {
return;
} catch (Exception e) {
return;
}
if (aika < 550) {
uusiaika = 3;
} else if (aika < 450) {
uusiaika = 2;
} else if (aika < 350) {
uusiaika = 1;
}
aika = aika - uusiaika;
}
aika = aloitusaika;
unfocusButtons();
arvotutLuvut.clear();
}
随机焦点选择器:
public void arvoNappi() {
Random random = new Random();
int uusirandom = (int) (4 * random.nextDouble() + 1);
while (uusirandom == painettavaNappi) {
uusirandom = (int) (4 * random.nextDouble() + 1);
}
painettavaNappi = uusirandom;
tvrandom.setText(Integer.toString(painettavaNappi));
if (painettavaNappi == 1) {
arvotutLuvut.add(1);
btnPun.setFocusable(true);
btnPun.requestFocusFromTouch();
} else if (painettavaNappi == 2) {
arvotutLuvut.add(2);
btnVio.setFocusable(true);
btnVio.requestFocusFromTouch();
} else if (painettavaNappi == 3) {
arvotutLuvut.add(3);
btnVih.setFocusable(true);
btnVih.requestFocusFromTouch();
} else {
arvotutLuvut.add(4);
btnSin.setFocusable(true);
btnSin.requestFocusFromTouch();
}
}
答案 0 :(得分:1)
每当您将一个按钮集中在线程中时,将该按钮的引用存储在您的类可访问的变量中。
然后,除了程序逻辑之外,在你的按钮的onClickListener上,请将焦点请求到最后一个聚焦按钮。
不确定是否会阻止您的点击更改按钮图像并导致一些故障。如果是这种情况,您可以尝试使用TouchListener执行单击检测。
答案 1 :(得分:1)
我终于用imageviews做了,所以我可以切换图片我想要的方式