총 게시물 39,187건, 최근 0 건 안내 RSS 글쓰기
이전글  다음글  목록 글쓰기
[안드로이드]

HardKey의 Key 이벤트에 대해서

글쓴이 : KuRoN 날짜 : 2018-09-04 (화) 16:51 조회 : 283
글주소 : http://www.androidside.com/B49/170333
 
  프리미엄온라인강의 굿잡에듀
최신강좌들이 한 곳에! 그래픽, 게임, 뷰티, 요리, 취업, 회계세무, 어학까지!
www.goodjobedu.net
  다이빙투어 오션플레이어
필리핀세부 다이빙투어, 스쿠버다이빙 전문기관, 맞춤교육, 숙박숙식 토탈서비스
www.oceanplayerdive.com
  PADI서귀포센터조이다이브
제주오픈워터 다이버 최다배출! PADI 골드카드 발급!게스트하우스무료제공
blog.naver.com/joydivejeju
신청하기


안드로이드, 자바 그리고 다양한 질문에 대해 성실히 답해드립니다. Q&A Jang

    public override Boolean DispatchKeyEvent(KeyEvent e)
    {
        switch(e.KeyCode)
        {
            case Keycode.Num0:

                if (e.Action == KeyEventActions.Down && e.IsLongPress == false)
                {
                    Console.WriteLine("+++++++++++++++++++++++++++++++ KeyDeviceId : " + e.DeviceId + ", KeyCode : " + e.KeyCode + ", KeyScanCode : " + e.ScanCode);

                }


                if (e.Action == KeyEventActions.Down && e.IsLongPress == true)
                {

                    LayoutInflater _Power_infalter = (LayoutInflater)this.GetSystemService(Context.LayoutInflaterService);
                    View _Power_Popup = _Power_infalter.Inflate(Resource.Layout.Menu_Power_Window, null);

                    PopupWindow _Power = new PopupWindow(_Power_Popup, 500, 300);
                    _Power.SetBackgroundDrawable(new BitmapDrawable());

                    ImageButton _Custom_Back_Button = (ImageButton)_Power_Popup.FindViewById(Resource.Id._Custom_Back_Button);
                    ImageButton _Custom_Exit_Button = (ImageButton)_Power_Popup.FindViewById(Resource.Id._Custom_Exit_Button);

                    _Power.ShowAtLocation(_Power_Popup, GravityFlags.Center, 0, 0);

                    _Custom_Back_Button.Click += (a, b) =>
                    {
                        _Power.Dismiss();
                    };

                    _Custom_Exit_Button.Click += (u, n) =>
                    {
                        Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
                    };

                }
                break;

        }

        return base.DispatchKeyEvent(e);
    }


이런식으로 코드가 있는데요,
현재 상황에서는 당연하게도!
LongKey를 받기위해 누르고 있으면 ShortKey도 같이 나타나 버리는데,
LongKey를 입력받는 동안 ShortKey는 작동 안하도록 할 수는 없나요?

1. LongKey를 입력받기 위해 누르는 동안 ShortKey는 작동하지 않도록 하려면 어떻게 해야하나요?
2. LongKey로 팝업을 키운 상태에서 다시 한번 같은 키를 눌렀을 때, 어느 특정한 이벤트가 일어나게 하려면 어떻게 해야하나요?



질문자가 자신의 포인트 10 점을 걸었습니다.
답변하시면 포인트 2을, 답변이 채택되면 포인트 8을 드립니다.

질문답변 게시판에서 궁금한 사항을 해결하셨다면, 애써 답변해주신 분께 잘 되었다고 따뜻한 댓글 한마디 남겨주세요.
그리고 답변해주신 분의 글을 '추천' 해주세요.
추천받으신 분에게 1포인트가, 추천하신 분에게도 1포인트가 적립됩니다. ^^

뉴키 2018-09-04 (화) 17:04
이전에 답글 드린거같은데..

숏키이벤트는 키업에 구현하시고 if(변수)를 두어 롱키이벤트 발동시 변수를 거짓으로 하면 숏키이벤트가 안뜨죠.

롱키 키업에 변수를 다시 참으로 바꾸고요.

팝업상태에서 클릭시 이벤트도 if(변수)로 해결하실 수 있겠네요. 팝업 뜬동안 변수를 참으로 하면 이벤트가 발동하겠죠.
댓글주소 추천 0 반대 0
     
     
KuRoN 2018-09-04 (화) 17:10
[@뉴키] 아 맞네요.. 저 방법 해본다고 어제 생각해놓고 또 까먹었네요 ㅠ 감사합니다 ㅠㅠ

댓글주소 추천 0 반대 0
     
     
KuRoN 2018-09-04 (화) 17:21
[@뉴키] 이건 제가 너무 몰라서 하나만 더 질문드리고 싶은데...

만약 위에처럼 console 같이 로그 같은걸 띄운다고 한다면 그건 어떤식으로 막아야하는건가요..
변수가 따로 있는건아닌데..
댓글주소 추천 0 반대 0
          
          
뉴키 2018-09-04 (화) 18:13
[@KuRoN]
if (e.Action == KeyEventActions.Up && e.IsLongPress == false)
                {
                    Console.WriteLine("+++++++++++++++++++++++++++++++ KeyDeviceId : " + e.DeviceId + ", KeyCode : " + e.KeyCode + ", KeyScanCode : " + e.ScanCode);

                }
댓글주소 추천 0 반대 0
               
               
KuRoN 2018-09-05 (수) 08:22
[@뉴키] 이렇게 해봤었는데, 그래도 이벤트가 발생하더라구요 ㅠㅠ 
댓글주소 추천 0 반대 0
                    
                    
뉴키 2018-09-05 (수) 17:48
[@KuRoN]
그럼 IsLongPress 가 false겠죠
IsLongPress가 어디서 바뀌는지부터 보셔야겠네요.
댓글주소 추천 0 반대 0
                         
                         
KuRoN 2018-09-05 (수) 18:21
[@뉴키] 이 문장 이전에 IsLongPress를 사용한적이 없는데..
댓글주소 추천 0 반대 0
이전글  다음글  목록 글쓰기

 


Copyright ⓒ www.androidside.com. All rights reserved.
채팅 권한: 글쓰기 1개
2레벨 이상만 대화 가능
공개 채팅: 평일 !(9시 ~ 17시),토,일
안사2 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기