Android Wear UI Development Best Practices (Google I/O ’17)

AGA MADURSKA :여보세요, 제 이름은 Aga, Android Wear Support Library의 TL 중 하나입니다 OLI LAN : 나는 Oli Lan입니다

저는 Android Wear의 시계 얼굴 담당 수석 엔지니어입니다 여기 와서 반갑습니다 우리는 새로운 것들에 대해 이야기하게되어 기쁩니다 Android Wear에서 앱을 만들고 얼굴을 볼 수 있도록 도와줍니다 몇 가지 도구를 소개하겠습니다

합병증을 지원하는 시계 모드를 만드는 데 도움이됩니다 하지만 우선, 아가가 너에게 말할거야 지원에 대한 큰 변화에 대해 Android Wear 용 라이브러리 AGA MADURSKA : 감사합니다 따라서 스마트 워치가 처음 출시되면 많은 개발자들이 이 새로운 폼 팩터를위한 앱을 만들기 위해 애를 먹었습니다 작은 화면, 라운드 스크린, 처음으로, 또한 브리징 정보 전화에서 시계로

우리는 웨어러블 지원 라이브러리를 구축했습니다 이러한 문제를 해결하는 데 도움이됩니다 그리고 오늘, 저는 우리가 시작하고 있다고 발표하게 된 것을 기쁘게 생각합니다 오픈 소스 코드 웨어러블 지원 라이브러리는 Android 지원 라이브러리로 이동 중 소위 마모 모듈이 될 것입니다

이것은 Android Support Library의 다른 모듈과 유사합니다 그게, 잘하면, 너 이미 Core UI 나 Recycler View 또는 Design처럼 그래서 그것은 또 다른 모듈이 될 것입니다, 다시, 오픈 소싱 코드 Android 지원 라이브러리 260

0-beta1로 시작합니다 실제로 이틀 전에 시작되었습니다 그래서 당신은 거의 즉시 그것을 사용할 수 있습니다 코드에 쉽게 추가 할 수 있습니다 정규 종속성을 추가하기 만하면됩니다

다른 모듈과 매우 유사한 구조로되어 있습니다 그곳에 착용하고 베타 1을 착용했는지 확인하십시오 잘하면,이 변화는 당신을 행복하게 만듭니다 행복해야 할 몇 가지 이유가 있습니다 무엇보다 먼저, 내가 전에 말했듯이, 코드는 오픈 소스가 아닙니다

지금 리버스 엔지니어링을 중단 할 수 있습니다 그것은 모두 거기에있을거야 이제 API는 지원 라이브러리의 일부가 될 것이며, Android의 나머지 부분과 일관성을 유지할 것입니다 나머지 지원 라이브러리 Android에서 더 자주 출시 될 예정입니다

약 2 개월마다 지원되는 라이브러리를 지원하십시오 그리고 이것은 우리가 취할 수 있음을 의미합니다 더 많은 의견을 보내고 더 빨리 반응하십시오 우리가 전에 있었던 것보다 그러나 우리는 모든 코드를 한꺼번에 옮기지 않을 것입니다

그것은 생태계에 충격이 될 것입니다 모든 것을 움직이기 이제 UI 구성 요소부터 시작하겠습니다 그리고 저는 나머지 이야기를하기 위해 그것에 집중할 것입니다 첫 번째 패키지는 오픈 소스입니다

보기 패키지이거나 지금 진행 중입니다 위젯 패키지라고합니다 그리고 거기에, 우리는 라운드 친화적 인 UI를 구현하는 데 중점을두고 싶습니다 공간 효율적인 상호 작용 패턴을 제공합니다 따라서 우리는 개발자들이 직면 한 두 가지 주요 이슈를 목표로 삼고 있습니다

물건을 만드는 UI가 있었다 안드로이드에서 처음으로 라운드 스크린을 위해, 정말 작은 화면을위한 건물이기도합니다 아주 작은 화면 재산 그런 조건에서 좋은 UI를 만드는 것은 쉽지 않습니다 그래서 그것이 바로 우리가 먼저 집중하고있는 것들입니다

다음은 개선 된 방법에 대한 좋은 예입니다 전형적인 안드로이드 목록 당신은 이전에 안드로이드에서 아주 똑똑한 목록을 가지고있었습니다 모든 요소가 하나씩 차례로 나옵니다 맨 처음부터

