Wear용 맞춤 레이아웃 만들기

Wear OS by Google에서 시계 레이아웃을 만드는 방법은 휴대전화 레이아웃을 만드는 방법과 비슷합니다. 단, 화면 크기에 맞고 한눈에 알아볼 수 있도록 디자인해야 한다는 점만 다릅니다. 전화 앱의 기능과 UI를 시계로 포팅하면 좋은 환경을 기대하기 어렵습니다.

필요한 경우에만 맞춤 레이아웃을 만들어야 합니다. 멋진 시계 앱을 디자인하는 방법에 관한 자세한 내용은 Wear OS 디자인 가이드라인을 참조하세요.

맞춤 알림 만들기

일반적으로 휴대전화에서 알림을 만들고 웨어러블에 자동으로 동기화되도록 해야 합니다. 이렇게 하면 알림을 한 번 작성한 후, 폼 팩터마다 개별적으로 디자인할 필요 없이 시계뿐만 아니라 자동차, TV까지 다양한 유형의 기기에 표시할 수 있습니다.

표준 알림 스타일이 적합하지 않다면(예: NotificationCompat.BigTextStyle 또는 NotificationCompat.InboxStyle) 맞춤 레이아웃으로 활동을 표시할 수 있습니다. 시계에서만 맞춤 알림을 만들고 발행할 수 있으며, 시스템은 이러한 알림을 휴대전화에 동기화하지 않습니다.

참고: 시계에서 맞춤 알림을 만들 때 지원 라이브러리 대신 표준 알림 API(API 레벨 20)를 사용할 수 있습니다.

맞춤 알림을 만들려면 다음 단계를 따르세요.

  1. 레이아웃을 만들고 표시할 활동의 콘텐츠 보기로 설정합니다.

    Kotlin

        override fun onCreate(savedInstanceState: Bundle?) {
            ...
            setContentView(R.layout.notification_activity)
        }
        

    자바

        public void onCreate(Bundle bundle){
            ...
            setContentView(R.layout.notification_activity);
        }
        
  2. 시계의 환경설정 스트림 프로세스에서 활동을 표시할 수 있도록 Android manifest에서 필요한 활동 속성을 정의합니다. 활동을 내보내기 및 삽입이 가능하며, 작업 관심분야가 비어 있다고 선언해야 합니다. 또한 테마를 Theme.DeviceDefault.Light로 설정하는 것이 좋습니다. 예를 들면 다음과 같습니다.
        <activity android:name="com.example.MyDisplayActivity"
            android:exported="true"
            android:allowEmbedded="true"
            android:taskAffinity=""
            android:theme="@android:style/Theme.DeviceDefault.Light" />
        
  3. 표시할 활동의 PendingIntent를 만듭니다. 예를 들면 다음과 같습니다.

    Kotlin

        val notificationPendingIntent: PendingIntent =
                Intent(this, NotificationActivity::class.java).let { notificationIntent ->
                    PendingIntent.getActivity(
                            this,
                            0,
                            notificationIntent,
                            PendingIntent.FLAG_UPDATE_CURRENT
                    )
                }
        

    자바

        Intent notificationIntent = new Intent(this, NotificationActivity.class);
        PendingIntent notificationPendingIntent = PendingIntent.getActivity(
                this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        
  4. Notification을 빌드하고 PendingIntent를 제공하는 setDisplayIntent()를 호출합니다. 시스템은 이 PendingIntent를 사용하여 사용자가 알림을 볼 때 활동을 시작합니다.
  5. notify() 메서드를 사용하여 알림을 발행합니다.

    참고: Wear 1.x에서 홈 화면에 알림이 표시될 때, 시스템은 알림의 의미 체계 데이터를 통해 생성한 표준 템플릿으로 알림을 표시합니다. 이 템플릿은 모든 시계 모드에서 잘 작동합니다. 사용자가 알림을 위로 스와이프하면 알림에 관한 맞춤 활동이 표시됩니다.

Wear UI 라이브러리로 레이아웃 만들기

Wear UI 라이브러리는 Android 스튜디오 프로젝트 마법사로 시계 앱을 만들 때 자동으로 포함됩니다. 이 라이브러리를 다음 종속 항목 선언과 함께 build.gradle 파일에 추가할 수도 있습니다.

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'androidx.wear:wear:1.0.0'
        compile 'com.google.android.gms:play-services-wearable:+'
    }
    

이 라이브러리는 시계용으로 디자인된 UI를 빌드하는 데 도움이 됩니다. 자세한 내용은 Wear 기기용 맞춤 UI 만들기를 참조하세요.

다음은 몇 가지 주요 클래스입니다.

BoxInsetLayout
화면 모양을 인식하고 둥근 화면의 가운데 정사각형에 하위 요소를 넣을 수 있는 FrameLayout 객체입니다.
ConfirmationActivity
사용자가 작업을 완료한 후 확인 애니메이션을 표시하는 활동입니다.
AnimationSet
함께 재생해야 하는 애니메이션 그룹입니다.
CircularProgressLayout
하위 뷰 주위에 순환 카운트다운 타이머를 제공하는 레이아웃입니다. 일반적으로 짧은 지연 시간이 경과한 후 작업을 확인하기 위한 자동 타이머로 사용됩니다.
SnapHelper
SnapHelperRecyclerView 객체의 맞추기를 지원합니다.
PagerSnapHelper
무선 호출기 스타일 맞추기를 수직 또는 수평 방향으로 지원하는 SnapHelper 인스턴스 구현입니다.
AlertDialog
버튼을 1개, 2개 또는 3개 표시할 수 있는 대화상자의 서브클래스입니다.
ProgressBar
작업이 얼마나 진행되었는지를 나타내는 막대를 사용자에게 표시합니다. 애플리케이션이 진행됨에 따라 진행률을 변경(막대 길이 수정)할 수 있습니다.
WearableRecyclerView
정사각형 및 원형 기기에 스크롤 가능한 항목 목록을 표시하기 위한 RecyclerView 클래스의 웨어러블 관련 구현입니다.

Wear UI 라이브러리 API 참조

참조 문서에서는 각 UI 위젯을 사용하는 방법을 자세히 설명합니다. 위 클래스에 관한 Wear API 참조 문서를 찾아보세요.

참고: Wear OS 개발에는 프로젝트 설정, 라이브러리 포함, 패키징 편의성을 제공하는 Android 스튜디오를 사용하는 것이 좋습니다.