Loading...
2024. 3. 21. 00:03

[Android Study] 다이얼로그 - 알림 채널, 알림 객체

* 상태 바에 앱의 정보를 출력하는 것을 알림(notification)이라고 한다. - API 33 버전부터는 앱에서 알림을 띄우기 위해 사용자에게 퍼미션을 요청해야 한다. - 원래 상태 바는 시스템에서 관리하는 곳이며 앱이 직접 제어할 수 없다. 그런데 앱에서 시스템에 의뢰하면 시스템에서 관리하는 상태 바에 앱의 알림을 출력할 수 있다. 따라서 앱의 화면을 구성하거나 사용자 이벤트를 처리하는 프로그래밍과는 구조가 다르며 알림을 위해 제공하는 API를 이용해야 한다. - 알림은 NotificationManager의 notify() 함수로 발생한다. notify() 함수에는 NotificationCompat.Builder가 만들어 주는 Notification 객체를 대입하며 이 객체에는 알림 정보가 저장된..

2024. 3. 20. 00:13

[Android Study] 다이얼로그 - 소리와 진동 알림

* 소리 알림 - 문자나 카카오톡 같은 앱에서 새로운 메세지를 전달받으면 사용자 알림 효과로 짧은 소리를 이용해 알려준다. 이런 목적으로 사용하는 짧은 소리를 알림음이라고 한다. - 알림음은 카카오톡처럼 자체 녹음한 음원을 쓸 수도 있지만 안드로이드 시스템에 등록된 소리를 이용할 수도 있다. 안드로이드 시스템은 알림(notification), 알람(alarm), 벨소리(ringtone)등의 소리를 제공하며 이 소리는 RingtonManager로 얻을 수 있다. * 시스템에 등록된 소리를 이용하는 방법 val notification: Uri = RingtoneManager.getDefaultUri(RingtoneManger.TYPE_NOTIFICATION) val ringtone = RingtoneMana..

2024. 3. 19. 00:14

[Android Study] 다이얼로그 - 커스텀 다이얼로그

* 커스텀 다이얼로그는 다이얼로그에서 개발자가 원하는 형태로 창을 구성하고 싶을 때 사용한다. - LayoutInflater 클래스는 레이아웃 XML 파일을 코드에서 초기화하는 기능을 제공한다. 여기서 초기화란 XML 파일에 선언한 뷰를 코드에서 이용하고자 생성하는 작업을 의미한다. XML 파일은 텍스트 파일일 뿐이며 결국 코드에서 이용하려면 XML에서 선언한 대로 객체를 생성해서 메모리에 할당해야 한다. 이 작업을 LayoutInflater가 해준다. - activity의 화면을 구성하는 레이아웃 xml 파일이라면 layoutInflater가 아닌 setContentView() 함수를 이용한다. * layoutInflater로 레이아웃 XML 파일을 초기화하는 방법은 다음과 같다. - 우선 getSys..

2024. 3. 18. 00:04

[Android Study] 다이얼로그 - AlertDialog

* 안드로이드 다이얼로그의 기본은 알림 창으로 불리는 AlertDialog이다. 알림 창은 크게 3가지 영역으로 구분된다. - 알림 창의 생성자는 접근 제한자가 protected로 선언되어서 객체를 직접 생성할 수 없다. 그 대신 AlertDialog.Builder를 제공하므로 이 빌더를 이용해 알림 창을 만든다. - 먼저 Builder를 생성하고 빌더의 세터 함수로 알림 창의 정보를 지정한다. AlertDialog.Builder(context: Context!) - 다음은 알림 창에 아이콘과 제목, 내용을 지정하는 함수이다. setIcon 함수는 제목 영역에 아이콘을 출력하며 setTitle 함수는 제목 문자열을 출력하고 내용에 간단한 문자열을 출력할 때는 setMessage 함수를 사용한다. fun ..

2024. 3. 17. 00:02

[Android Study] 다이얼로그 - Toast, 날짜/시간

