30/09/2018, 23:21

Thực hiện lệnh khi ấn 2 button cùng một lúc?

Mình có 2 button, giờ mình muốn user phải ấn cùng lúc 2 button đó thì mới thực hiện một câu lệnh nhưng mình không biết phải làm sao. Mọi người giúp mình với

Dương Nguyễn Văn viết 01:22 ngày 01/10/2018

Onclick btn1 thì kiểu tra btn2 có đang onclick hay không

Phạm Sỹ Hưng viết 01:24 ngày 01/10/2018

Nhưng nếu user ấn button 2 trước rồi ấn button 1 thì sẽ không được

Quân viết 01:23 ngày 01/10/2018
private boolean bt1Touching = false;
private boolean bt2Touching = false;

private Button btn1;
private Button btn2;

private void setTouchHandler() {
    btn1.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            switch (motionEvent.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    bt1Touching = true;
                    checkTouching();
                    break;
                case MotionEvent.ACTION_UP:
                    bt1Touching = false;
                    break;
            }
            return true;
        }
    });
    btn2.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            switch (motionEvent.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    bt2Touching = true;
                    checkTouching();
                    break;
                case MotionEvent.ACTION_UP:
                    bt2Touching = false;
                    break;
            }
            return true;
        }
    });
}

private void checkTouching() {
    if (bt1Touching && bt2Touching) {
        //do what ever you want
    }
}

ngâm cứu và cải tiến nhé

X viết 01:37 ngày 01/10/2018

Trên thực tế đa phần người ta thường hạn chế multi-touch như thế này tối đa. Lý do vì sao thì cũng tương tự như multi-thread ấy =)) Thiết bị cảm ứng thì không nên dùng kiểu shortcut key như thiết bị có bàn phím vật lý giống máy tính được. Về độ thân thiện với người dùng, smartphone người ta thường dùng 1 tay, trong khi người khác đang cố gắng đơn giản hóa thao tác nhất có thể thì bạn lại muốn phức tạp thêm tình hình =))

Tuy nó hơi xa thực tế một chút nhưng đây cũng là một câu hỏi khá thú vị. Tất nhiên là có thể làm được dựa vào ý tưởng từ câu trả lời của @qloved phía trên.

Phạm Sỹ Hưng viết 01:27 ngày 01/10/2018

Em đang muốn làm một cái rubik timer, phải đặt cả hai tay vào 2 button rồi bỏ tay ra lắp thì đồng hồ sẽ bấm giờ Nên em mới cần multi touch

Quân viết 01:26 ngày 01/10/2018

uh, chắc chỉ có làm game thì mới cần đến chứ app thông thường không nên làm vậy, khó dùng ra

Tâm Ninja viết 01:34 ngày 01/10/2018
  • Disable sự kiện onclick của cả hai cái nút.
  • Tạo ra hai cái cờ lưu trạng thái của mỗi nút. Trạng thái của nút là một biến kiểu time lưu lại thời gian ấn nút.
  • Override onTouch().
  • OnDown thì lưu lại thời gian của button được onDown tương ứng đồng thời kiểm tra thời gian của button còn lại khác không thì sẽ notify method xử lí sự kiện.
  • OnUp thì xóa thời gian được lưu trong cờ của button tương ứng.
  • Thực hiện clear cả hai cờ trong onResume để cho các trường hợp như đang ấn thì có cuộc gọi đến hoặc màn hình bị thay đổi khi người dùng chưa thả tay ra.
    => Cách này có thể nâng cao lên nhiều sự kiện khác nữa.
Bài liên quan
0