우리가 여기 입은 것은 우리는 시계의 둥근 요인을 이용했습니다 커브를 따르기 위해이 목록을 채택했습니다 그리고 이것은 더 많은 정보를 제공한다는 것을 의미합니다 화면에 그냥 똑바로 목록으로 할 수보다 다음은 가장 친숙하고 친숙한 UI입니다

실행기가 있습니다 날짜 / 시간 선택기가 있습니다 새 주머니에 최근에 출시 된 – 새로운 책상 시계 앱 그런 다음 LifeSum을 얻었습니다 은 타사 앱의 좋은 예입니다

친숙한 UI를 제공합니다 그래서이 모든 것들은 화면의 곡률을 이용합니다 모두 UI에 더 많은 정보를 넣을 수 있습니다 그리고 일반적으로 사용하기에 더 즐겁습니다 그래서 이들은 우리가 원하는 종류의 UI입니다

당신은 미래에 건설 할 것입니다 또한 지원을 통해 이러한 UI를 구축 할 수 있도록 돕고 자합니다 도서관 그래서웨어 위젯 모듈을 만들 때 – UI 구성 요소 – 우리는 UI에 대해 생각하고있었습니다 일반적으로, 구성 요소의 관점에서 – 안드로이드 지원과 아주 흡사하게, 안드로이드 프레임 워크와 매우 유사합니다

도서관 따라서이 모듈을 통해 우리는 두 배로 늘리고 싶습니다 더 쉽게 만들 수있는 빌딩 블록 모음 개발자가 UI를 구성 할 수 있습니다 Android Wear에서 직관적이고 모국어 인 느낌을줍니다 유연하게 구축 할 수 있습니다

성격을 표현할 정도로 충분합니다 및 귀하의 응용 프로그램의 성격 그래서 우리는보기와 같은 작은 빌딩 블록을 모두 탐험하고 있습니다 이미지 뷰 또는 텍스트 뷰 우리는 또한 더 큰 것들을 탐구하고 있습니다

WearableRecyclerView 또는 SwipeDismissFrame 레이아웃과 같습니다 그리고이를 컴포넌트, 구체적으로 컴포넌트라고 부릅니다 그리고 이러한 구성 요소 – 이러한 더 큰 데이터 – 함께 UI를 구성하십시오 따라서 개발자가 될 수있는 곳입니다 우리 구성 요소와 견해를 재사용 할 것입니다

자신의 앱을 만들 수 있습니다 이러한 뷰와 레이아웃 중 일부는 이미 Android에 있으며, 일부는 구체적으로 구현해야합니다 마모 그것들은 우리가 원하는 것들입니다 위젯 UI 라이브러리의 마모 모듈에 넣으려고합니다

여기 시각화가 있습니다 UI에 대한 우리의 생각 재사용이 가능한 빌딩 블록입니다 맞춤식 또는 특수 케이스 인터페이스 바라건대, 그건 당신에게 큰 소식이 아니에요

그러나 나는 그것을 아주 명백하게하고 싶었다 이것이 우리가이 새로운 도서관으로 갈 것이라는 것입니다 다시 한번,이를 염두에두고 우리가 당신을 가능하게 할 수 있기를 바랍니다 좋은 인터페이스 – 기능적 인터페이스, 매우 부유 한 사람들 – Android Wear를 기본으로하지만 느낄 수있는 앱의 성격 그래서 이것은 꽤 긴 프로젝트입니다

마모 모듈의 전체 구성 시간이 좀 걸릴거야 그래서 나는 지금 내 남은 시간을 보내고 싶다 우리가 어디에서 일어날 지에 대해 조금 이야기하기 그리고 그것에 대한 타임 라인은 무엇입니까? 단계별로 그래서 우리는 기존의 모든 마모 UI 요소를 나누었습니다

크게 세 가지 범주로 나뉩니다 이미 마모 된 부품을 이전 할 것입니다 새로운 마모 모듈에 특정한 마모 특성을 가지고 있습니다 병합 할 일부 구성 요소 그것들은 유용한 구성 요소입니다

웨어러블 기기뿐만 아니라 핸드 헬드 기기에도 적합합니다 그래서 그들은 휴대폰에서 재사용 될 수 있습니다 그들이 착용 할 수있는 공간에서만 살 필요는 없습니다 그래서 우리는 그들을 프레임 워크로 졸업하거나 병합 할 것입니다 또는 다른 핸드 헬드 또는 일반 지원 모듈로 전송할 수 있습니다

