본문 바로가기

아옳옳의 코딩공부/아옳옳의 안드로이드스튜디오

2021-03-18 안드로이드 스튜디오( 사용자 이벤트 처리와 리소스2 ,애니메이션)

반응형

key 입력 이벤트 처리하기

 

 

일반적인 키코드값은 정수로 받아들여진다 위 사진에 보이는것처럼 각종 키버튼에 대한 이벤트 처리를 할 수 있지만 

키 고유의 기능때문에 잘 사용하진않지만 그 중에 가장 많이 사용되는 BACK버튼으로 실습을 진행해 보았다 

 

BACK버튼을 잘못눌럿을때 어플이 종료되는것을 막기위해서 일정 시간안에 한번더 눌러야 종료가 된다 던지 BACK버튼

 을 눌럿을때 팝업창을 하나 띄워 한번더 물어보게 한다던지 등으로 사용 할 수 있는데 이번 실습은 일정 시간안에 한번더 눌러줘야 종료되는것으로 해볼것이다 

 

메소드 오버라이드를 하여 사용하는 2가지 방법이 있다 

제너레이트 > 오버라이드 메소드 하고 아래의 두가지 코드둘다 사용가능하다

   @Override      빽버튼 키코드로 다른것들도 사용 가능
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode == KeyEvent.KEYCODE_BACK){
            if (System.currentTimeMillis() - initTime >3000){ //눌럿을때 시간과 다시 눌럿을때의 시간이 3000 밀리세컨이 넘어가면 이 조건 실행
                Toast.makeText(getApplicationContext(), "종료하려면 한번 더 누르세요",Toast.LENGTH_LONG).show();
                initTime=System.currentTimeMillis();
            }else { // 3000을 넘어가지 않는다면 종료
                finish();
            }
        }

        return true;
        // return super.onKeyDown(keyCode, event); // 이거 있으면 빽버튼 안먹는다
  @Override   // 빽버튼 다른 메소드 전용 메소드
    public void onBackPressed() {

// 이안에 내가 빽 버튼을 눌렸을 때 어떻게 할것인가를 정의 한면 된다 
            if (System.currentTimeMillis() - initTime >3000){
                Toast.makeText(getApplicationContext(), "종료하려면 한번 더 누르세요롤롤로",Toast.LENGTH_LONG).show();
                initTime=System.currentTimeMillis();
            }else {
                finish();

            }
        //super.onBackPressed(); 이거 빼줘야 한다 
    }

 

화면전환 이벤트 (생명주기 할때 전환하는건 해봤어서 따로 정리는 )

화면전환 없이 나는 고정으로 사용하고 싶다면 (방향 전환 없이 수평 또는 수직으로 ) 매니패스트에

아래 코드 작성해주면 된다  (수평수직 

 

 


리소스  (res의 속성값이라고 생각하면 된다 ) 보통 어플리케이션의 보여지는 각종의 것들을 정의하는 것

이건 다 외울수 없으니 정리해놓은거 나중에 봐가면서 그때그때 사용하면 될거 같다~!!  정리 잘하자!!

 

 

리소스의 종류  

 

 

anim 애니메이션 

애니메이션 글자나 사진등이 애니메이션 효과를 가지고 나타나고 사라지게 할 수 있다  

 

 

크기, 색상 리소스 

문자나( 크기가 큰 문자들 주로 사용함 ) , 색상 , 스타일 등등을 미리 지정해놓고 가져다 사용할 수 있다.

 

 

각각의 설정들을 설정해놓은뒤에 나중에 다른곳에서 사용할 수 있도록 해놓은걸 볼 수 있다 . 

 

테마리소스

 

 

 

핸드폰 화면에 보이는 각종의 요소들의 테마를 바꿔줄 수 있다.

 

 

 매니패스트 위 테마항복에 내가 만든 테마를 적어주어 사용도 가능하고 . 하나의 액티비티에만 테마를 사용할 수도 있다. (액티비티 옆에 붙여서) 

 

예전에는 나만의 리소스를 만들어 놓으면 나중에 많은 작업을 할때 더욱 도움이 될거 같은 느낌이든다 

 

책에는 없지만 한가지더 오늘 배운 내용중에 폰의 로케일에 따라 언어를 다르게 보여줄수도 있다 아래 그림 참조하자 

 

 

 

res에서 새로운 리소스 파일을 만들어주고 

 

 

로케일 설정을 한국으로 해준다 ( 이름은 똑같아야함 다음그림 보면 이해됨) 

 

 

 

보이는 것처럼 스트링xml이 두개가 만들어 졌고 한국에서 접속하면 한글이 출력될것이다 그럼

String.xml 살펴 보자 

 

 

외국에서 접속했을때 나올 영어로된 String.xml이다 

 

 

 

이건 로케일이 한국이라면 나올 String.xml 

 

 

 

 

보면 이름과 설정이 모두 동일 하지만 내용물이 한글이냐 영어냐의 차이만 있을뿐이다.  위처럼 매니패스트에 설정을 해주면  각각의 로케일에 따라 언어가 다르게 출력되는것을 확인할 수있다. 

당연히 사진도 로케일에 따라 다르게 만들어줄수도 있다 .

 

 

이번 챕터를 배우면서 매니패스트의 중요성을 한번더 알고 가는거 같다 

내가 만들 어플리케이션의 테마나 미리 정리해놓은 소스들로 더욱 간편하게 코드를 작성하고 활용 할 수 있을거 같다 

 

오늘은 여기까지 정리를 마치겠당~~~ 아올ㅀ

 

반응형