鍵值判斷單擊雙擊和長按事件

鍵盤上按鍵,判斷單擊雙擊和長按事件

public class MainActivity extends ActionBarActivity {

    private static boolean isWaitingDoubleClick = true;
    private static boolean isKeyLongPress;
    private static final int DOUBLE_CLICK = 350;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        super.onKeyDown(keyCode, event);
        if (event.isLongPress() == true && keyCode == KeyEvent.KEYCODE_MENU) {

            event.startTracking();
            System.out.println("長按");
            isKeyLongPress = true;
        }
        return super.onKeyDown(keyCode, event);
    }

    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (isKeyLongPress == true) {
            isKeyLongPress = false;
        } else {
            isKeyLongPress = false;
            ClickOrDoubleClick(keyCode);
        }
        return super.onKeyUp(keyCode, event);
    }

    private void ClickOrDoubleClick(int keyCode) {
        if (isWaitingDoubleClick == true && keyCode == KeyEvent.KEYCODE_MENU) {
            isWaitingDoubleClick = false;
            Thread thread = new Thread() {
                @Override
                public void run() {
                    try {
                        sleep(DOUBLE_CLICK);
                        if (isWaitingDoubleClick == false) {
                            isWaitingDoubleClick = true;
                            System.out.println("單擊");
                        }
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            };
            thread.start();
        } else {
            isWaitingDoubleClick = true;
            System.out.println("雙擊");

        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章