그런 다음 마지막 그룹이 구성 요소입니다 우리는 더 이상 사용하지 않을 것입니다 그것들은 주로 입증되지 않은 모든 디자인 패턴과 관련 우리의 사용자들과 성공적이었습니다 그리고 저는 그것에 대해 조금 더 이야기 할 것입니다 그래서, 우선, 그 구성 요소에 대해 이야기하고 싶습니다

마이그레이션 할 것입니다 나는 그들에게 스포트라이트를주고 싶다 그것들이 가장 중요한 것들입니다 그들은 Support와 함께 시작하는 것들입니다 라이브러리 26

00-beta1 이것이 WearableRecyclerView입니다 우리가 사용한 멋진 곡목 목록을 제공합니다 실행기를 빌드하십시오

그리고 나서 우리는 BoxInsetLayout, 모든 UI를 화면에 맞출 수 있습니다 스크린 중앙 중앙 사각형에 기본적으로 정사각형 사이의 UI를 재사용 할 수 있습니다 그리고 둥근 시계 그런 다음이 SwipeDismissFrameLayout을 얻었습니다 꽤 흥미로운 사건이다

디자인 패턴을 캡슐화했기 때문에 당신이 사용하기를 원합니다 따라서이 패턴은 뒤로 버튼을 대체합니다 핸드 헬드 장치에 착용시, 뒤로 몸짓으로 단추를 사용하지 않습니다 우리는 당신이 당신의 견해를 쓸어 버리기를 바랍니다

그것은 개발자들의 구체적인 요청이었습니다 개발자 프리뷰 프로그램 기간 동안, 우리는이 구성 요소를 사용할 수있게 만들고 있습니다 웨어러블 지원 모듈에서 다음 그룹은 – 오, 죄송합니다 – 코드면에서 보면, 정말 간단한 짧은 슬라이드 여야합니다 WearableRecyclerView의 예제에서, 이 코드를 코드로 가져 오는 방법입니다

그리고 이것이 onCreate 메소드에서 사용하는 방법입니다 및 예를 들어, 활동 그래서 새로운 모듈로 이전 할 때, 우리가 할 수있는 변화가 거의 없다 코드 측면에서 당신에게 필요합니다 다행히도, 매우 간단하고 구현하기 쉽습니다

먼저 패키지 이름을 supportwidget–로 변경합니다 지원 라이브러리에서이 새로운 UI 마모 모듈을 구별 할 수 있습니다 그리고 두 번째로 우리가 소개 할 것입니다 API를 최소한으로 수정하여 기존 Android API 및 지원과 일치합니다

라이브러리 API 이것들은 더 나은 API이며, 잘하면, 일반적으로 코드가 더 건강합니다 앱을 매우 쉽게 업데이트 할 수 있습니다 정말로 큰 문제는 아닙니다 리모 커, 알았어

그래서 몇몇 수업들 우리가 합병하는 것들은 착용에만 적용됩니다 우리가 말했듯이, 내가 말했듯이, 병합한다 주요 프레임 워크 또는 다른 지원 라이브러리 모듈 그래서 여기에 우리는 대부분 아이콘으로 둥근 것들을 호출했습니다 때로는 내부

그들 중 많은 수가 있습니다 그들 모두는 똑같이 보입니다 거기에 별도의 UI 구성 요소가 필요하지 않습니다 별도의 종류의 레이아웃 조각 당신이 사용해야 할 또한 이미 원 이미지보기가 있습니다 핸드 헬드 용 지원 라이브러리

그래서 우리는 모든 추가 API를 사용할 것입니다 우리가 만든 것을 하나의 구성 요소에 병합합니다 그래서 정말로 강하고 단 하나의 종류 만 존재합니다 당신이 사용할 구성 요소 그리고 세 번째 그룹은 여기 있습니다

이 대화 예에 관해 이야기 해보십시오 행 아웃은 우리가 사용하지 않는 레이아웃 그룹입니다 그래서 그것들은 관련된 레이아웃입니다 성공을 입증하지 못한 사용자 패턴이 있음을 입증하지 못했습니다 우리 사용자들에게 인기가 있습니다

여기에서 우리는 2 차원 공간 모델을 취하고 있습니다 수직 또는 수평으로 이동할 수있는 곳 앱 또는 시스템 UI에서 선형 레이아웃으로 변형시키고 있습니다 여기서 수직으로, 다음과 같이 재료 디자인 원칙 그래서 관련된 모든 클래스들 그 2 차원 공간 모델은 더 이상 사용되지 않을 것입니다 이것이 바로 GridViewPager입니다

