如何检查两个按钮是否同时保持在一起ANDROID?
How to check to see if two buttons are HELD together at same time ANDROID?
我有两个圆形按钮,每个都有不同的颜色。
现在,如果同时按住两个按钮,我希望它们都变成全新的第三种颜色,以及声音效果、一些图形变化等。
以下代码似乎在大约 50% 的时间内有效,通常只有当两个按钮完美地同时按下时。 (如果按住一个按钮,然后不久又按住另一个按钮,即使是一根头发,应用程序似乎也会崩溃)。
new Thread(new Runnable() {
public void run(){
while (keepgoing) {
if (held1== true && held2==true) {
player2.start();
greenbutton.setBackground(getResources().getDrawable(R.drawable.brickbutton));
pinkbutton.setBackground(getResources().getDrawable(R.drawable.brickbutton));
keepgoing = false;
return;
}
}
return;
}
}).start();
}
held1 在 button1.setOnLongClick 事件发生时设置为真。
当 button1 的 OnTouchListener 发生 MotionEvent.ACTION_UP 情况时,将 held1 设置为 false。
按钮 2 也一样,就像这样。
greenbutton.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
held1 = true;
player.start();
if (switched){
revertButtons();
return true;
}
else {
switchButtons();
return true;
}
}
});
greenbutton.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_UP:
held1 = false;
player.start();
if (bricked){
return true;
}
if (switched){
revertButtons();
break;
}
else {
switchButtons();
break;
}
}
return false;
}
});
为什么这段代码如此不稳定?
做这样的事情怎么样,
while(held1 == true){
if(held2 == false){
//do something
}else{
player2.start();
greenbutton.setBackground(getResources().getDrawable(R.drawable.brickbutton));
pinkbutton.setBackground(getResources().getDrawable(R.drawable.brickbutton));
keepgoing = false;
return;
}
}
思路是模仿观察者模式的解决方案。不仅当它们像你一样被放在一起时,还要观察第二个,这样在任何时候,如果它们都被点击,你的工作就会完成。这就是 RxJava/Rxandroid 观察者模式的美妙之处。在您的情况下,这将是完美的解决方案。
我有两个圆形按钮,每个都有不同的颜色。
现在,如果同时按住两个按钮,我希望它们都变成全新的第三种颜色,以及声音效果、一些图形变化等。
以下代码似乎在大约 50% 的时间内有效,通常只有当两个按钮完美地同时按下时。 (如果按住一个按钮,然后不久又按住另一个按钮,即使是一根头发,应用程序似乎也会崩溃)。
new Thread(new Runnable() {
public void run(){
while (keepgoing) {
if (held1== true && held2==true) {
player2.start();
greenbutton.setBackground(getResources().getDrawable(R.drawable.brickbutton));
pinkbutton.setBackground(getResources().getDrawable(R.drawable.brickbutton));
keepgoing = false;
return;
}
}
return;
}
}).start();
}
held1 在 button1.setOnLongClick 事件发生时设置为真。 当 button1 的 OnTouchListener 发生 MotionEvent.ACTION_UP 情况时,将 held1 设置为 false。
按钮 2 也一样,就像这样。
greenbutton.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
held1 = true;
player.start();
if (switched){
revertButtons();
return true;
}
else {
switchButtons();
return true;
}
}
});
greenbutton.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_UP:
held1 = false;
player.start();
if (bricked){
return true;
}
if (switched){
revertButtons();
break;
}
else {
switchButtons();
break;
}
}
return false;
}
});
为什么这段代码如此不稳定?
做这样的事情怎么样,
while(held1 == true){
if(held2 == false){
//do something
}else{
player2.start();
greenbutton.setBackground(getResources().getDrawable(R.drawable.brickbutton));
pinkbutton.setBackground(getResources().getDrawable(R.drawable.brickbutton));
keepgoing = false;
return;
}
}
思路是模仿观察者模式的解决方案。不仅当它们像你一样被放在一起时,还要观察第二个,这样在任何时候,如果它们都被点击,你的工作就会完成。这就是 RxJava/Rxandroid 观察者模式的美妙之处。在您的情况下,这将是完美的解决方案。