메뉴 구성 메뉴는 액션바의 중요한 구성 요소로 액티비티 화면에서 사용자 이벤트를 사용할 수 있도록 합니다. 액티비티에 메뉴를 추가하면 액션바 오른쪽에 오버플로 버튼이 나타나고 이 버튼을 누르면 메뉴가 아래로 확장되어 나타납니다. 그리고 오버플로 메뉴 중에 몇몇은 액션바에 아이콘으로 나오게 할 수 있습니다. 이를 액션 아이템(혹은 액션 버튼)이라고 합니다. 결국 오버플로 메뉴와 액션 아이템 모두 메뉴입니다. 액티비티에 메뉴를 추가하고 싶다면 onCreateOptionsMenu()와 onPrepareOptionsMenu() 함수를 이용할 수 있습니다. 함수 설명 onCreateOptionsMenu() 액티비티가 실행되면서 처음에 한 번만 호출(정적) onPrepareOptionsMenu() 액티비티가 실행되..
appcompat 라이브러리 androidx 라이브러리에서 가장 많이 사용하는 appcompat 라이브러리는 안드로이드 앱의 화면을 구성하는 액티비티를 만들며 API 레벨의 호환성 문제를 해결해 줍니다. appcompat 라이브러리를 사용하려면 그래들 파일의 dependencies 항목(의존성 설정)에 다음처럼 선언해 야 합니다. 그런데 이 선언은 안드로이드 스튜디오에서 모듈을 만들 때 자동으로 추가됩니다. implementation 'androidx.appcompat:appcompat:1.3.1' appcompat 라이브러리를 이용해서 액티비티를 만들 때는 플랫폼 API의 Activity가 아니 라 다음처럼 appcompat의 AppCompatActivity 클래스를 상속받아 작성합니다. import ..
제트팩과 androidx 구글에서는 안드로이드 앱을 개발하는 데 필요한 다양한 라이브러리 모음을 제트팩이라는 이름으로 제공합니다. 제트팩은 안드로이드 플랫폼이 기본으로 제공하는 플랫폼 API 외에 따로 추가된 라이브러리입니다. 플랫폼 API 플랫폼 API는 ART(Android Run Time)에서 제공하는 안드로이드 앱의 핵심 라이브러리입니다. ART는 대부분 android나 java로 시작하는 패키지명을 사용합니다. java.lang.String, java.util.Date 등의 자바 클 래스부터 android.app.Activity, android.widget.TextView 등의 안드로이드 클래스는 모두 플랫폼 API입니다. 안드로이드 앱은 런타임 때 ART에 의해 실행되므로 ART에서 제공하는 ..
알림 띄우기 알림 띄우기 프로그레스 프로그레스 앱에서 어떤 작업이 이루어지는 데 시간이 걸린다면 보통 알림을 이용해 일의 진행 상황을 프로그레스에 바로 알려 줍니다. 대표적인 예가 앱에서 서버로 파일을 올리거나 내려받는 경우입니다. 알림의 프로그레스 바는 화면을 따로 준비하지 않고 빌더에 setProgress() 함수만 추가해 주 면 자동으로 나옵니다. open fun setProgress(max: Int, progress: Int, indeterminate: Boolean): Notification.Builder // max: 프로그레스 바의 최댓값 // progress: 진행값 // indeterminatedml 값이 true이 면 프로그레스 바는 왼쪽에서 오른쪽으로 계속 흘러가듯이 표현 현잿값을 지..
알림 띄우기 알림 구성 액션 알림에는 터치 이벤트 외에도 액션을 최대 3개까지 추가할 수 있습니다. 알림에서 간단한 이벤트는 액션으로 처리합니다. 알람 앱의 알람 취소, 전화 앱의 전화 수신이나 거부 등이 대표적인 예입니다. 액션도 사용자 이벤트 처리가 목적입니다. 따라서 알림 터치 이벤트와 마찬가지로 사용자가 액션을 터치할 때 실행할 인텐트 정보를 PendingIntent로 구성해서 등록해야 합니다. 실제 사용자가 액션을 터치하면 등록된 인텐트가 시스템에서 실행되어 이벤트가 처리되는 구조 입 니다. 액션을 등록할 때는 addAction() 함수를 이용합니다. 액션 등록 함수 open fun addAction(action: Notification.Action!): Notification.Builder 매..
알림 띄우기 알림 객체 알림 객체 알림 빌더를 만들었으면 이 빌더를 이용해 Notification 객체를 만들어야 합니다. 이 객체에 출력할 이미지, 문자열 등의 정보를 담습니다. 앱에서 알림이 발생하면 상태 바에 이미지가 출력됩니다. 이를 스몰 아이콘이라 부릅니다. 상태 바의 알림 이미지 그리고 상태 바를 끌어내린다면 알림 정보를 확인할 수 있습니다. 알림은 스몰 아이콘과 발생 시각, 제목 내용 등으로 구성되며, 이러한 알림 정보를 Noti fication 객체에 설정해야 합니다. 빌더의 세터 함수를 이용해 알림의 구성 정보를 설정 builder.setSmallIcon(android.R.drawable.ic_notification_overlay) builder.setWhen(System.currentT..
알림 띄우기 알림 채널 상태바는 화면 상단의 한 줄을 의미 하며 이곳에 배터리, 네트워크, 시간 등 시스템의 상태 정보가 출력됩니다. 상태 바에 앱의 정보를 출력하는 것을 알림 notification이라고 합니다. 상태바는 시스템에서 관리하는 곳이며 앱이 직접 제어할 수 없습니다. 그렇지만 앱에서 시스템에 의뢰히면 시스템에서 관리하는 상태 바에 앱의 알림을 출력할 수 있습니다. 그렇기 때문에 지금까지 배워 왔던 화면을 구성하거나 사용자 이벤트를 처리하는 프로그래밍과는 구조가 다르며 알림을 위해 제공하는 API를 이용해야 합니다. NotificationChannel로 알림 채널을 만들고 이 채널 정보를 대입해 Notification Compat.Builder를 만든 다음, 이 빌더로 Notification..
소리와 진동 알림 소리 알림 안드로이드 시스템은 알림(NOTIFICATION), 알람(ALARM), 벨소리(RINGTONE) 등의 소리를 제공하며 이 소리는 RingtonManager로 얻을 수 있습니다. // 1. getDefaultUri()함수를 통해 소리의식별값을 Uri객체로 얻습니다. val uriNotification : Uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); // 2. getRingtone()함수를 통해 위에서 얻은 소리식별Uri를 사용하여 Ringstone 객체 생성 val ringtone = RingtoneManager.getRingtone(applicationContext, uriNotificatio..
다양한 다이얼로그 다이얼로그란 사용자와 상호 작용하는 대화 상자를 의미합니다. 토스트 메시지 띄우기 토스트(toast)는 화면 아래쪽에 잠깐 보였다가 사라지는 문자열 다이얼로그를 말합니다. 토스트는 Toast의 함수인 makeText() 함수로 만듭니다. open static fun makeText(context: Context!, text: CharSequence!, duration: Int): Toast! open static fun makeText(context: Context!, resId: Int, duration: Int): Toast! makeText() 사용 예시 val toast1 = Toast.makeText(this,"종료하려면 한번더 눌러주세요!",Toast.LENGTH_SHORT)..
퍼미션 설정하기 퍼미션이란 앱의 특정 기능에 부여하는 접근 권한을 말합니다. 안드로이드 시스템에서 보호하는 특정 기능을 이용할 때나 다른 앱에서 사용할 수 없도록 보호할 때 퍼 민션을 설정합니다 퍼미션 설정과 사용 설정 A 앱의 컴포넌트를 B 앱에서 사용하는 상황일때 A 앱의 컴포넌트에서 퍼미션을 설정하면 B 앱에서 연동할 때 문제가 발생합니다. 이럴 때는 B 앱에서 을 설정해줘야 합니다. 매니페스트 기능을 보호하려는 앱의 매니페스트 파일에 설정합니다. 퍼미션으로 보호된 기능을 사용하려는 앱의 매니페스트 파일에 설정합니다. 태그와 속성 name 퍼미션의 이름입니다. abel, description 퍼미션을 설명합니다. protectionLevel 보호 수준입니다. protectionLevel 속성값은 보..