그것은 다른 액션 버튼, 액션 레이아웃, 그런 것들 그래서 이것은 당신의 의존성을 줄여 줄 것입니다 거의 모든 것을 포함합니다 우리가 2017 년에 할거야 그리고 여기에 나는 방금 이야기하고있다

오늘, 우리는 발표하고 시작합니다 처음 세 가지 핵심 구성 요소가있는 마모 모듈 다시 시작합니다 Android 지원 라이브러리 260

0-beta1 그 프로그램이 베타에서 졸업하면 오 런칭과 함께 – 우리는 현재 위치에있는 오래된 API를 더 이상 사용하지 않을 것이며, 그리고 나서 우리는 정말로 사람들을 격려 할 것입니다 새 API로 이동하십시오 그런 다음 정기적으로 버그를 수정합니다 마모 모듈의 업데이트 및 릴리스 안드로이드 지원 라이브러리

그리고 얼마 후, 2018 년 중반을 말하면서, 내년 중반, 우리는 시작할 것입니다 이전 API를 제거하여 우리가 다시 슬림화되도록 우리가 사람들에게 사용하기를 원하는 것들에 대한 의존성 그래서 나로부터 온 것입니다 그것으로, 나는 넘겨 줄거야 합병증에 대해 이야기하기 위해 올리에게

고마워, 애가 거기에 몇 가지 중요한 변화가 있습니다 [박수 갈채] 그래서 저는 우리가 추가하고있는 새로운 것들에 대해서 이야기 할 것입니다 시계 얼굴 개발자 용 그리고 이것이 시계 얼굴을 만드는 사람에게는 큰 승리이기 때문에 – 네, 공중에서 뛰어 내리는 또 다른 이유입니다

일몰의 보다 개인화 된 유용한 시계 모드 Wear 20의 핵심 부분입니다 이것이 지난 해 I / O에서 우리가 여기있는 이유입니다 Android Wear 용 Complications API를 선보였습니다

전통적인 시계 제작과 마찬가지로 착용시, 합병증은 시계면에 데이터를 표시하는 것입니다 그래서 이들은 모두 합병증의 예입니다 Complications API를 사용하는 앱은 데이터 제공 업체, 또는 시계 얼굴 일 수 있습니다 Android Wear는 둘 사이의 데이터 흐름을 관리합니다 따라서 API를 사용하여 얼굴을 볼 수 있습니다

임의의 데이터 제공 업체를 표시하도록 구성 설치되어 있습니다 이렇게하면 사용자가 정보를 입력 할 수 있습니다 한눈에 신경 쓰지 마라 그리고 데이터 공급자를 만드는 경우, 앱의 데이터를 모든 시계 모드에 적용 할 수 있습니다 이러한 모든 앱에는 이미 데이터 제공 업체가 포함되어 있습니다

합병증 Strava와 같은 피트니스 앱이 있습니다 Robinhood와 같은 금융 애플리케이션이 있습니다 AccuWeather와 같은 날씨 앱과 다른 앱이 많이 있습니다 따라서 시계 모드에 합병증 지원을 추가하는 경우 당신이 만들고있는 사용자는 이러한 앱 중 하나를 선택할 수 있습니다

기본 제공 업체뿐 아니라 설치된 경우 세계 시계, 다음 이벤트 및 배터리 수명과 같은 기능을 추가하는 것과 같습니다 모든 앱에서 그들에 대해 알기 많은 시계 얼굴에는 이미 합병증 지원이 추가되었습니다 Ultimate Watch 2– 독과 같은 더 추상적 인 스타일 및 슈퍼 커스터마이즈 가능한 스타일 Pujie Black처럼 그리고 약간 다른 것들이 있습니다

이동 중에는 [INAUDIBLE] [? 기분?] 컬렉션 – 외부의 고리는 복잡합니다 여기에 배터리 수명이 표시됩니다 그러나 그것은 또한 당신의 피트니스 진행 상황을 보여줄 수 있습니다 Mesh Turbine HD는 스포크에서의 합병증을 보여 주며, 화면 중앙에서 나오는 스크롤 텍스트 효과 그리고 Fit Cat에는 고양이가 있습니다

