헤드업 알림

알림은 Android에서 사용자에게 업데이트, 알림, 기타 시기적절한 정보를 제공하기 위해 앱 외부에 표시하는 메시지입니다. Android Automotive OS에서는 알림을 HUN(헤드업 알림)으로 표시하거나 알림 패널에 표시할 수 있습니다(또는 두 방법으로 모두 표시). 이 자료에서는 HUN을 맞춤설정하는 방법을 설명합니다.

알림

그림 1. 알림

아래 설명된 구성 값을 재정의하면 다음 두 가지 방법으로 HUN을 맞춤설정할 수 있습니다.

  • 탑승 순서
  • 애니메이션

HUN을 맞춤설정할 때는 시스템 표시줄의 Z 순서에서 어떤 영향을 받는지 확인해야 합니다. 시스템 표시줄의 Z 순서가 10 이상이면 HUN의 상단에 나타납니다. 예를 들어 HUN이 화면 상단에 표시되고 상단 시스템 표시줄의 Z 순서가 10인 경우 상단 시스템 표시줄은 HUN 상단에 표시됩니다. 단, 애니메이션 도우미가 상단 시스템 표시줄 높이로 HUN의 최종 위치를 오프셋하도록 맞춤설정되는 경우는 예외로 합니다.

관련 문서

  • 리소스를 오버레이하는 방법과 이유를 알아보려면 시스템 UI 맞춤설정의 오버레이를 참고하세요.

  • 알림에 관한 자세한 내용은 developer.android.com의 Android Automotive OS 알림을 참고하세요.

config_showHeadsUpNotificationOnBottom

HUN은 구성 값 config_showHeadsUpNotificationOnBottom에 따라 화면 상단 또는 하단에 표시될 수 있습니다. 기본적으로 false로 설정되는 이 값은 화면 상단에 알림의 최종 위치를 설정합니다.

기본 알림

그림 2. 기본 헤드업 알림

config_headsUpNotificationAnimationHelper

알림이 화면에 표시되고 화면 밖으로 나가는 여러 가지 방법이 있습니다. 기본 애니메이터 도우미 클래스 집합이 제공되며 config_headsUpNotificationAnimationHelper를 재정의하여 전환할 수 있습니다.

com.android.car.notification.headsup.animationhelper.CarHeadsUpNotificationTopAnimationHelper

HUN에 애니메이션을 적용하여 초기 위치에서 아래로 최종 위치까지, 보이도록, 그런 다음, 보이지 않도록 전환합니다.

상단 애니메이션 도우미

그림 3. 상단 애니메이션 도우미

com.android.car.notification.headsup.animationhelper.CarHeadsUpNotificationBottomAnimationHelper

HUN에 애니메이션을 적용하여 초기 위치에서 최종 위치까지, 보이도록, 그런 다음, 보이지 않도록 전환합니다.

하단 애니메이션 도우미

그림 4. 하단 애니메이션 도우미

com.android.car.notification.headsup.animationhelper.CarHeadsUpNotificationRightAnimationHelper

HUN에 애니메이션을 적용하여 왼쪽 초기 위치에서 최종 위치까지, 보이도록, 그런 다음, 보이지 않도록 전환합니다.

오른쪽 애니메이션 도우미 오른쪽 애니메이션 도우미

그림 5. 오른쪽 애니메이션 도우미

맞춤 애니메이션 도우미

추가 맞춤설정이 필요한 경우 애니메이터 도우미 클래스를 재정의하거나, 이 코드 스니펫처럼 도우미 클래스가 HeadsUpNotificationAnimationHelper 인터페이스를 구현하는 경우 맞춤 애니메이터 도우미 클래스를 사용할 수 있습니다.

[...]

public class SampleAnimationHelper implements
       HeadsUpNotificationAnimationHelper {

   @Override
   public AnimatorSet getAnimateInAnimator(Context context, View view) {
       return (AnimatorSet) AnimatorInflater.loadAnimator(
               context, R.animator.heads_up_notification_transition_in);
   }

   @Override
   public AnimatorSet getAnimateOutAnimator(Context context, View view) {
       return (AnimatorSet) AnimatorInflater.loadAnimator(
               context, R.animator.heads_up_notification_transition_out);
   }

   @Override
   public void resetHUNPosition(View view) {
       view.setY(-1 * view.getHeight());
       view.setAlpha(0);
   }
}