* 다이얼로그(dialog)란 사용자와 상호 작용하는 대화상자이다. * 토스트 메세지 띄우기 - 토스트(Toast)는 화면 아래쪽에 잠깐 보였다가 사라지는 문자열을 의미하며 사용자에게 간단한 메세지로 특정한 상황을 알릴 때 사용한다. 대표적인 예시로는 폰의 뒤로가기 버튼을 눌렀을 때 "종료하려면 한 번 더 누르세요"같은 메세지가 뜨는 것이다. - 토스트는 Toast의 makeText() 함수로 만든다. makeText로 만든 토스트는 show() 함수로 화면에 출력한다. open static fun makeText(context: Context!, text: CharSequence!, duration: Int): Toast! open static fun makeText(context: Context!, ..

2024. 3. 16. 00:05

[Android Study] 퍼미션 설정하기

* 퍼미션(permission)이란 앱의 특정 기능에 부여하는 접근 권한을 의미한다. 개발하는 앱이 다른 앱이나 안드로이드 시스템에서 보호하는 특정 기능을 이용할 때 퍼미션 사용을 설정해야 한다. - 예를 들어, A앱의 개발자가 manifest 파일에 태그로 퍼미션을 설정하면 이를 이용하는 B 앱의 코드를 아무리 잘 구현하더라도 실행되지 않는다. 해당 퍼미션을 사용하려면 B앱의 manifest에 태그로 해당 퍼미션을 사용하겠다고 설정해 줘야 한다. * manifest 파일에 퍼미션을 설정할 때는 태그와 다음 속성을 이용한다. name: 퍼미션 이름, 퍼미션을 구별하는 식별자 역할을 한다. label, description: 퍼미션 설명, 퍼미션을 이용하는 외부 앱에서 권한 인증 화면에 출력할 퍼미션의 정..

2024. 3. 15. 00:16

[Android Study] 리소스

- 안드로이드 앱 개발에서 resource란 정적인 자원이라고 할 수 있다. 앱이 동작하더라도 변경되지 않는 정적인 콘텐츠는 코드에 작성하지 않고 리소스로 분리해서 외부 파일로 만들어 이용할 수 있다. 앱에서 이용하는 리소스는 크게 앱 리소스와 플랫폼 리소스로 구분된다. * 앱 리소스 - 앱 리소스란 개발자가 직접 추가한 리소스를 의미한다. 앱을 개발하기 위해 모듈을 만들면 자동으로 res 디렉토리가 생기고 그 아래에 drawable, layout, mipmap, values 라는 디렉토리 4개가 생성된다. 개발자는 이 리소스 디렉토리에 리소스 파일을 만들면 된다. 이 4가지 말고도 추가로 더 만들수도 있다. - 하지만, 리소스 파일을 만들 때는 이름짓는 규칙이 있다. 그냥 마구잡이로 aaa.xml, a..

2024. 3. 14. 00:07

[Android Study] 뷰 이벤트

- 액티비티 화면은 뷰로 화면을 구성하고 구현한다. 이런 뷰를 터치했을 때 이벤트 처리는 앞에서 정리한 '키 이벤트, 터치 이벤트'를 이용하지 않고 따로 각 뷰에서 이벤트를 제공한다. * 뷰 이벤트의 처리 구조 - 터치 이벤트와 키 이벤트는 이벤트 콜백 함수인 onTouchEvent(), onKeyDown()만 액티비티에 선언해 놓으면 처리가 가능하다. 하지만, 뷰 이벤트는 좀 더 복잡하다. 뷰 이벤트 처리는 이벤트 소스와 이벤트 핸들러로 역할이 나뉘며 이 둘을 리스너로 연결해야 이벤트를 처리할 수 있다. 이벤트 소스(event source): 이벤트가 발생한 객체 이벤트 핸들러(event handler): 이벤트 발생 시 실행할 로직이 구현된 객체 리스너(listener): 이벤트 소스와 이벤트 핸드러..