그러나 그것은 또한 자신의 스타일로 API 그래서 다양한 스타일이 있습니다 Android Wear의 시계 모드 이것이 API가 시계 모드를 완벽하게 제어 할 수있게하는 이유입니다 그들이 데이터를 그리는 방법에 대해 – 합병증이 완벽하게 맞는지 확인 새로운 흥미로운 표현 방법을 허용하는 것 정보 그러나 이러한 자유로 인해 합병증을 추가하기가 어려울 수 있습니다

시계 모드를 지원합니다 시계 모드를 만들면 액세스 할 수 없습니다 레이아웃 또는보기로 이동합니다 캔버스에 직접 그립니다 그리고 설정 UI를 직접 만들어야합니다

오늘, 우리는 이것을 쉽게하기 위해 몇 가지를 소개합니다 모든 종류의 텍스트를 그리는 데 도움이되는 TextRenderer가 있습니다 캔버스에 ComplicationDrawable은 완벽한 렌더링 솔루션입니다 합병증

새로운 설정 샘플은 사용자가 쉽게 구성 할 수 있도록하는 방법을 보여줍니다 합병증 및 스타일 또한 테스트 스위트 공급자를 사용하면 합병증이 올바르게 표시되는지 확인하십시오 첫 번째는 TextRenderer이고, 이것이 웨어러블 지원에 있음을 알았을 수도 있습니다 몇 달 동안

TextRenderer는 텍스트를 캔버스에 쉽게 그리게합니다 그리고 그것은 중요합니다 가장 유용한 합병증 유형들 짧은 텍스트 유형, 긴 텍스트 유형 및 범위 값 유형이 있습니다 짧은 텍스트 및 범위 값 유형의 문자열 짧은 것입니다 최대 글자 수는 최대 7 자 여야합니다

긴 텍스트에서와 같이 문자열은 길이가 될 수 있지만, 텍스트를 렌더링하는 데 어려움이 있습니다 두 경우 모두 여기 간단한 텍스트 예제가 있습니다 이 문자열은 7 자이며, 이 글꼴 크기에 잘 맞습니다 그러나이 문자열 역시 7 자입니다

그래서 이들 모두를 다루고 그것들을 적합하게 만들기 위해, 그리기 및 조정하기 전에 텍스트를 측정해야합니다 그에 따라 글꼴 크기 다음은 긴 텍스트 예제입니다 짧은 끈은 세로 중심에 잘 어울립니다 그러나 텍스트는 길이가 될 수 있으므로 쉽게 할 수 있습니다

상자 밖으로 흐른다 정적 레이아웃과 같은 것을 사용할 수 있습니다 이걸 도와 줘 하지만 중계하지 않도록 조심해야합니다 모든 프레임의 텍스트

TextRenderer를 사용하여 범위를 지정합니다 텍스트를 넣기를 원합니다 7 개의 문자가 맞지 않으면 때까지 글꼴을 축소합니다 더 긴 텍스트는 여러 줄로 흘러 갈 수 있습니다 끝에 줄임표가 붙습니다

이제 코드를 살펴 보겠습니다 따라서 시계 모드를 초기화 할 때, 이 단순한 생성자를 사용해 TextRenderer를 작성해, TextPaint를 전달하면됩니다 TextPaint는 글꼴, 텍스트 크기, 색깔 – 그런 것들 이제 TextRenderer는 레이아웃과 같은 것을 캐시하기 때문에, 각 필드에 대해 하나를 만들어야합니다 여기에 본문이 있습니다

우리는 또한 제목을 가지고 있습니다 필드간에 TextRenderer를 공유하지 마십시오 이제 그리기를 원할 때 렌더러에 텍스트를 설정합니다 그래서 당신은 setText를 호출합니다 그리고 텍스트를 얻기 위해 getText를 호출합니다

지금 이것은 현재 시간을 필요로합니다 당신이 그릴 때마다 이것을하는 것 TextRenderer를 사용하든 사용하지 않든 상관 없습니다 그리고 그것은 몇 가지 합병증 때문에 시간에 의존한다 그래서 세계 시계 합병증을 상상해보십시오, 텍스트가 바뀌고, 시간에 따라

텍스트를 설정하면 범위를 그립니다 당신이 지정합니다 이제 텍스트와 경계를 전달하는 것이 좋습니다 TextRenderer는 텍스트를 놓기 때문에 항상 이렇게 무언가가 바뀌면 다시 밖으로 나가십시오 그것은 때때로 당신이 TextRenderer에 변경이 있음을 알릴 필요가 있습니다

