如何检查同时点击两个按钮?

时间:2014-03-04 05:04:47

标签: android android-layout

这是我的家庭作业:

  • 在屏幕顶部按一个大按钮(从左到右)并在其上显示“开始”。
  • 以图形方式将屏幕的其余部分划分为两个块(A和B),留下一些空格 大标签框的底部(从左到右)。
    • 点击“开始”按钮后,禁用它并启动5秒计时器(在 程序)并将消息放在Button本身上: “在每个盒子上放一根手指,等待倒计时停止” 并且还附加倒数计时器值(例如,5,4,3,2,1)并在每次之后更新它 第二次过去了。
    • 一旦5秒计时器结束,检查方框A和B是否都处于接触状态 (手指触地)位置。
    • 如果没有,那么抛出一个OK消息框“你没有放下手指”。然后再次 从开始和重复开始设置屏幕。
    • 如果手指向下,则禁用主按钮并在其上显示消息: “请慢慢抬起手指”并启动两个计时器。
    • 记录手指抬起的时间(两者都单独)。
    • 在下面的标签框中显示两个时间,如: “A盒中的手指1耗时X秒” “B盒中的手指2花了Y秒”

我无法检查是否同时点击了布局按钮。代码如下:

Java文件:

public class MainActivity extends Activity  {
    int a,b;
    long lastDown;
    long lastDuration;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //startB = (Button) this.findViewById(R.id.button1); //- Divide rest of the screen in two blocks graphically (A and B) leaving some space in the bottom for a Big label box (left to right).
        LinearLayout layout1 = (LinearLayout) this.findViewById(R.id.layout1);
        LinearLayout layout2 = (LinearLayout) this.findViewById(R.id.layout2);

        final Button btn=(Button)findViewById(R.id.button1);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                btn.setEnabled(false);
            //btn.setText("keep one finger on each of the box and wait for count down to stop");
            Toast.makeText(getBaseContext(),"keep one finger on each of the box and wait for count down to stop", 
                     Toast.LENGTH_SHORT).show();
}
    });

        layout1.setOnTouchListener(new OnTouchListener() {
public int a;

            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_DOWN ) {
                    Toast.makeText(getBaseContext(), "layout1", Toast.LENGTH_SHORT).show();
                    this.a=1;

                    return true;
                }
                else this.a=0;
                return false;
            }
        });
    layout2.setOnTouchListener(new OnTouchListener() {

            public int b;

            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_DOWN ) {
                    Toast.makeText(getBaseContext(), "layout2", Toast.LENGTH_SHORT).show();


                    this.b=1;

                    return true;
                }
                else this.b=0;
                return false;
            }
        }); 


        }

    protected void checkclick() {
        // TODO Auto-generated method stub

            if(this.a==1 && this.b==1){
                Toast.makeText(getBaseContext(), "both button is pressed", Toast.LENGTH_SHORT).show();
            }

            else {
                Toast.makeText(getBaseContext(), "Click on the screen", Toast.LENGTH_SHORT).show();
            }
    }

}

XML代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" // divided in 2 equal parts layout which is clickable .
        android:orientation="vertical"  >

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:textSize="12dp"

        android:text="Start" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="300dp"
    android:baselineAligned="false"
    android:orientation="horizontal" >

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="300dp"
            android:layout_weight="1"
            android:orientation="vertical" 
            android:background="#FF0000"
            android:clickable="true"
            android:id="@+id/layout1"
             >
                <TextView
                android:id="@+id/timer"
                android:text="Time: "
                android:paddingRight="10dip"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />


        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="300dp"
            android:layout_weight="1"
            android:orientation="vertical"
            android:background="#00FF66" 
            android:clickable="true"

            android:id="@+id/layout2"
             >

        //hope u can understand this layout .    

        </LinearLayout>
    </LinearLayout>

 <LinearLayout  // To show label "Finger 1 in the box A took X seconds"
   "Finger 2 in the box B took Y seconds"

            android:layout_width="match_parent"
            android:layout_height="150dp"

            android:orientation="vertical" 
            android:background="#FFAAFF" >


        </LinearLayout>

    </LinearLayout>

1 个答案:

答案 0 :(得分:1)

这可以通过使用布尔标志来完成。

例如,

boolean btn1isclicked = false;
boolean btn2isclicked = false;

在onClick中,单击按钮后将布尔值更改为true。

要检查两个按钮是否都是点击,您可以执行类似

的操作
    if(btn1isclicked == true && btn2isclicked == true){
                dosomething();
      }