페인트의 텍스트 크기를 변경하는 경우와 같이 발생했습니다 그리고 그것은 페인트가 다른 대상이기 때문입니다 TextRenderer에서 가져옵니다 자, 텍스트를 더 크게 만드는 코드가 있다고 상상해 봅시다 무언가가 일어날 때

이 경우 requestUpdateLayout을 호출해야합니다 TextRenderer에서 조정할 수 있도록합니다 이제 TextRenderer가 할 수있는 또 하나의 기능 항상 렌더링을 조정합니다 화면에서는 대기 모드에 대해서도 마찬가지입니다 이 모드에서는 많은 시계 모드가 흑백입니다

색 이모티콘과 같은 것들을 원하지 않을 수도 있습니다 TextRenderer에 알려야합니다 장치가 주변 모드로 들어갔 기 때문에, InAmbientMode 시계 모드에서 변경하면 inAmbientMode Boolean을 TextRenderer에 전달하십시오 TextRenderer입니다 텍스트를 렌더링 할 때마다 사용하는 것이 좋습니다

직접 캔버스에 그러나 만약 당신이 텍스트를 원한다면 그러나 전체적인 복잡성이 그려져있다 표준 방식으로 당신을 위해? 그것이 바로 새로운 ComplicationDrawable이 나오는 곳입니다 ComplicationDrawable은 모든 것을 렌더링 할 수 있습니다 6 가지 주요 합병증 유형 중 그리고 그것은 당신을 위해 모든 레이아웃과 스타일링을 처리합니다

예를 들어, 짧은 텍스트를 렌더링하려면해야 할 일이 있습니다 이 같은 합병증 CompletionDrawable이 없으면, 데이터가 도착하면 이미지를 디코딩해야합니다 포함되어 있습니다 또한 이미지를 캐시해야합니다

두 번 이상 해독하지 않으려는 경우 이제 그릴 때마다, 먼저, 당신은 해당 데이터가 활성 상태인지 확인해야합니다 그리고 그것은 몇몇 합병증 데이터 특정 시간 프레임 내에서만 관련이 있습니다 예를 들어, 다음 회의를위한 것이라면, 회의가 끝난 후 그것을 보여주고 싶지 않습니다 그리기 위해서, 우리는 배경을 그립니다 이미지를 그리고 텍스트를 그립니다

아마도 TextRenderer를 사용하고있을 것입니다 ComplicationDrawable을 사용하면 훨씬 간단합니다 데이터가 도착하면 드로어 블에 전달합니다 setComplicationData를 호출하여 그리고 모든 프레임에서 draw를 호출합니다

그것은 drawable입니다 이제 TextRenderer와 마찬가지로 다른 drawable과 마찬가지로, ComplicationDrawable은 범위 내에서 그립니다 그리고 레이아웃은 범위 모양에 맞게 조정됩니다 그래서 여기 당신은 사각 경계 내에서, 순환 합병증이 생깁니다 반대로 넓은 범위는 알약 모양을 나타냅니다

아이콘의 위치가 두 경우 모두 다르다 스타일 매개 변수를 설정하지 않으면, 기본보기를 얻을 수 있지만 배경색과 같이 설정할 수있는 많은 것들 – 코너 반경, 뭔가 더 갖고 싶다면 광장과 원처럼 테두리를 변경하거나 테두리를 전혀 사용할 수 없습니다 색상을 변경할 수 있으며 서체를 변경할 수 있습니다 CompleicationDrawable을 만들 수 있습니다

간단한 생성자를 사용하여 프로그래밍 방식으로 프로그래밍 할 수 있습니다 그런 다음 활성 모드에 대한 스타일 옵션을 설정할 수 있습니다 주변 모드 용 그러나 당신이 설정하기 위해 많은 스타일링을 가지고 있다면, 대신 XML을 사용하는 것이 더 쉬울 수도 있습니다 이 작업을 수행하려면 API 레벨 24를 사용해야합니다 그러나 당신이 그것을하는 한, 이제 드로어 블을 표준 방식으로 팽창시킬 수 있습니다

이제 렌더링 할 컨텍스트가 필요합니다 그래서 우리에게도 그걸 drawable에 전달해야합니다 그리고 그렇게하면 XML이됩니다 이런 식으로 보일 수도 있습니다 따라서 최상위 수준의 속성이 적용됩니다

주변 및 활성 모드 모두 – 주변 모드에서 오버라이드되지 않는 한 주변 구역의 속성에 따라 드로어 블에 전달해야 할 몇 가지 사항이 있습니다 앞서 언급했듯이 물론, 당신은, 그것을 합병증 데이터를 제공해야합니다 따라서 onComplicationDataupdate에서 시계 모드의 경우 데이터를 수신하는 곳입니다 그 데이터를 드로어 블에 전달하십시오 당신은 또한 합병증 드로어 블을 말할 필요가 있습니다

장치가 주변 모드로 들어가고 나갈 때 그 이유는 drawable handle 당신을위한 스타일의 변화 따라서 setInAmbientMode를 호출하면됩니다 그것이 바뀔 때마다 그리고 드로어 블에게 화면의 특정 속성이있는 경우 따라서 LOW_BIT_AMBIENT 모드를 사용하는 경우, 또는 BURN_IN_PROTECTION이있는 경우 드로어 블에 다음과 같이 말합니다 이러한 속성에 대한 렌더링을 적용 할 수 있습니다

그리기 위해, 지금 처음이라면, 또는 뭔가가 변경된 경우 경계를 설정해야합니다 그래서 경계를 설정하면 setBounds 복잡성 드로어 블에 이제 여기에 전달하는 범위 시계면 경계에 비례하여 정의되어야합니다 따라서 화면 너비의 4 분의 1에 위치한다고 말할 수 있습니다 건너서

고정 된 치수를 사용하지 마십시오 시계의 크기가 매우 다양하기 때문에, 그래서 절대적인 방법으로 물건을 정의하고 싶지는 않습니다 그럼 너는 필요할거야 ComplicationDrawable에 이 방법에도 시간이 걸리므로 최신의 정확한 값을 얻을 수 있습니다

이것이 바로 ComplicationDrawable에 있습니다 그래서 실제로 합병증을 추가하는 것이 훨씬 쉬워졌습니다 시계 모드를 지원합니다 이제는 ComplicationDrawable이 가장 큰 추가 기능입니다 착용 할 수있는 지원

그러나 다음 두 가지를 샘플로 사용할 수 있습니다 시계의 요구에 맞게 조정할 수 있습니다 얼굴 첫 번째 설정입니다 합병증이있는 시계 모드 구성 방법을 포함해야합니다

일반적으로 시계 모드 설정에 있습니다 그러나 복잡한 UI를 설정 UI에 묻어두면, 사용자에게 불편할 수 있습니다 주변 상황을 바꾸고 싶다 LG Watch 스타일 및 지원의 경우, 우리는 파트너들과 함께 일했습니다 사용자가 합병증을 설정하기위한 비주얼 인터페이스 또한 다른 설정에 빠르게 액세스 할 수 있습니다

그래서 여기에 어떻게 설정되어 있습니다 맨 위에는 시계의 이미지가 있습니다 얼굴이 명확하게 표시된 합병증 슬롯 이를 통해 사용자는 어디에 있는지 알 수 있습니다 데이터가 나타납니다

공급자 아이콘은 현재 무엇이 있는지 보여줍니다 각 슬롯에서 선택됩니다 아래에서 아래로 스크롤하면 다른 모든 설정을 참조하십시오 이제 배경 이미지가 특별한 경우입니다 기술적으로, 그것은 합병증입니다

큰 이미지 유형을 사용합니다 그러나 연구 결과에 따르면 사용자는이 점을 더 잘 이해하고 있습니다 별도의 항목으로 그래서 이것은 시계 부분에 보이는 것과 같습니다 그리고 이제 그것을 실제로 보자

따라서 사용자는 해당 슬롯 중 하나를 탭하기 만하면됩니다 상단에 그것은 합병증 공급자 선택기를 엽니 다 각 슬롯에서 원하는 것을 신속하게 선택할 수 있습니다 목록을 작성하는 것보다 훨씬 쉽습니다

왼쪽 슬롯, 오른쪽 슬롯, 위쪽 슬롯 등이 있습니다 실제 시계 모드에서이 기능을 사용하려는 경우, ustwo look 또는 Moods Collections 다운로드 Wear 20을 실행하는 모든 시계에서 이러한 시계 모드는 모두이 UI를 사용합니다 이제 업데이트 된 UI에서 구현 된 UI를 확인할 수 있습니다

시계 얼굴 샘플 AnalogComplicati onWatchFaceService를 확인하십시오 샘플에서 새로운 내용으로 업데이트되었습니다 우리가 오늘 소개하고있는 것이기 때문에 지금은 ComplicationDrawable을 사용합니다

구성 UI는 AnalogComplicati입니다 onConfigActivity 그리고 UI에 표시되는 항목 AnalogComplicationConfigData에 정의되어 있습니다 복잡 그 수업을 잠깐 살펴 보겠습니다 그래서 여기에서이 방법을 찾을 수 있습니다

데이터를 가져 와서 어댑터를 채 웁니다 그리고 설정 항목 목록을 반환합니다 따라서 설정 목록의 항목을 정의합니다 따라서 최상위 항목은 아마도 PreviewAndCompli가 될 것입니다 cationConfigItem

슬롯이있는 시계면의 모습입니다 그런 다음 배경 옵션을 사용할 수 있습니다 우리는 더 많은 옵션을 가지고 돌아올 수 있습니다 실제 샘플에는 이것보다 몇 가지 세부 사항이 있습니다 이것이 설정입니다

이제 합병증 지원을 추가했다고 가정 해 봅시다 당신의 시계 얼굴에 모든 것이 작동하는지 어떻게 확인할 수 있습니까? 대부분의 합병증 유형에는 처리해야하는 필드의 여러 조합입니다 예를 들어 시계 모드가 짧은 텍스트를 지원하는 경우 텍스트가있는 아이콘의 형태 일 수있는 합병증, 또는 텍스트 일 ​​수도 있고 또 다른 텍스트 일 ​​수도 있습니다 또는 단 하나의 텍스트 조각

테스트 스위트 제공 업체는 쉽게 확인할 수있게 해줍니다 모든 조합은 시계 모드에서 잘 어울립니다 따라서 테스트 스위트를 설치할 때, 데이터 제공 업체 목록에 표시됩니다 그리고 당신이 그것을 선택할 때, 당신은 선택할 수있을 것입니다 검사 할 합병증 유형

짧은 텍스트를 선택한다고합시다 시계 모드에 표시되는 방법은 다음과 같습니다 그리고 나서 당신이해야 할 일은 합병증을 두드리는 것입니다 다른 조합을 통해 순환합니다 그래서 이들 모두는 짧은 텍스트 합병증입니다

시계 모드가 짧은 텍스트를 지원하는 경우, 이 모든 것을 올바르게 렌더링해야합니다 이것은 긴 텍스트 예제이고, 긴 텍스트의 경우, 더 많은 조합이 있습니다 따라서이 기능을 사용하면 정말 유용합니다 모든 것이 제대로 작동하는지 확인하십시오 텍스트 및 제목, 텍스트 및 제목 만있는 아이콘, 또는 이미지도 포함됩니다

우리는 GitHub에서 테스트 스위트 제공 업체 오픈 소스를 공개하고 있습니다 어떻게 작동하는지 알 수 있도록 원하는 경우 자신 만의 테스트 케이스를 추가 할 수 있습니다 시계 모드가 아닌 데이터 제공 업체를 구축하는 경우, 너도 이것 좀 봐 왜냐하면 그것은 각각에 대한 제공자의 좋은 예이기 때문입니다 다른 합병증 유형 중 그게 전부입니다

그래서이 네 가지 도구는 시계에 복잡성 지원을 훨씬 간단하고 쉽게 추가 할 수 있습니다 얼굴 그들을 보내주십시오 여기 I / O에서 시험해 볼 코드 연구소가 있습니다 또는 dev 사이트에서 샘플을 확인할 수 있습니다

또는 Android Studio를 통해 또는 웨어러블 지원의 새 버전을 사용할 수도 있습니다 바로 시계 앞에서 직접 시도해보십시오 그리고 당신이 생각하는 것을 저희에게 알려주십시오 [박수 갈채] 그래서 이것은 우리의 존재를 요약 한 마지막 슬라이드입니다 – Google I / O 2017의 Android Wear Presence 어제의 이야기를 9:30 AM에 보지 못했다면, 그것은 기록됩니다 플랫폼이 어떻게 작동하는지에 대한 일반적인 개요였습니다

그리고 올해 플랫폼에 새로 추가 된 것들 그리고 오늘의 강연도 녹음됩니다 I / O가 끝나면 다시 돌아올 수 있습니다 고맙습니다