Google I/O 2014 – Material science: Developing Android applications with material design

CHET HAASE : 안녕하세요, Material Science에 오신 것을 환영합니다 아니, 아니, 아니, 아니

다시 해봅시다 Android 개발자를위한 자료 디자인 이 세션의 요점은 다음과 같습니다 기술적 세부 사항 중 일부에 들어가기 실제로 그것이 무엇인지에 대한 개요 엔지니어의 관점처럼 보입니다 이번 주에는 많은 디자인 세션이 있습니다

이 세션 바로 전에 하나를 포함하여 그들은 재료 디자인의 아이디어에 대해 이야기합니다 우리가하고 싶었던 것은 이는 우리가 노출하고있는 실제 API의 관점에서 의미합니다 또는 Android 개발자로서이 제품에 연결하는 곳 재료 디자인 응용 프로그램을 만들 수 있습니다 그 일을하고 싶다면 해시 태그가 있습니다 피드백 URL이 있습니다

절대적으로 충격적이고 빛나는 의견이있는 경우 세션에 대해 언제든지 저에게 가십시오 우리가 어떻게 생겼는지 알고 싶다면, 당신은 실제로 무대를 바라 볼 수 있습니다 또는 우리의 그림이 Chet Haase입니다 ADAM POWELL : 저는 Adam Powell입니다 CHET HAASE : 둘 다 Android UI Toolkit 팀에 있습니다

이것은 기본적으로 UI Toolkit 위젯을 처리하는 팀입니다 애니메이션으로 렌더링하는 그래픽을 통해 그것들을 움직이고 GPU에서 침을 뱉는 실제로 모든 하드웨어 가속 명령 가능한 빨리 화면에 표시하십시오 그것이 팀이하는 일입니다 우리가 물질을 위해 구현해야하는 모든 것들 디자인 또한 정말로 빠르게 실행해야합니다 같은 팀이 다음과 같은 기능을 처리하기 때문에 흥미로운 거래 인 성과 측면으로 떨어져서

ADAM POWELL : 첫 번째 질문입니다 네가 물어볼 수도있는 이유는, 왜? 그래서 우리는 이미 기조 연설을 보았습니다 우리는 많은 화려한 효과를 봅니다 우리는 고집 센 디자인을 본다 성능 문제가 있습니다

그리고 UI를 실제로 팽창시키는 방법을 발견합니다 그래서 우리는 실제로 가지고 싶지 않습니다 그 부정적인 견해 우리는 이것이 무엇인지 확인하기를 원합니다 이는 사용자에게 중요한 문제입니다

그리고 모든 소재 디자인에서 하나의 큰 테이크 아웃이 있다면 하루 종일 보게 될 자료 아마 L 릴리스까지 여기 모두가 자신의 앱을 준비하기 시작하면서, 그 모션 문제입니다 무브먼트는 사용자에게 무엇이 할 수 있는지 가르쳐 줄 수 있습니다 그리고 그것이 어디에서 왔는지 UI에서 본 적이 있다면 아무데도 튀어 나와 뭔가 손가락 아래에서 밖으로 사라집니다 그것은 정말 초조 한 경험입니다

따라서 모션을 사용하여 우리는 계속해서 사용자를 가르 칠 수 있습니다 시스템이 어떻게 행동하고 무엇을 하는가? 그 시스템에서 기대할 수 있습니다 그래서 이것은 단서입니다 우리는 감동되고 움직일 수있는 것에 대해 단서를 줄 수 있습니다 실체처럼 보이게 만듭니다

이것은 카드가 실제로 우리에게주는 것들 중 하나입니다 그리고 이런 종류의 가상 객체들 몰핑하고 움직일 수없는 실제 객체를 시뮬레이트하고, 그 실체를 여전히 암시 할 수 있습니다 이것들은 당신의 카드, 종이 및 잉크입니다 지금까지 비디오에서 본 모든 것들 따라서 테이크 어웨이는 모션 플러스 유형 성이 동일합니다

사용자에게 더 이해하기 쉬운 UI 나는 너에게 줄 것을 원했어 이 석방과이 과정에 대한 간단한 정신 모델 실제로 재료 디자인을 구현하는 것은 나에게 달렸다 사실, 우리 팀 안에서이 일을하는 것은, 물건 가져 오기, 실제로 픽셀 디자인을 나타내는 화면에 나타납니다 프로세스는 기본적으로 아이디어를 취합니다 그 UX는 – 디자인 팀이 – 어디에서 그들은이 위대한 아이디어이고 패러다임이 있습니다

시스템이 있고 언어가 있습니다 그리고 그들이 생각해내는 멋진 것들이 모두 있습니다 실제로 기술 세부 정보로 변환합니다 엔지니어가 실제로 사용하는 기능 제공 할 응용 프로그램을 작성해야합니다 그래서 제가 사진을 찍는 방법은 – 그래서 우리는이 거대한 디자인 팀을 가졌습니다

그래서 우리는 위대한 예술가들에게 접근 할 수 있습니다 우리는 그들에게 이것을 나타내는 예술을 생각해 낼 것을 요청할 수 있습니다 아니면 실제로 직접 그릴 수 있습니다 이것은 분명히 그의 손을 맹렬히 흔들고있는 예술가이다 아름다운 무지개와 멋진 것들이 떠오른다

아티스트라고 말할 수 있습니다 베레모는 그 또는 그들의 프랑스어 중 하나를 포함 그래서 우리는 디자인 아이디어를 취합니다 그들은 공중에 떠있었습니다 엔지니어가 방에 들어가있을 때 매우 모호합니다

그들의 얼굴에 정말 당혹 스럽네요 이 모든 것이 무엇인지 궁금합니다 그들이 응용의 맥락에서 언어를 말할 때 그것은 말이되지 않습니다 그럼– ADAM POWELL : 자바라는 뜻인가요? 나는 그렇게 생각한다 자바 프로그래밍 언어라고 생각합니다

우리는 이것 이후에 미국 팀과 대화를하고 그걸 털어 놓을 것입니다 그러나 실제로 아이디어는 구체적인 요소를 취하는 것입니다 그들이 실제로 무엇을 계산하는지 그들이 떠 다니는 것에 대해 이야기 할 때 손을 흔드는 것을 의미합니다 그들이 잉크와 종이에 대해 말할 때 액션 버튼 실제로 그것을 특정 요소들로 번역한다 플랫폼에 필요한 기능을 제공하기 위해 필요한 플랫폼입니다

내가 생각하는 방식은 나는 생각한다 그것은 Nyquist Sampling 정리와 같습니다

커브를 샘플링 할 수있는 빈도 그러면 원래 곡선을 재구성 할 수 있습니다 그리고 나는 기술적 세부 사항에 들어 가지 않을 것이다 나는 그들을 이해하지 못하기 때문에 그러나 여기 같은 생각입니다 UX가이 아름답고 공간적인 곡선을 만들면 디자인 언어와 그들이 올 계획의 패턴을 그리고 당신이하고 싶은 것은 실제로 사용할 수있는 충분한 기능 그들이 어려움을 겪었음에도 불구하고 원하는 것을 얻으십시오

당신이 필요로하는 바삭 바삭한 요소의 관점에서 그래서 우리가 툴킷 팀에서 한 일 그것을 기능과 기능으로 변환하는 것이 었습니다 우리는 이러한 능력을 폭로해야했습니다 그리고 이것은 특징으로 끓었습니다 우리는 앞으로 몇 분 안에 얘기 할 것입니다

우리는 실시간 그림자를 할 수 있습니다 공유 영웅 요소를 사용한 활동 전환이 있습니다 우리는 순환적인 계시를 가지고 있습니다 디자인 회담에서 그 중 일부를 보았습니다 플로팅 액션 버튼은 더 큰 형태의 내용으로 드러납니다

우리는 더욱 생생하고 풍부한 목록을위한 RecyclerView 위젯을 가지고 있습니다 기능, 터치 피드백 UI에서 진행중인 작업에 대한 지속적인 피드백 그들이 그것과 상호 작용할 때 그리고 나서 우리는 항상 성능에 대해 연구하고 있습니다 게다가 ADAM POWELL :이 모든 것에서, 실제로 소재 앱을 어떻게 작성합니까? 음, 첫 번째 단계는 무언가입니다

이미 서면으로 익숙한 Android 앱이 내 활동의 테마입니다 그래서 themematerial이 첫 번째 단계입니다 이것을 선택하십시오 그것으로부터 상속받습니다

다른 요소를 사용하고있는 맞춤 테마가 있습니다 그리고 한번보세요 이 간단한 스위치 플립으로 앱을 어떻게 보이나요? 그리고 여러분은 그것에 대한 몇 가지 문제점을 수정해야 할 것입니다 거의 모든 주요 앱은이 시점에서 중요하지 않습니다 둘 중 하나와 일치시키려는 많은 작업을 수행했습니다

속이 빈 테마 또는 사용자 정의 테마 그것은 과거에 구현되었습니다 그리고 업데이트해야 할 것입니다 당신이가는 그 개별 요소 따라서 디자인을 구현하고 구현하는 것이 좋습니다 지침

그래서 이것은 새로운 거래 방법이 될 것입니다 레이아웃 및 색상, 새 측정 항목, 새 측정 값, 그리드 사용 거기에서, 그것은 정말로 대부분 표준 안드로이드 프로그래밍입니다 당신은 많은 도구를 사용하게 될 것입니다 너는 이미 거기에 익숙해 져있다 지원할 새로운 API가 있습니다

화면상의 특정 요소의 동작 및 정렬 당신은 전통적으로 많은 통제력을 갖지 못했다 과거와 같은 일들 액션 바에 위치합니다 그리고 필요에 따라 지원 라이브러리를 사용할 수 있습니다 여러분 중 대부분은 이미 이것에 익숙합니다 우리는 DrawerLayouts, ViewPager, 개발자 인 모든 위젯 이 시점에서 알고 있고 사랑하십시오

우리는 더 많은 것을 추가하고 있습니다 우리는 RecyclerView를 가지고 있습니다 조금 더 얘기하자면, 기본적으로 마무리되는 카드보기 L의 새로운 기능 중 일부는 그리고 당신에게 특별한 사용을위한 멋진 가을을 돌려 준다 기존 플랫폼 버전의 경우 그러면 필요에 따라 진행할 수 있습니다

새로운 플랫폼을위한 독점적 인 L API를 사용하십시오 버전뿐만 아니라 이것은 최신 그래픽 API와 같은 것입니다 그림자 주변 및 클리핑,보기에 대한 고도 설정 그래서 그들은 우주로 튀어 나올 수 있습니다 터치 피드백 잉크 잔물결이 있습니다 지금까지 동영상에서 보았던 것입니다

아이콘과 다른 드로어 블이 있습니다 상태 변경 사항을 애니메이션으로 만들 수 있습니다 이미 국가를 누르고 초점을 맞추는 데 익숙하다면 국가 등등 애니메이션 전환을 정의 할 수 있습니다 그 주들 사이에 그리고 일반적인 애니메이션의 경우 우리는 시각적으로 드러납니다

우리는 애니메이션 커브를 다루는 새로운 방법을 가지고 있습니다 그리고 물론, 당신이 본 활동 전환 그래서이 시점에서, 여러분 대부분은, 호환성은 어떨까요? 아무도 타겟팅 할 수 없기 때문에 L 이상 이 때 일부 사용자가 있어야하는 경우 물건 배송 따라서 이전 릴리스의 앱에서는 app compat 테마를 사용하십시오

이미 익숙 할 수도 있습니다 지원에서 호환성 작업 표시 줄 사용에서 도서관 우리는 이것을 밖으로 확장 할 것입니다 L에서 재질 디자인 요소를 커버 할 수 있습니다 물론 새로운 지원 라이브러리를 사용하십시오

상관없이 위젯, RecyclerView, CardView, 그리고 당신이 알고 사랑하는 다른 것들 CHASE HAASE : 이제 새로운 API에 대해 이야기 해 보겠습니다 UI 툴킷에서 공개 한 기능을 제공합니다 Adam이 이야기하고있는 중요한 요점 중 하나 당신은 디자인의 많은 기능을 얻을 수 있습니까? 표준 Android를 통해 이미 API라는 의미의 프로그래밍 사용 – 표준 레이아웃 및 측정 물건, 표준 드로잉 물건 새로운 API를 추가했습니다

그들이 사용하는 이유의 대부분은 실제로 우리 내부 용입니다 따라서 우리는보기를 팝업 할 수있는 능력을 가지고 있습니다 뷰 계층 구조 평면 위에 표고를 둡니다 그러나 우리는 이것을 표준 위젯의 일부에 사용합니다 반드시 응용 프로그램에 사용할 필요는 없습니다

그러나 당신이 원한다면 그들은 당신의 사용을 위해 거기에 있습니다 그래서 그 중 하나는 실제로 위젯은 새로운 L API가 아닙니다 그것은 실제로 그것보다 좋습니다 새로운 지원 웹 API입니다 ADAM POWELL : 맞아

다시 API 7의 모든 것에서이 기능에 액세스 할 수 있습니다 위에서 우리는 RecyclerView CardView를 사용할 수 있습니다 미리보기 초기에 살펴보십시오 RecyclerView는 무엇입니까? 당신은 이것에 대해 지금 많이 들었습니다 새로운 어댑터 지원 뷰의 기본 클래스입니다

기본적으로 원격으로 아무 것도 시도하지 않은 사람 이 시점에서 목록보기로 재미 있거나 복잡한 많은 벽에 머리를 두드렸다 매달린 광선, 날카로운 물건, 뭐든간에 당신은 그것을위한 은유로 사용하고 싶을지도 모른다 기본적으로 목록보기가 설정됩니다 완전하고 완전하게 통제하다 원하는 항목을 언제든지 배치 할 수 있습니다 그래서 재미있게 보시고 모든 것이 중계됩니다

모든 애니메이션이 손실됩니다 애니메이션의 중간 지점에 있었던 조회수 이제 화면 중간에서 벗어나 다른 데이터 항목에 바인딩됩니다 그리고 시도하고 사용하는 개발자로서 정말 실망 스럽습니다 어떤 종류의 정말로 풍부한 경험을 얻으 려합니다 복잡성 예산보다 훨씬 뛰어납니다

많은 방법으로 따라서 RecyclerView는보다 유연한보기를 제공합니다 기존의 대형 데이터 세트를 에 대한 ListView를 사용하십시오 이미 기능을 내장했습니다 어댑터가 어댑터가 위젯에 대해 항목이 구체적으로 추가 될 때 데이터 세트로 계속 진행 또는 항목의 범위가 제거되거나 제거 될 때 특별히 추가되거나 제거됩니다

그냥 말하기보다는 헤이, 내 데이터 세트가 바뀌었다 뭐가 바뀌 었어? 나는 모른다 너 알아 낸거야 그래서 이런 식으로 우리는 당신에게 줄 수 있습니다 항목이있을 때의 애니메이션과 같은 몇 가지 사항이 자동으로 추가됩니다

세트에 추가되거나 제거됩니다 CHOT HAASE : 튜토리얼을 하나 더 만드는 것을 피할 수 있다면 어댑터보기에서 무언가를 애니메이트하는 방법, 난 행복해질 꺼야 ADAM POWELL : 이것이 바로 여기의 아이디어입니다 따라서 사용자 정의 레이아웃을 수행 할 수도 있습니다 이 프레임 워크에서

많은 분들이 말씀하셨습니다 음, ListView는 훌륭하지만 가로로 스크롤하고 싶다면? 분배기가 작동하도록하려면 어떻게해야합니까? 조금 달라요? 만약 내가 비틀 거리는 그리드를 원한다면 특정 라인을 따라 줄 지어다? 그래서 우리는 그것을 제공합니다 우리는 다 방향 스크롤 기능을 제공합니다 기본적으로 개발자는 자신 만의 레이아웃을 플러그인 할 수 있습니다 관리자가 항목보기를 배치하는 방법을 정의 할 수 있습니다

이것은 RecyclerView의 일반적인 주제를 말하며, ListView가 실제로 모든 방식으로 확장 가능하도록 아니었다 CardView도 있습니다 이제 CardView는 조금 다른 접근 방식을 취합니다 RecyclerView에서 RecyclerView는 매우 일반화 된 구성 요소입니다

당신은 계속 나아갈 수 있습니다 CardView는 무엇인가 될 예정입니다 이 방법은 매우 특별한 유스 케이스를 해결합니다 호환 가능하며 최선의 근사치를 제공합니다 서로 다른 플랫폼 버전에서 의도 된 디자인의 따라서이 경우 표준 일관성있는 외관을 제공합니다

진짜 부드러운 그림자와 사용자 정의 된 둥근 뷰를 얻을 수 있습니다 당신의 둥근 모서리 등을 클리핑하고 L, 우리는 최선을 다해 가짜 버전을 제공 할 것입니다 그리고 모양 배경 pre L하지만 슬라이드에서 볼 수 있듯이 여기까지, 이것들은 실제로 꽤 유사하게 보인다 당신에게 디자인의 일반적인 의도를 부여합니다

이런 종류의 도구는 일종의 것입니다 당신이 표현할 수 있도록 더 많이 제공하고 싶습니다 구형 플랫폼의 재질 설계 CHASE HAASE : 그럼 이제 상대방에 대해서 이야기 해 봅시다 API 및 기능 사실 L 플랫폼에 있습니다 이전 자료는 지원 라이브러리에있었습니다

어디에서든 자유롭게 사용하십시오 귀하의 응용 프로그램에 대한 감각 특정 기능을 타겟팅하는 경우 당신의 적용을 위해, 특히 L, 우리가 소개 한 새로운 API에 액세스 할 수 있습니다 먼저, 그림자에 대해 이야기 해 봅시다 UX 그룹의 초기 비디오가 있습니다

그들이 원하는 공간을 탐험하면서 그 그림자는 실제로 같을 것입니다 그래서 우리는 이것을 볼 수 있습니다 그것이 실행되는지 보자 그래서 우리는 광원을 가지고 있습니다 그것이 지역 광원 인 것에 주목하십시오

우리는 카메라에 대한 직교 투영법을 사용합니다 똑바로보고 그리고 나서 우리는 복잡한 일을하는 카드를 가지고 있습니다 이러한 멋진 실시간 그림자를 주조합니다 그리고 책임있는 모든 엔지니어 60 프레임에서 이와 같은 것을 구현하기위한 심장 발작을 일으켰다

ADAM POWELL : 때때로 웃었다 CHET HAASE : 좋아하는 비디오 모의물이 여기에 있습니다 전체 출시 중 디자인 팀에서 나왔습니다 두 사람의 엔지니어는 그림자의 초기 프로토 타입 작업, 디자인 팀과 이야기를 나눴습니다 그리고 그들이 요구 사항에 관해 그들과 이야기하고있을 때 이 영역 광원을 가지고 있기 때문에 아마도 반올림해야합니다

아마도 직사각형이어야합니다 우리는 둥근 모서리를 확실히 원합니다 부드러운 그림자와이 모든 것들 분명히 60 프레임에서 두 번째 속도로 수행해야합니다 백그라운드에서 하이 엔드 워크 스테이션이 실행 중이었습니다

하이 엔드 애니메이션 소프트웨어는 이것을 렌더링합니다 단일 프레임은 30 초 만에 60 프레임을 초당 싶었습니다 전화로 그것은 너무 괴롭습니다 그림자가 어디에 있는지도 알 수 있습니다

그리고 그걸 렌더링하는 데 아직 오래 걸렸습니다 그리고 우리는 실시간으로 실제로 어떻게하는지 궁금합니다 그리고 나서 우리가 알아 낸 것 같아요 그래서 그림자 뒤의 아이디어는 당신은 당신의 견해를 높이고, 그 견해들을 그 견해 위에 올려 놓기 위해 계층 구조 평면 따라서 L에 살기 전에 모든 것을 생각할 수 있습니다

당신이 원한다면, 모든 것이 z에 있다는 것을 제외하고는 0이됩니다 모든 것이 같은 비행기에 있습니다 그것은 기본적으로 안드로이드의 평평한 땅입니다 음, L 버전에서 우리는 당신을 허용합니다 당신의 선택에 따라 그러한 견해 중 일부를 향상시킬 수 있습니다

해발 고도 또는 번역 z 값 또는 az 값 그들을 모두의 비행기 위에 올려 놓는 az 값 그 평평한 땅에 그러면 자동으로 캐스팅 할 수 있습니다 공중 광원으로부터의 그림자 우리는 그 세계보다 국지적으로 위치했습니다 이런 식으로하는 또 하나의 이점은, 알아내는 대신에, OK 자, 어떻게이 그림자 이미지를 빨리 그릴 수 있을까요? 이 일의 뒤에 대략 보이게하십시오? 뷰 볼륨에서 올바르게 수행하는 한 가지 이점 접근 방식은보기가 컨테이너 외부로 그릴 수 있다는 것입니다

범위 너가보기를 그리려고 노력했는지 나는 모른다 그림자를 던지거나보기를 확대하는 것처럼, 갑자기 비늘이 생기거나 밖으로 캐스팅됩니다 그 포함 관계 계층 구조의, 그때 그것은 잘립니다 그런 다음이 API를 사용하여 놀아야합니다

setClipChildren (false) 그리고 일종의 것들은 당신이 기대 한대로 가지 않습니다 그리고 그것은 모두 끔찍한 해킹입니다 따라서 해킹을하는 대신 실제로 육체적으로 정확하게하는 것 우리는이 3D 볼륨을 만듭니다

당신은 그곳의보기를 향상시킬 수 있습니다 그들이 원하는 볼륨으로 그릴 수 있습니다 z에서 올바른 순서로 정렬됩니다 그들은 올바른 순서로 그립니다 그림자는 그 아래에서 올바른 순서로 그려집니다

뷰 계층 자체 위에 ADAM POWELL : 그 외에도 많은 아마 당신이 정말로 당신의 견해에 맞는 z 순서를 원한다 스태킹을 시작할 때 과거에는 자식 순서를 재정의해야했습니다 그리기를위한 매개 변수

과거에는 학대를 당했을 수도 있습니다 뷰 그룹 내에서의 일반적인 아이의 순서 지정 바람직한 효과를 달성하기 위해, 이렇게하면 모든 번거 로움을 피할 수있는 아주 쉬운 방법이됩니다 CHASE HAASE : 그래서 우리는 몇 가지를 볼 수 있습니다 이 작업과 관련된 API의 기본적으로 입면 특성이 있습니다 이것은 그 물건이 사는 곳입니다

이것을 영구적 인 z 위치라고 생각할 수 있습니다 그리고 우리는 몇 가지 다른 속성을 가지고 있습니다 이는 번역 x 및 번역 y와 유사합니다 속성 비록 이것들이 애니메이션에서 더 많이 사용되지만, 일시적인 포스트 레이아웃 상태 당신은 다른 z 값으로 애니메이트하고 있습니다

그래서 예를 들어, 당신이 당신이 팝업하고 싶은 전망을 가지고 있다면, 당신은 그것이 언론 국가에있을 때 그 그림자를 확대하기를 원합니다 번역 z 속성에 애니메이션을 적용하면 긍정적 인 고도 값을 가졌는지 여부 다른 API도 있습니다 클리핑에 대 한 슬라이드에 표시합니다 그래서 그림자 자체의 모양을 설정할 수 있습니다

따라서 플로팅 액션 버튼을 생각해 볼 수 있습니다 이 원형 모양으로 음, 원형 그림자를 드리 우고 싶습니다 그렇지 않으면 환상이 무너집니다 따라서 API를 사용하여 모양을 설정할 수 있습니다

그림자를 던져 버린다 개요를 설정할 수있는 API도 있습니다 실제로 잘라내 진 것입니다 이 중 일부는 필연적으로 제약 조건이 주어집니다 우리가 운영하는 곳은 매우 제한되어 있습니다

임의의 경로 모양으로 잘라낼 수 없으므로 일부 세부 정보 SDK 문서에 있습니다 또한 클리핑 및 특히 API를 중심으로 우리가 풀 릴리스로 갈 때 아마 변화하기 쉽다 미리보기에서 우리가있는 곳을 볼 수 있습니다 그동안 석방하라 데모를 실행 해 봅시다

어떻게 작동하는지 볼 수 있습니다 데모로 전환 할 수 있다면 여기에 있습니다 당신은 내 아주 빨간 손가락 옆에, 나는이 카드를 끌 수 있습니다 실제로 틸트를 사용할 수 있습니다 이 일에 미묘한 차이를 느낄 수 있습니다

나는 약간의 음영이 있다고 생각한다 아마도이 프로젝터에 대해서는 너무 미묘 할 것입니다 그래서 당신은 이것이 실제로 예술가의 렌더링이 아니라는 것을 알 수 있습니다 그리고 그것은 30 초 프레임을 복용하지 않습니다 그래서 우리는 초당 60 프레임을 받았습니다

이것은 넥서스 5입니다 사실 많은 초기 작업이있었습니다 오래되고 느린 장치에서 수행됩니다 원래 Nexus 7이 프로토 타입 장치로 사용 된 것 같습니다 상황이 실제로 충분히 빠를 것입니다

그리고 다시 이것은 지역 광원입니다 실내의 그래픽 괴짜들, source local 당신이 할 수있는 많은 가정들이 있습니다 그것이 포인트 소스이고 그것이 무한했다면 그리고 우리는 여기서 그러한 가정을하지 않습니다

우리는 실제로 이러한 메쉬를 실시간으로 생성합니다 부드러운 경계가있는 그림자를 드리 우기 위해, 그것이 그들이 원하는 결과이기 때문입니다 그래서 합리적으로 잘 작동합니다 내가 보여줄 또 하나가 있습니다 Shadow Card Stack을 봅시다

따라서 이러한 스태킹 요소를 볼 수 있습니다 그들은 다른 z 값을 나타냅니다 그리고 그들은 더 크거나 더 작은 그림자를 던집니다 이 육체적으로 정확한 볼륨에서 기대하는 것처럼 ADAM POWELL :이 데모는 실제로 보여줍니다

네가 할 수있는 다른 사실들 기조 연설 중 본 또한 요소를 가질 수 있습니다 동일한 병합 된 평면의 일부이며, 3 차원 성격을 더 나누고 더 많이 차지하라 당신이 그들과 상호 작용할 때 CHASE HAASE : 우리가 슬라이드로 다시 전환 할 수 있다면 거기는

네 터치 피드백에 대해 이야기 해 보겠습니다 확실한 잔물결에 대해 이야기 해 봅시다 그래서 우리가 원했던 것 중 하나 일반적으로 UI에서 할 수 있습니다 – 사실, 우리는 엔지니어링 공간에서 그것에 대해 생각하고있었습니다

우리가 전반적인 디자인 언어에 직면하기 전에 재료 디자인의 변화 – 능력 무슨 일이 일어나고 있는지 더 많은 것을 사용자에게 알리기 위해 그들의 UI 상호 작용 특히, 버튼을 누를 때, 즉각적인 원자 상호 작용이 있습니다 눌려진 상태에서 눌려 지므로 상태 색상이 눌려집니다 좋았어 우리가 할 수 있다면 좋지 않을까? 변경 사항 중 일부를 애니메이션으로 만들어 정보를 얻으십시오

변화하는 국가들, 국가의 시간 기반 변화의 일종 그 주 실제 위치에 대한 자세한 정보는 물론 변경 되었습니까? 그래서 물결이 그렇게합니다 표준 위젯에 대한 터치 피드백 상호 작용 사용자 정의 위젯에서 사용하도록 선택한 경우, 눌린 상태에 대한 피드백을 제공합니다 일어나거나 일어나는 다른 주, 그래서 잔물결은 일종의 발산 물이 될 것입니다 뿐만 아니라 선택적으로 발산합니다 접촉 지점에서

그래서 당신은 실제로 리플을 얻을 수 있습니다 손가락을 밟은 곳부터 시작됩니다 훨씬 많은 상호 작용 정보 사용자가 실제로 무슨 일이 일어나고 있는지 이해할 수 있습니다 ADAM POWELL : 다시 한 번 말씀 드리겠습니다 모션의 원리와 그것이 실제로 어떻게 UI 이해에 도움이되는 일종의 이렇게하면 많은 방해 요소가 제거됩니다

당신이 오늘 UI에서 보는 깜박임 터치 영역 조명의 전체 파손 너가 조금이라도 만지 자마자 매우 가혹하게 위로 그것의 모퉁이 이렇게하면 사용자에게 조금 더 부드럽게됩니다 CHASE HAASE : 새로운 수업이 있습니다 이것을 가능하게하는 RippleDrawable이라고 불린다 그리고 이것은 기본적으로 내용을 래핑합니다

당신이 그 내용을 보여주고 그 다음에 드러내고 싶어하는 리플로 시간이 지남에 따라 당신은 선택적으로 당신이 리플의 특성을 변경하기 위해 설정할 수도 있습니다 이것은 자동으로 내장됩니다 버튼과 같은 많은 표준 도구로 이 기능은 활성화 된 응용 프로그램에서 볼 수 있습니다 머티리얼 디자인이 이미 있거나 RippleDrawable을 사용할 수 있습니다 코드에서 직접 인스턴스화 할 수도 있고, XML 리소스 또는이를 수행하는 쉬운 방법으로이 작업을 수행 할 수 있습니다

뭔가의 전경이나 배경을 설정할 수 있습니까? 선택 가능한 항목 배경으로, 그 선택을 자동으로 리플합니다 상호 작용 그래서 우리는 아이콘을 약간 변경했습니다 우리는 새로운 것을 추가했습니다 이 두 가지가있었습니다

하나는 상태 애니메이션 드로어 블이었고, 이것은 다른 PNG를 통해 실제로 애니메이션을 적용하는 기능입니다 이것을 키 프레임 애니메이션으로 생각할 수 있습니다 우리는 다른 이미지를 뒤집을뿐입니다 도중에 체크 박스와 라디오 버튼은 내가 생각하기에, L 미리보기에서 이것을 나타냅니다

그래서 지금까지의 데모를 본 적이 있다면 요 시스템 이미지를 실제로 플래싱하려면, 이 위젯이이를 통해 상호 작용하는 것을 볼 수 있습니다 기본적으로 상태에서 상태로 애니메이션을 적용하는 방법입니다 도중에 일련의 이미지를 통해 그리고 다른 하나는 상태가없는 애니메이터였습니다 이 위젯이 갈 때 말할 수있는 능력, OK

이 상태에서 그 상태로 이 임의의 애니메이션을 실행하고 싶습니다 일반적으로 객체 애니메이터 애니메이션을 제공합니다 여기 보이는 것처럼, 우리는 세 가지를 쌓아 올리고 있습니다 애니메이터 세트에서 우리는 말하고 있습니다

좋아, 나는 움직이기를 원해 내 객체의 다음 속성 나는 압박에서 압박에 이르기까지 상태, 그리고 앞뒤로 다른 상태 조합 훨씬 유연한 표현 방식 이죠 여기 있습니다 이 위젯이 통과하기를 바라는 행동 그것은 a 상태에서 b 상태로 진행됩니다

ADAM POWELL : 예를 들어 보겠습니다 누군가가 그것을 사용할 수있는 곳? CHASE HAASE : 예를 들어, 버튼을 터뜨릴 수 있습니다 클릭 할 때의 프레스 상태를 원한다면 버튼에 – 통조림 질문처럼 들렸습니다 그렇지 않았습니다 네가 그걸 물어볼 것이라고 기대하지는 않았다

너 왜 내가 여기서 생각하게 만드는거야? 따라서 버튼에 고도 속성을 설정할 때 누군가 그것을 눌러, 그럼 당신은 할 수 그것을하기위한 애니메이션을 설정하십시오 그래서 그것이 언론 국가에 들어갈 때 그것은, 나는 언론 국가에 갈거야 실행해야하는 애니메이션은 다음과 같습니다 번역 z 속성에 애니메이션을 적용하면 0에서 20까지

그런 다음 기본 상태로 돌아 가면 당신은 20에서 0으로 움직일 것입니다 생기 애니메이션에 대해 이야기 해 봅시다 그래서 다양한 것들이 소개되었습니다 미리보기 버전에서 완전히 다른 분야에서 보아라

그리고 우리는 가장 큰 것을 만들 것입니다 플로팅 액션 중 일부에서 본 공개 애니메이션 예를 들어 이전 대화에서 버튼 데모, 뿐만 아니라 당신에게 달려있는 다른 상호 작용 당신의 어플리케이션에서 확장 모양을 정의하는 그것 밑에 내용을 드러내고, 원형 공개처럼, 또는 결합 할 수 있습니다 이 원형, 더 둥근이 원형 애니메이션 보기를 복잡한 모양으로 정렬 둥근 난파 효과 나 뭐든간에 기본적으로이 애니메이션을 만들라고 말합니다 그것은 원형 공개입니다

여기에 집중 될 것입니다 반경 이 값에서 그 값으로 움직일 것입니다 그런 다음 애니메이션을 시작하면됩니다 매우 간단한 방법으로 애니메이터를 만들 수 있습니다 이것은 불투명 한 인터페이스입니다

거기에는 유연성이별로 없습니다 다시 말하지만, 우리가 실제로 겪고있는 제약 조건을 감안할 때 하드웨어의 종류에 따라 성능을 향상 시키십시오 우리가 가지고있는 이러한 기능을 특정 사용 사례로 제한합니다 우리가 찾는 것이 중요합니다

그래서 당신은 당신이 필요로하는 것을 할 수 있습니다 현재이 기능 집합으로 제한 될 것입니다 그래도 실현해야 할 중요한 것 이 중 일부는 비쌀 수 있습니다 그래서 우리가하고 싶었던 것들 중 하나 당신이 만들 수있는 슈퍼를 쉽게 만들 수는 없습니다 너의 모양에이 임의의 클립 항상 거기에 두십시오

엄청나게 비싸다 우리가 GPU를 통해 이러한 것들을 구현하는 방법 사소하지 않습니다 그래서 우리는 시간이 지남에 따라 애니메이션을 돌릴 것입니다 그리고 나서 그것은 끝날 것입니다, 그리고 우리는 단지 할 수 있습니다 솔직히 더 쉽기 때문에 사각형보기로 돌아가십시오

그래서 비싸다 우리는 당신이 매우 일시적인 상황에서 이것을 사용할 것을 기대합니다 너 어디서 움직이는거야? 그런 다음 애니메이션에서 다시 나옵니다 이전 릴리스에서도 비슷한 효과를 얻을 수 있습니다 Nexus 5에서 검색을 사용한 경우 – KitKat 릴리스가이 작업을 수행했습니다

그들은 보여줄 원형 공개가 있었다 일부 검색 결과 이것을 이미 할 수있는 방법이 있습니다 다시 말하지만, 거기에 성능 문제가 있습니다 당신은 실제로 그것이 귀하의 신청서와 귀하의 상황에 적합한 것입니다 하지만 이미 그림을 그릴 수 있습니다

비트 맵 쉐이더 애니메이션 커브 따라서 디자이너 중 한 명은 이 릴리스에서 원하는 엔지니어뿐만 아니라 더 임의적 인 시간 보간을 할 수있는 능력이었다 그래서 우리는 이미 능력을 가지고 있습니다 사실, 모든 애니메이션의 기본 동작 쉽게 쉽게 사용할 수 있습니다

그래서 우리에게는 미묘한 가속이 있습니다 그런 다음 미묘한 감속을합니다 그리고 그 효과가 얼마나 확대되었는지 미세 조정할 수 있습니다 그리고 가속화 할 수있는 다른 것들이 있습니다 당신은 모든 출구를 감속시킬 수 있습니다

그러나 일단 당신이 그것들을 지나면 그것은 그 것입니다 그리고 디자이너들은 정말로 생각하기를 좋아합니다 대신 커브의 관점에서 사물의, 2 차 및 3 차 베 지어 곡선과 능력 매개 변수를 조정하여 정확히 얻으려면 그들이 필요한시기 적절한 행동 이것이 우리가 플랫폼에서 구현 한 것입니다 특히 세 가지 애니메이션 타이밍 곡선이 있습니다

재료 디자인의 일부로 추천합니다 그리고 당신은 이것들을 여기에서 볼 수 있습니다 그들은 특정 곡선 매개 변수로 이들을 정의합니다 파일 이름을 맨 아래쪽에 붙였습니다 그래서 이것들은 당신이 단순히 애니메이션의 보간법을 참조하십시오

또는 실제로 매개 변수를 임의로 설정할 수 있습니다 그래서 당신은 그것을 여기에서 볼 수 있습니다 이 작업을 수행하기 위해 정의 할 수있는 XML 리소스가 있습니다 또는 코드에 직접 액세스 할 수 있습니다 당신은 기본적으로 단위 광장을 가지고 일하고 있습니다

이것은 전통적인 애니메이션 및 그래픽 방식의 일종입니다 사물을 정의하는 것 0 제로에서 1 제곱까지의 단위 제곱을가집니다 제어점을 생각할 수 있습니다 그 사각형의 두 구석에

그것들은 앵커 포인트입니다, 미안 해요 그런 다음 컨트롤 포인트의 위치를 ​​정의합니다 길을 따라 커브를 변화시키는 것입니다 사실, 당신은 훨씬 더 임의적 인 경로를 가질 수 있습니다 왜냐하면 우리는 실제로 거기에서 길을 가득 메우고 있기 때문입니다

그것은 단지 하나의 곡선이 아닙니다 복잡한 경로를 정의 할 수 있습니다 왜 그랬는지는 모르겠지만 그렇게 할 수는 있습니다 우리는 또한 현재 운동을 억제 할 수있는 능력을 가지고 있습니다 당신은 이미 이것을 할 수 있습니다

나는 2 ~ 3 년 전 블로그 포스트를 썼다 잘 모르겠다 유형 평가기를 사용하여 사물을 움직이는 방법에 대해 이야기하기 공간적 곡선을 따라서 쉬운 일이 아니 었습니다

그래서 나는 주변에 블로그 게시물을 썼습니다 설명했다 그리고 당신은 여전히 ​​그 접근 방식을 사용할 수 있습니다 그러나 우리는 또한 더 쉬운 방법을 원했다 API를 통해이를 수행하십시오

이제 할 수 있습니다 Object Animator에 새로운 생성자가 있습니다 원하는 경로를 지정할 수 있습니다 x와 y를 움직이는 데 따라 움직일 때 따라야 할 객체 같은 애니메이션의 일부 API 데모에는 경로 애니메이션 데모가 있습니다

SDK를 체크 아웃하면 해당 데모를 확인하십시오 그리고 그 주제에 대한 다양한 변형을 보여줍니다 활동 전환 그래서 이것은 상당히 큰 노력이었습니다 KitKat을 도입 한 전환 API를 기반으로합니다

전환 뒤의 아이디어는 애니메이션을 만드는 것입니다 훨씬 더 쉽고 자동적입니다 그들은 여전히 ​​사용자 정의 할 수 있습니다 그러나 큰 아이디어는 내 UI가 어떤 상태인지 알고 싶습니다 그리고 나는 어떤 상태가 될지 알고 싶습니다

대신에 모든 것을 애니메이션으로 적용 해주세요 모든 것을 위해 맞춤 애니메이션을 만드는 나 따라서 상황이 어디에 있는지 스냅 샷을 작성한 다음 레이아웃을 실행합니다 그리고 그것이 물건을 끄기 바로 전에, 당신은 사물이 어디에있게 될지 알아 낸다 그리고 나서 모든 것을 되 돌린다

그 변화를 대신 애니메이션으로 나타냅니다 그것은 전환이 작동하는 방식입니다 KitKat에서 나온 API입니다 그리고 이것이 지금 활동 전환이되는 방식입니다 잘 작동한다

동일한 모델을 기반으로하지만 너는 똑같은 방법을 지정해야한다 활동 간 애니메이션 그리고 그것뿐만 아니라, 알아낼뿐만 아니라 어떻게 시작에서 이러한 것들을 애니메이션으로, 출시 액티비티 및 아이템 애니메이션 방법 시작된 활동에 대해 알아볼 수도 있지만 공유 된 QUrl 요소 세트를 지정한다 기본적으로 와이어를 통해 던져집니다 그리고 알았어,이 이미지가 여기에 있었다

그리고 지금 거기에있을 것입니다 그리고 그것은이 다른 크기가 될 것입니다 변경 사항을 자동으로 애니메이션으로 나타낼 수 있습니다 그래서 정의하기위한 프로토콜을 생각해 냈습니다 좋습니다

여기 있습니다 우리가 이걸 정의하고있는 이름 그 다음 상대방 활동, 그 이름이 켄인지 알면 같은 요소 인 것에 대해 몇 가지 가정을하십시오 해당 요소는 자동으로 공유되고 자동으로 애니메이션됩니다 활동 전환을 통해 ADAM POWELL : 그 요약은 근본적입니다

이제는 이것이 당신에게 서로 다른 활동 사이의 프로토콜 동일한 응용 프로그램의 일부이거나 아닐 수도 있습니다 전환에서 특정 요소를 공유하기 하나에서 다른 하나까지 그럼 이미 할 수있어 당신 자신의 응용 프로그램에서 하위 활동이있다 세부 사항을 말한다

일부 미리보기 이미지보기 이렇게하기위한 기술이 이미 있습니다 우리가하는 일은 해킹을 적게하는 것입니다 프레임 워크에서 더 많은 코드화 API로 더 많은 것을 할 수 있습니다 쉽게 응용 프로그램 내부

그뿐 아니라 프로토콜을 통해 우리는 공유 영웅 요소의 이름으로 설립했습니다, 프로세스 전반에서 실제로 그렇게 할 수 있습니다 다른 사람의 활동을 시작하게 될 수도 있습니다 그리고 만일 그들이 그 공유 영웅 요소와 함께 무엇을해야하는지 안다면, 그런 다음 해당 활동 전환 애니메이션에 참여할 수 있습니다 이전 릴리스에서이 작업을 수행하는 방법을 알고 싶다면, 당신이 이것을 모든 곳에서하려고한다면, 거기에 고객 활동 애니메이션이라고 불리는 개발자가 있습니다 그리고 당신은 그 기술에 대해 생각할 수 있습니다

기본적으로 프레임 워크에 더 많이 구워진 것으로 사용됩니다 진짜를 위해 그것을하는 방법의 일등 시민으로 ADAM POWELL : 맞아 그리고 이것은 정말로 까다로운 많은 것들을 처리 할 것입니다 활동주기 자체를 둘러싼 다

활동이 다시 시작되면 다른 인트로 전환을 재생하고 있지 않다는 것을 다시는보고 싶지 않은 애니메이션 등등 CHET HAASE : 여기 코드 중 일부가 있습니다 실제로 코드가 포함 된 것보다 훨씬 많은 API가 있습니다 특히 사용자 정의 작업을 시작할 때 특히 그렇습니다 하지만 소개하기 만하면됩니다

당신이 어떻게 이러한 것들을 가능케하고 어떻게 실제로 이 애니메이션을 시작하십시오 이 항목을 테마에 넣으면 이 창 콘텐츠를 사용하도록 설정하라는 스타일을 정의하십시오 전환이나 코드에서 할 수 있습니다 – 매우 유사합니다 그리고 나서 기본 애니메이션을 사용할 수 있습니다 당신은 활동들 사이에서 희미해질 것입니다

간단한 페이드 아웃 페이드 인 또는 당신 사용자 지정 전환을 설정할 수 있습니다 사용자 정의 전환은 정의한 전환, 플랫폼이 제공하는 것, 내가 폭발의 전환을 원한다 모든면을 위쪽과 아래쪽으로 밀어 낸다 화면의 그래서 기존 활동에 대해 이러한 관습을 설정할 수 있습니다

뿐만 아니라 진입 활동 마지막으로 공유 요소가 무엇인지 정의 할 수 있습니다 세트는 당신이 전선을 지나가고 있다는 것입니다, 이름을 지정하고 전달한 다음 정의하십시오 이러한 요소에서 발생하는 전환 애니메이션 게다가 데모가 있습니다

마지막으로, 나는 새로운 전환이 있음을 언급하고자한다 이 작품의 일부로 쓰여졌다 이들은 일반적으로 전환에 사용할 수 있습니다 이미지 이동 기능이 있습니다 훨씬 더 유연합니다

이미지보기가 좀 괴팍하게 될 수 있습니다 길을 따라 크기를 조정하려고 할 때 이것에는 당신이 일을 할 수있게 해주는 능력이 있습니다 당신이 원하는대로, 스케일링 또는 이동중인 경우 이러한 장면 전환의 일부로 화면의 이미지를 슬라이딩 효과는 물건을 오른쪽에서 안팎으로 밀어내는 것입니다 그리고 왼쪽 폭발은이 비틀 거리는 지연으로 아이템을 폭발시키고 있습니다

그래서 당신은 멋진 효과적인 것들을 점차적으로 사라집니다 화면과 몇 가지 다른 장면 전환도 포함됩니다 그러나 간단한 데모를 살펴 보겠습니다 우리가 데모 장치로 전환 할 수 있다면 여기서 나가

그래서 이것은 API 데모입니다 이것은 몇 가지 방법을 보여주는 간단한 데모 일뿐입니다 분명히 내가 클릭하고있는 아이템들입니다 끝까지 실행되는 미리보기 이미지입니다 당신이 들어갈이 다른 활동

공유 요소로 공유합니다 다른 이미지를 애니메이션으로 볼 수 있습니다 그런 다음 목록 항목,에서 움직이는 텍스트 다른 활동 그리고 나서 이것은 데모입니다 다른 이야기의 일부로 쓰여졌습니다

2시 방향에 세부 정보가 추가됩니다 그리고 이러한 그래픽 기능 중 일부는 그리고 다시, 당신은 우리가이 일을 압박하는 것을 볼 수 있습니다 이 다른 활동을 시작합니다 그리고 우리는 두 번째 활동으로 들어갑니다 미리보기 이미지 공유, 해당 비트 맵 이미지 공유 그것은 공유 영웅 요소를 위해 넘어 가고 있습니다

우리가 슬라이드로 돌아 가면 멀리 가져 멀리 가져 ADAM POWELL : 그래서이 이야기를위한 테이크 아웃 우리가 당신에게 제공 할 것입니다 모두를위한 소재의 느낌과 느낌 프레임 워크의 기본 부분, 모두 버튼과 체크 박스, 그 밖의 모든 것

우리는 당신에게 이것들을 테마로하는 능력을 줄 것입니다 따라서 브랜드에 브랜드 색상을 적용 할 수 있습니다 많은 여분의 자산을 자동으로 생성 할 필요없이 귀하의 응용 프로그램 내에서 그러나 그것은 충분하지 않습니다 당신이 정말로해야 할 일은 디자이너와 함께 일하는 것입니다

디자인 가이드 그 자체로 작업하십시오 그리고 당신은 여전히 ​​글쓰기를 할 것입니다 응용 프로그램에 많은 사용자 정의 코드가 있습니다 응용 프로그램을 실제로 만드는 파트가 우리가 쓸 수없는 부분이 두드러지며 서로 다르다 너 아니면 다른 사람들을 위해 그들은 똑같은 것들이 될거야

다른 모든 응용 프로그램이 수행합니다 우리가하고 싶은 것은 당신이 도구를 순서대로 사용할 수있게해라 사용자에게 정말 독특한 경험을 선사합니다 CHASE HAASE : 자원 언급 할 가치가있는 리소스가 거의 없습니다

이미 이걸 보셨을 것입니다 디자인 사양이 있습니다 거기 있니? dandroidcom의 링크가 묶여 있습니다

이 정보 그리고 미리보기 사이트 자체를 확인하고 싶을 것입니다 SDK를 얻으십시오 그것을 막아라 장치 이미지가 시스템에 표시됩니다

그것으로 놀아 라 관심이 있으시면 제안 해 드리겠습니다 특히 우리가 말한 것에 대한 그래픽과 애니메이션 부분에서, 오후 2시에 우연히 나 한테 얘기 할 수있어 다시 [무관심]으로 무대에 올라 섰습니다 그리고 우리 모두에 들어가는 방법에 대한 기술적 인 세부 사항이 있습니다

이 물건들 중 일부가 작동하고 어떻게 될지 이러한 종류의 응용 프로그램을 만드는 데 사용됩니다 마지막으로, 피드백 URL이 또 있습니다 그리고 우리는 실제로 질문을 할 시간이 있습니다 그래서 몇 가지 마이크가 있습니다 마이크를 찾아 내고 질문을 해주십시오

아담 파웰 : 이리와 예 관객 : 그래서 빠른 질문입니다 우리가 어떻게 될지 알고 싶다 이전 버전의 Android에서이 기능에 액세스 할 수 있습니다

나는 분명히 그것을 볼 수 있다는 것을 안다 하지만이게 얼마나 많은지 알고 싶습니다 지원 라이브러리에서 지원됩니다 지원 라이브러리 버전 ADAM POWELL : 새 버전의 지원 라이브러리가 있습니다

Preview SDK로 지금 바로 나가기 그 중 일부는 사용할 수있게 될 것입니다 하지만 실제로 미리보기 SDK에 대한 자세한 내용은 자연 서식지에 새로운 API 몇 가지를 보여줍니다 그리고 다른 많은 이유 때문에 아마 일부 애플 리케이션을 연결시키지 않을 것이다 미리보기 SDK에 대해 야생으로, 관련이 있기 때문에 다른 많은 사전 출시 API 즉, 일단 최종 SDK 버전 사용할 수있는 앱 컴팩트 라이브러리 및 기타가 표시됩니다

시각적 인 스타일의 약간의 뒤의 항구의 약간을 가질 것이다 사용할 수 있습니다 그리고 우리는 물건을 계속 제공 할 것입니다 매우 구체적인 사용 사례를 수행하기 위해 CardView 라인을 따라, 그런 다음 RecyclerView와 같은 것들 그것은 당신이 모든 종류의 움직임을 모든 곳으로 가져올 수있게 해줍니다 이제 활동 전환과 같은 것들 쳇이 잠깐 얘기를 나눴 어 아마 당신은 사용할 수 없을거야 그래서 우리는 아마 앞으로 나아갈 것입니다

당신이 이미 알고 있고 사랑하는 몇 가지 단순한 fall backs 그곳에 CHET HAASE : 메모하는 것도 중요합니다 이야기의 초기에 나왔다 우리가 말하고있는 많은 것들 디자인에 대한 접근 방식으로 표준 Android 프로그래밍을 사용합니다 일부 새로운 애니메이션 기능, 이전 플랫폼의 API에 포함되지 않은 경우, 당신은 그들을 사용할 수 없습니다

그러나 달성 할 수있는 다른 방법이 있습니다 많은 경우에 그러한 종류의 효과 그리고 측정, 레이아웃, 색상, 그 물건, 당신은 매우 유사하게 보일 물건을 얻을 수 있습니다 어떤 사람들에게는 약간 다른 접근 방식이 될 것입니다 특히 새로운 애니메이션 기능을 제공합니다

ADAM POWELL : 맞습니다 뒤쪽의 마이크 관객 : 내 말 들리니? 예 예 ADAM POWELL : 네

관객 : 좋습니다 그래서 기조 연설과 내가 보았던 몇몇 데모에서, 나는 원형 이미지로의 움직임이 있음을 발견했다 조회수 우리가 사용할 위젯이 될 것입니까? ADAM POWELL : 네 우리가 단순한 드로어 블을 만들었던 지 기억하지 못합니다

또는 실제보기를 표시하지만 지원에 구성 요소가 있습니다 우리가 가서 적용 할 도서관 당신의 이미지에 그 원형 클립 CHAR HAASE : 반올림 된 비트 맵이 있습니다 지원 라이브러리의 드로어 블 그래, 그런 것 같아

그게 당신이 말한거야? 네 그것은 매우 간단합니다 우리는 플로팅 액션 버튼이나 팹 위젯을 만들지 않았지만, 왜냐하면 그것은 매우 단순합니다 기본적으로 이미지보기입니다 당신의 그림은 원형 이미지입니다

매우 간단합니다 당신은 그것에 대한 표고를 설정합니다 당신은 개요가 무엇인지 우리에게 말해주고 우리는 옳은 일을합니다 그것으로 실제로 CardView와 비슷합니다

나는 이것을 언급하고자한다 실제로 CardView 효과를 얻는 것은 매우 쉽습니다 사실, 우리가 한 이야기에서 보여줄 데모 나중에 오늘 표준보기를 사용하여 구현했습니다 나는 클릭하고 나는 적절히 그늘을 드리웠다 그것은 간단했다

특정 위젯에 넣는 이점 적어도 우리는 표준 패딩과 레이아웃을 가지고 있으며 또한 그 비슷한 모습을 가질 수있는 능력 이전 릴리스에서 느껴집니다 그래서 그것은 팹을위한 위젯을 만들만한 가치가있는 것 같았습니다 별로 관객 : 고마워 응, 그래

관객 : 그래서 활동 거래와 모든 것 정말 좋고 공통적 인 고통 점을 확실히 해결합니다 제가 알고 싶었던 점은 그 부분에 대한 지원이 필요하다는 것입니다 조각 거래 및 사물을위한 조각 경계를 넘나들며? ADAM POWELL : 네 나는 아직 그것이 미리보기로 그것을 만들었다라고 생각하지 않는다 예

예 아직 그러나 그렇다 우리가 정말로 어려운 문제를 해결하자마자 활동 전환, 다음 단계 프래그먼트 전이였습니다 그래서 나는 그것을 찾을 것입니다

관객 : 고마워 예 ADAM POWELL : 뒤에서 관객 : 그는 같은 질문을했습니다 나는 활동을 위해 한적했다

그러나 우리는 기대를 볼 수있다 아마 다른 미리보기에서 그것을 볼 수 있습니까? 내가 타이밍이 뭔지 모르겠다 나오고있는 다른 비트들 나는 L에서 그것을 볼 것을 기대한다고 말할 것입니다

관객 : 그러나 당신은 그것에 대해 연구하고 있습니까? 예 예 ADAM POWELL : 음 – 흠 관객 : 이제 우리는이 고도를 갖게되었습니다 객체에 대한 전환은 조작 가능성을 의미합니다

화면에있는 것들 끌어서 놓기 기능이 향상 되었습니까? L도 들려? ADAM POWELL : 어떤 종류의 드래그 앤 드롭 특별히 찾고 있어요? 청중 : 임의로 컬렉션을 재정렬합니다 오, 알았어 청중 : 좋은 이벤트 인터페이스 네

아담 파웰 : 네 그래서 RecyclerView로 해보겠습니다 기본적으로 일부 항목 터치 리스너를 적용 할 수 있습니까? 그것은 당신이 컬렉션의 수준에서 터치를 처리 할 수 ​​있도록, 특정 항목보기 수준보다 따라서 번역을 많이 수행 할 필요가 없습니다 부모까지 그리고 나서 다시 그것을위한 공간의 특정 지점에 그러면 훨씬 쉬워지기를 바랍니다

관객 : 네 그게 내가 원하는 바야 감사 뒤에서 ADAM POWELL : 뒤에서

청중 : 이해가 되나요? 기존 코드에서도 ListView를 변경할 수 있습니다 RecyclerViews에? ADAM POWELL : 그래서 그들은 대체로 호환됩니다 두 가지 중요한 차이점이 있습니다 첫째로 커서 어댑터에 익숙하다면 그것은 두 개의 뷰로 뷰를 만들고 분리합니다 다른 단계, 이것이 기본값입니다

RecyclerView에있는 상태 따라서 이러한 구성 요소를 분리 할 수있는 한 현재 ListView 어댑터에서 GetView를 가져오고, 그러면 그것은 쉬운 일 중 하나입니다 다음 작품은 전에 언급 한 것처럼, 더 풍부한 알림을 제공 할 수 있음 데이터 세트 변경의 본질에 대해 그래서 그러한 종류의 신호를 얻지 않고, 매우 거친 나뭇결보다는 ​​오히려 통보 데이터 세트 변경 호출, 그럼 우리는 애니메이션 만큼은 할 수 없을 것입니다 관객 : 그 때가 유일한 유익입니까? 그게 ADAM POWELL : 어느 쪽 이죠? 애니메이션? 청중 : 풍부한 통보 CHET HAASE : 그것은 더 새로운 것입니다 더 시원합니다 ADAM POWELL : 분명해야합니다

나는 그 질문을 이해하지 못한다고 생각한다 그래서 우리가 이전에 이야기했던 것들 중 일부부터, 우리는 어댑터를 통해 전환 할 때의 이점을 의미합니까? 또는 ListView에서 RecyclerView로 전환 본질적으로 동일한 UI가 무엇입니까? 관객 : 예 ADAM POWELL : 좋습니다 네 ListView가 여전히 사용자의 요구를 충족시키는 경우에는 꼭보십시오

이미해야 할 일보다 더 많은 일을하지 마십시오 이것은 대부분 모든 UI의 요구 사항을 해결하기위한 것입니다 훨씬 더 많은 것을 할 수 있기를 정말로 원하는 곳 복잡한 모션과 복잡한 터치 또는 항목을 사용하거나 사용자 정의 레이아웃을 수행하려는 경우 관객 : 네 감사

관객 : 너는 그 관계에 대해 어떻게 생각하니? 이 새로운 스타일과 기본적으로 어떻게 그것이 과도하게 쓰러지고 싸우는 것과 관련이 있습니까? 저의 견해로 볼 때, 그것은 우호적 인 것 같지 않습니다 ADAM POWELL : 일부 작품에 대해 이야기하고 싶습니까? 우리는 드로잉 명령을 재정렬하면서 일부 작업을 수행했습니다 그 중 일부가 들어올 것 같아서요 응 그래

우리는 툴킷 팀에서 많은 모자를 착용합니다 그리고 그 중 하나는 모두 성능에 관한 것입니다 이전 릴리스에서는 많은 작업이있었습니다 디스플레이 목록 최적화 및 오버 드래그 제거에 대한 정보 우리가 실제로 프레임 워크에서 자동으로 할 수있는만큼 그래서 당신이 가진다면, 보기가 완전히 완료되었다고합시다

그것보다 더 큰 또 다른 시각으로 가려졌다 그리고 완전히 불투명 해지면, 우리는 그 일을 과장 할 것입니다 우리는 무슨 일이 일어나고 있는지 모르기 때문에 그걸 그려 내고 싶다면, 우리가 그릴거야 갑자기 갑자기 2 배나 과장됩니다

아무것도하지 않고 이제 우리는 실제로이를 제거 할 수 있습니다 표시 목록에서 일부 후 처리를하기 때문에, 그래서 우리는 완전히 모호한 것으로 그려 내지 않습니다 그래서 많은 정보가 있습니다 이미이 재생 목록 최적화에 그 상황의 일부를 피하십시오

나는 더 많은 애니메이션과 더 많은 부자가 화면의 그래픽은 아마도 의미합니다 무슨 일이 일어나고 있는지 알고 있어야합니다 반투명 효과가 사라지는 경우 항상 화면 전체에서 그렇다면 더 많은 픽셀을 그릴 것입니다 네가 그렇게하지 않은 것보다 하지만 그것은 일종의 표준 Android 프로그래밍 기술입니다

화면에 무슨 일이 일어나고 있는지 알고 있어야합니다 오버 드로 감지기와 같은 도구를 사용하십시오 실제로 픽셀 수준에서 진행되고있는 것을 보여줍니다 당신이 그 위험을 극복하지 않고 있는지 확인하십시오 ADAM POWELL : 실제로, 우리는 많은 팀을 보았습니다

지금까지 소재 UI를 구축하기 시작하십시오 그리고 전반적으로 그들의 과다한 상황 이전 디자인과 크게 달라지지 않았습니다 소개를 시작하자마자 다시 다른 것 위로 미끄러 져 완전히 불투명 한 배경 스태킹을 많이 시작하면, 그렇다면 네가있는 곳이있다 조금 넘치는 것에 대해 생각하기 시작하고 싶어합니다

클리핑을 피하기 위해 할 수있는 일이 더 많습니다 우리는 할 수있는만큼 최선을 다하고 있습니다 자동으로 그렇게하는 프레임 워크에서 관객 : 제 생각으로 생각합니다 모든 디자인 원리가 중요합니다

누적 된 느낌 이를 성취하기 위해 몇 번에 걸쳐 물건을 쌓아야 할 것입니다 그리고 주위를 둘러 볼 수있는 좋은 방법이 있습니까? CHASE HAASE : 스태킹은 일시적인 상태에 가깝습니다 전 일이 전임으로서 많은 UI를 보지 못했습니다 서로의 위에 겹쳐서

ADAM POWELL : 글쎄요, Google Now 카드에있는 것들 그것은 서로의 위에 쌓일 것입니다 그러나 심지어 그 중 일부는, 그들이 무엇을 시작했는지 카드 중 일부가 함께 하나의 카드로 병합을 시작하십시오 컬렉션의 일부인 경우에는 일부 상세보기에서 나옵니다 그리고 그 중 일부는 일부 데모에 표시되었다고 생각합니다 게다가

관객 : 고마워 나중에 2 초 남았 어 질문을 위해, 우리는 모두 시간이 없다는 것을 의미합니다 고맙습니다 ADAM POWELL : 원한다면 우리가 여기있을거야

나중에 다른 질문을 할 수 있습니다

UI testing with Espresso – Android Testing Patterns #2

[음악 재생] 좋은 시험을 치르는 것은 어려울 수 있습니다 그리고 신뢰할 수있는 UI 테스트를 작성하면 어려운

사용자 인터페이스는 비동기식이며, 이벤트, 전환 및 데이터에 의해 유도 백그라운드 스레드에서로드 UI 테스트의 도움없이이를 코딩합니다 프레임 워크는 많은 상용구와 핸들링을 필요로합니다 가장자리 경우의 반면에 샘플 앱이있는 전화를드립니다

앱의 기능을 테스트 해 보라고하세요 방금 구현했습니다 예를 들어, 새 메모 저장 내 메모 작성 앱에서 작동합니다 너는 무엇을 할 것이냐? 글쎄, 나는 당신이 Save 버튼을 찾을 것이라고 확신한다 일단 당신이 그것을 발견했다면, 당신은 그것에 두 드릴 것입니다

그 메모가 목록에 있는지 확인하십시오 저장된 메모의 실제로 UI 테스트를위한 꽤 좋은 시나리오이지만, 사람을 이해하는 것은 간단합니다 그러나 어떻게 코드로 표현할 것인가? Espresso 프레임 워크가 구체적으로 만들어졌습니다 이 목적을 위해서 – 개발자를 가능하게하는 것 간결하고 안정적이며 사용하기 쉬운 UI 테스트를 작성하는 방법 유창한 API 그리고 가장 중요한 것은 에스프레소가 동기화를 담당한다는 것입니다

모든 UI 이벤트로, 대부분의 경우, 보기 상태 전환에 대해 걱정할 필요가 없습니다 구현 세부 사항 방금 정의한 간단한 UI 테스트를 되돌아 보면, 우리는 에스프레소를 사용할 때의 기본 흐름을 볼 수 있습니다 실제 시나리오와 정확히 동일합니다 먼저 일치하는 규칙을 사용하여보기를 찾습니다

그런 다음 작업을 수행하십시오 마지막으로 결과 상태를 확인하십시오 내가 더 멀리 가서 실제 테스트 코드를 작성하기 전에, Android 테스트가 runner 및 Espresso 종속성은 buildgradle에서 구성됩니다 의존성을 추가하고 러너를 설정합니다

Android Studio 버전을 사용하는 경우 테스트 이슈를 선택할 수 있습니다 Android 계측으로 전환하는 것을 잊지 마세요 Build Variants에서 테스트하십시오 Android Studio 20을 사용하고 있습니다

로컬 및 계측 모두에 대한 통합보기가 있습니다 테스트 그래서 이미 내 프로젝트 관점에서 볼 수 있습니다 계측 테스트는 Android 테스트 소스 세트에서 수행됩니다 여기에서는 샘플 테스트 클래스를 만들겠습니다

NotesScreenTest로 이름을 지정하십시오 테스트 클래스에 주석을 추가하여 지정해야합니다 나는 Junit 4 테스트를 쓰고있을거야 Android Junit 4 러너로 실행합니다 앱의 메모 화면이 포함되어 있습니다

notes 활동에서 활동 테스트 규칙을 추가하면 어떤 시험 전에 주자에게 활동을 시작하라고 말함 그들이 끝나면 그것을 끄십시오 이 모든 것이이 라인에서 처리됩니다 이제 설명이 포함 된 새로운 메소드를 추가하겠습니다 실제 시험의 이름과 기본 구조로 시작하십시오

나는 전에 설명했다 onView는 실제로 Espresso 클래스의 메서드입니다 하지만 내 테스트 코드에서 정적 인 import를 사용할 것이다 보다 간결한 방법으로 테스트를 표현할 수 있습니다 괜찮아

다음에 논점을 살펴 보겠습니다 현재보기에서보기를 찾으려면 정규 표현식이 필요합니다 계층 에스프레소에는 일련의 내장 matchers가 함께 제공됩니다 ID가있는 경우, 텍스트가있는 경우, Is Checked 및 기타 여러 가지가 있습니다

우리는 간단한 치트 시트를 제공하므로 매번 문서를 파고 들지 않아도됩니다 내 경우에는 플로팅 액션 버튼을 찾고 싶습니다 다행히도 화면에는 ID가있는 유일한 항목입니다 fab_add_notes 이제는 matchers를 사용하여 필요한 뷰를 격리했습니다

뷰 액션을 적용 할 시간입니다 또는 다른 말로하면, 사용자 상호 작용 그것은 에스프레소에 의해 시뮬레이션 될 것입니다 FAB을 클릭하기 만하면됩니다 그러나 다시 한 번 타이핑과 같은 더 많은 내장 동작이 있습니다 심지어 손가락을 쓸어 넘기고, 내가보기와 상호 작용하는 데 사용할 수 있습니다

그리고 마지막으로, 나는 나의 행동의 결과를 확인한다 뷰 어설 션을 사용하여 입력 필드가 표시되는지 확인하고 싶습니다 팹을 누른 후 화면에, 나는이 코드 블록을 여기로 옮길 것이다 그리고 뷰 일치를 허용하는 일치 어설 션을 사용합니다

그래서 우리가 지금까지 가지고있는 것을 요약하면, 첫 번째 문은 부동 작업 단추와 일치합니다 클릭하면 메모 추가 화면이 나타납니다 두 번째 명령문은 편집 텍스트를 찾습니다 사용자가 메모 제목을 입력 할 수있게 해주는 그것을 사용하여 표시되는지 확인합니다 일치 뷰 어설 션 사이에 아무 코드도 쓸 필요가 없다는 것을 주목하십시오

이전 행사가 끝날 때까지 기다리는 것, 에스프레소 이미 저를 위해 저를 돌보아줍니다 테스트를 실행하려면 테스트 클래스를 마우스 오른쪽 버튼으로 클릭하십시오 실행을 선택하십시오 계기 테스트이기 때문에, 에뮬레이터 또는 물리적 장치가 필요합니다 실행되는 화면에서 동작을 볼 수 있습니다

다음은 약간 더 긴 테스트입니다 에는 메모 추가 화면에 입력하고 메모를 저장하는 작업, 모두 에스프레소를 사용합니다 엔드 투 엔드 테스트를 작성하지 않는 한, 시험을 작고 범위를 유지해야합니다 그들을 더 신뢰할 수있게 할 것입니다 추가 및 실행을 연습하려는 경우 나만의 UI 테스트, 체크 아웃하는 것이 좋습니다

우리의 안드로이드 테스팅 코드 랩 (Androl Testing Codelab) 다운로드 가능한 프로젝트가 포함되어 있습니다 시작하기위한 단계별 지침을 제공합니다 Android 테스팅의 다음 에피소드에 참여해주세요 테스트에서 어댑터보기를 처리하는 방법을 배우는 패턴

행운과 행복 테스트 [음악 재생]

Create UI tests with Espresso Test Recorder

WOJTEK KALICINSKI : 저는 Wojtek Kalicinski입니다 이것은 Android Tool Time입니다

그리고 Espresso Test Recorder에 대해 조금 이야기 해 봅시다 앱에 UI 테스트를 추가하는 방법에 대해 설명합니다 [ALARM RINGING] 그러나 먼저, 그것들에 대한 간단한 설명 에스프레소에 익숙하지 않은 사람 에스프레소는 설계된 테스트 프레임 워크입니다 간결하고 안정적인 UI 작성을위한 유창한 API 제공 테스트

그러나 종종 개발자가 앱에 UI 테스트를 추가하는 것을 꺼려합니다 또는 단순히 프레임 워크를 배울 시간이 없습니다 에스프레소 테스트 레코더가있는 곳입니다 UI 테스트를 만들고 추가 할 수 있습니다 대화 형 방식으로 기존 앱에 추가 할 수 있습니다

이전에 베타 버전을 보았을 수도 있습니다 이 기능은 Android Studio 23에서 제공됩니다 우리는 몇 가지 개선 사항을 통해 안정적으로 홍보하고 있습니다 Test Recorder 클릭 시작하기 Run 메뉴에서 Record Espresso Test를 선택하십시오

장치 선택 대화 상자가 나타납니다 그리고 당신이 선택한 후에, 테스트 레코더 디버그 모드로 앱을 실행합니다 앱의 UI를 진행하기 만하면됩니다 일반 사용자가 버튼을 클릭하면 스 와이프 및 입력 필드로의 타이핑, 모든 작업이 테스트 레코더에 나타납니다 창문

여기를 클릭하여 주장을 추가 할 수도 있습니다 녹음 중 언제든지 테스트에 테스트 레코더가 덤프하도록 트리거합니다 현재의 뷰 계층 구조 어설 션하려는보기를 선택하려면 확인을 클릭하십시오 레코더 창에 나타나는 스크린 샷 보기에서 주장 유형 중 하나를 선택하십시오

존재하지 않거나, 존재하지 않거나, 지정되어 있는지 확인하십시오 본문 테스트 기록을 마쳤 으면, 테스트 레코드는 동등한 테스트 코드를 생성한다 당신의 행동과 단언을 실행하는 프로젝트 계측기의 새 파일에 넣습니다 테스트 폴더 또한 빌드 파일 필요한 에스프레소 의존성을 포함하고 추가합니다

필요한 경우 소스 파일에서 에스프레소 테스트를 볼 때 레코더가 생성되면 정상적으로 표시됩니다 사람이 읽을 수있는 코드 따라서 테스트를 추가로 사용자 정의해야하는 경우 앱이 변경되면 앱을 변경하거나, 파일을 다시 열어서 당신이 필요로하는 변경 보시다시피, 에스프레소 테스트 레코더 사용이 매우 간단하지만 사용법은 간단합니다

몇 가지 한계가 있습니다 Android Studio 23부터는 몇 가지 가장 일반적인 어설 션만 있습니다 레코더 UI를 통해 사용할 수 있습니다 너보다 더 복잡한 것이 필요하다면, 생성 된 코드를 직접 편집해야합니다

또한이 단계에서 테스트 레코더는 추가적인 동기화가 필요한 상황 앱에서 지연 및 비동기 작업을 처리 할 수 ​​있습니다 에스프레소에 익숙해지는 것이 좋습니다 유휴 리소스 API 및이를 사용 장기 실행 작업이 발생할 때 신호를 보내 테스트합니다 테스트의 일부 측면을 조정하려는 고급 사용자 열병합 발전, 설정 페이지가 있습니다 Android Studio 환경 설정의 테스트 레코더 용

여기서 최대 뷰 계층 깊이를 변경할 수 있습니다 뷰 식별에 사용됩니다 앱 데이터가 매번 지워지는 경우 새로운 검사를 기록하십시오 에스프레소 테스트 레코더는 좋은 방법입니다 앱에 테스트 추가를 시작하려면, 당신이 에스프레소를 배우고 싶든 생성 된 코드를 검사하거나 간단하게 나중에 사용자 정의 할 수있는 테스트 스위트를 신속하게 빌드 할 수 있습니다 소셜 채널에 대한 귀하의 의견을 기다리고 있습니다

행복한 시험 지켜봐 줘서 고마워 더 많은 Android Studio 비디오를 보려면 여기를 클릭하십시오 [음악 재생]

What's New in Android Studio UI Design and Debugging Tools (Google I/O'19)

[음악 재생] VADIM CAEN : 안녕하세요 우리 이야기에 일찍와 주셔서 감사합니다

Android Studio, UI 디자인 및 디버깅의 새로운 기능 도구 고맙습니다 [박수 갈채] 저는 Vadim입니다 Android Studio에서 디자인 툴을 작업합니다 JEROME GAILLARD : 저는 Android Studio 팀의 Jerome입니다

JOE BAKER-MALONE : 저는 Android Studio 팀의 Joe입니다 ASHLEY ROSE : 저는 Android 프레임 워크와 JetPack의 Ashley입니다 VADIM CAEN : 좋습니다 시작하기 전에 모바일 제품에 대해 약간의 이야기를합니다 어제 어쩌면 Android Studio 팀은 개선을 위해 모바일 제품에 중점을 두었습니다

Android Studio의 엔드 투 엔드 사용자 경험 Android Studio 개선은 수정 사항 만이 아닙니다 또한 사용 방법을 개선하는 방법이기도합니다 우리가 확인한 틈새를 채우십시오 우리의 도구 체인은 – 설계 할 때 – 새로운 레이아웃을 구축하고 새로운 탐색 기능을 구축합니다 이 레이아웃 사이에, 당신의 자원을 관리하고, 장치에서 런타임에 검사를 처리합니다

이 도구 체인을 사용하려면 전형적인 사용자 여행을 거치면서, Google Trips 애플리케이션을 구축하십시오 그리고 Jerome은 Layout Editor에 대해 이야기 할 것입니다 여기에서 볼 수있는 첫 번째 레이아웃을 작성하는 방법에 대해 설명합니다 제롬 가이 야드 : 감사합니다, 바딤 그래서 우선, 우리는 Google Trips 앱의 첫 화면, 레이아웃 편집기를 사용하여

레이아웃 편집기를 열면 이것은 화면의 종류입니다 너는 볼거야 여기는 단지 빈 레이아웃 일뿐입니다 우리가 할 첫 번째 일은 청사진 모드로 전환하는 것입니다 속도가 빠르면 빠르며 방금 만들려고 할 때 산만해진다

레이아웃상의 제약 넌 그냥보고 싶지 않아 구성 요소가 실제로 어떻게 보이는지 나는 팔레트에서 – 레이아웃에 필요한 모든 구성 요소를 드래그하여 어느 정도 확실한 곳에서 일단 내가 끝내면 그 시간이 온다

제약 조건을 만들 수 있습니다 좀 더 효율적인 건물 제약이되는 방법으로, 나는 그들을 하나 하나 만들 수 있었다 하지만 문맥 메뉴를 사용하면 한 번에 여러 가지 제약 조건을 만들 수 있습니다 예를 들어 여기서는 RecyclerView를 중앙에 배치하려고합니다 레이아웃 내에서

내가 할 수있는 한 가지는 RecyclerView를 마우스 오른쪽 버튼으로 클릭하는 것입니다 문맥 메뉴에는 옵션이 있습니다 수평으로 센터링의 그것이하는 일은 왼쪽 클릭 한 번으로 오른쪽 제약 조건을 RecyclerView가 중앙에 배치되도록합니다 일단 모든 제약 조건을 다 만들면, 이것은 내 레이아웃이 청사진 모드에서 보이는 것과 같습니다

분명히, 그것은 나에게 정말로 말하지 않는다 디자인에 비해 옳은 것을 만들면 지금 당장 나는 주어진다 이제 디자인 모드로 돌아가겠습니다 그것이 어떻게 생겼는지 보아라 디자인 모드에서는 보이지 않는 것을 볼 수 있습니다

내가받은 원래 디자인과 매우 흡사하다 그 이유는 RecyclerView 뷰 꽤 비어 있습니다 아시다시피, RecyclerView는 일반적으로 런타임에 데이터를 채우고, 하지만 그때는별로 도움이되지 않습니다 레이아웃을 만들고 데이터가 올바르게 표시되는지 확인하십시오 당신이 보게 될 것입니다

이 문제를 해결하려면 디자인 [? 도구?] 속성을 사용합니다 그래서 디자인 시간 속성, 당신은 간단하게 – RecyclerView에서 컨텍스트 메뉴를 다시 사용하십시오 샘플 데이터 선택기 등을 사용할 수 있습니다 샘플 데이터 선택 도구에서 미리 정의 된 템플릿 중 하나를 선택할 수 있습니다 RecyclerView 항목에 대해 귀하가 제공하는 정보

여기에서 첫 번째 이메일 클라이언트를 선택했습니다 그렇게하면 해당 RecyclerView에 대한 레이아웃이 생성됩니다 항목, 이메일 클라이언트 카드 그리고 동시에, 그것을 당신의 RecyclerView에 연결합니다, 그러면 레이아웃 편집기에 채워진 상태로 표시됩니다 물론 우리는 이메일 클라이언트를 구축하지 않습니다

RecyclerView에서 빌드하고자하는 것 그 여행 카드입니다 그래서 나는 그 RecyclerView 아이템을 편집하려고합니다 Trip 카드로 만들었습니다 자원 관리자 패널에서 – 여기에서 볼 수있는 왼쪽 편에, 바딤이 선물 할거야 너에게 훨씬 더 자세하게 – 간단히 말해서 RecyclerView 항목의 이름을 뭔가로 바꿀 수 있습니다

내 프로젝트에 더 적합한, 그리고 나 편집을 시작할 수 있습니다 리소스 관리자에서 레이아웃을 두 번 클릭하십시오 레이아웃 편집기에서 레이아웃을 열면됩니다 화면에서 볼 수 있듯이, 나는 꽤 많이 가지고있다 내 오른쪽 여행 카드에 필요한 모든 권리가있는 구성 요소, ImageView, 몇 개의 태그보기, 그러나 그들은 분명히 올바른 제약 조건을 가지고 있지 않습니다

그래서 모든 제약 조건을 삭제하고, 툴바에서 해당 버튼을 클릭합니다 그 작업이 끝나면, 나는 재구성 만 할 것입니다 모든 제약 한 가지 문제는 우리가 꽤 많은 구성 요소를 가지고 있다는 것입니다 작은 영역에서 서로 겹치기

그것은 약간 어수선 할 수 있습니다 그리고 우리는이 상황에서, 건물 제약 조건은 약간 어려울 수 있습니다 제약 조건을 드래그하는 것이 때로는 어려울 수 있습니다 올바른 대상, 올바른 구성 요소, 특히 구성 요소가 겹치는 경우 이제 우리가 할 수있는 일은 제약을 원하는 곳으로 직접 드래그합니다 연결하려는 구성 요소에서, 그런 다음 팝업 메뉴가 열리고 어떤 유형인지 묻습니다 설정할 제약 조건을 선택하십시오

정말 흥미로워 지네 제약 조건을 다음 위치로 드래그합니다 겹치는 구성 요소가 있습니다 그 상황에서, 우리는 여러 유형의 제약 조건을 사용할 수 있지만 겹치는 구성 요소를 선택하십시오 그 제약 조건을 첨부하고 싶습니다

그리고 그것은 그것을 훨씬 쉽게 만들어야합니다 경우에 제약 조건 레이아웃을 작성하는 방법 중첩되고 작은 구성 요소가있는 곳 도움이 될 수있는 마지막 방법 제약 조건을 효율적으로 만들 수 있습니다 구성 요소를 사용 중입니다 구성 요소에서 여러 구성 요소를 선택하는 경우 – 여기에서는 두 가지 텍스트보기를 선택했습니다

다시 컨텍스트 메뉴에서 마우스 오른쪽 버튼을 클릭하고 선택합니다 사용할 수있는 제약 조건 중 하나 당신은 하나의 제약 조건을 만들 수 있습니다 선택한 여러 구성 요소에 적용됩니다 그래서 여기에서 두 가지 제약 조건을 만듭니다 이 두 텍스트보기에서 동시에 우리가 모든 제약 조건을 다 만들면, 우리의 견해를 조금이라도 사용자 정의 할 때입니다

이를 위해 우리는 Attributes Panel을 사용할 것입니다 레이아웃 편집기의 오른쪽에 있습니다 우리는 Attributes 패널을 재 설계했습니다 Declared Attributes라는 맨 위에 새 섹션을 표시합니다 이 섹션에서는 모든 속성 구체적으로 설정된 선택한보기에 대한 그 견해에 대해서

바로 거기에서 모든 속성을 편집 할 수 있습니다 이미 설정된 해당 뷰에 새 속성을 설정하려면, 더하기 버튼을 클릭하기 만하면됩니다 해당 속성의 이름과 값을 추가하십시오 Attributes 패널에서 할 수있는 또 다른 일 Constraint Widget을 사용하여 여백을 설정합니다 귀하의 의견에 보고 싶어했을거야

숫자와 같은 실제 값만 설정할 수있을뿐만 아니라 증거금의 가치 ​​- 정의 된 맞춤 측정 기준을 설정할 수도 있습니다 프로젝트에서 그것이 우리가 @ dot dot dot option을 추가 한 이유입니다 드롭 다운의 맨 아래에 버튼을 클릭하면 자원 선택 도구가 열리고, 이미 가지고있는 특성 항목을 선택할 수 있습니다 프로젝트에서 정의하거나 바로 거기에 새로운 차원이 있습니다 일어날 필요가있는 마지막 한 가지 – 그 레이아웃을 보면서 – ImageView가 샘플 데이터로 채워지는 것을 볼 수 있습니다

하지만 단지 기본 샘플 데이터 일뿐입니다 Android Studio에서 제공됩니다 그래서 그것은 실제로 그 종류를 대표하지 않습니다 RecyclerView가 런타임에 수신 할 데이터의 양입니다 그래서 당신이 할 수있는 것은 당신 자신의 샘플 데이터를 설정하는 것입니다

그 ImageView에 cities라는 이미지를 cities라는 디렉토리에 추가했습니다 우리 프로젝트의 샘플 데이터 폴더에 있습니다 샘플 데이터 그림에 나타나는지 확인할 수 있습니다 샘플 데이터를 설정할 수 있습니다

우리의 원래 레이아웃으로 돌아가서, 우리는 이제 그것이 많이 보임을 볼 수 있습니다 당신이 가진 원래의 디자인과 더 비슷합니다 거기에서, 당신은 정말로 디자인이 제대로 구현되었으며 실제 데이터를 수신 할 때 작동합니다 장치에서 실행 중입니다 이제 우리는 첫 번째 제약 조건의 구축을 마쳤습니다

첫 번째 화면에서 계속 진행하고 싶습니다 우리의 응용 프로그램에서 우리의 다음 화면을 구축합니다 레이아웃 파일을 만드는 것만으로 돌아 가기보다는, 레이아웃 편집기에서 빌드하고, 우리는 네비게이션을 생각하고 바로 거기에서 시작하고 싶다 우리의 애플 리케이션의 흐름, 그리고 어떻게 첫 번째 화면이 전환됩니다 두 번째 화면으로 그렇게하기 위해 우리는 네비게이션을 살펴볼 것입니다 편집자

탐색 편집기는 시각적 도구입니다 이를 통해 Navigation Architecture를보다 쉽게 ​​사용할 수 있습니다 JetPack 라이브러리의 구성 요소 탐색 아키텍처 구성 요소의 방식 작품은 네비게이션 호스트 단편을 사용하는 것에 의존합니다 응용 프로그램의 기본 레이아웃

여기에 우리의 활동 주 레이아웃 파일, 우리는 Layout Editor에서 드래그 할 것입니다 NavHostFragment 팔레트 – 기본적으로 거기에 있습니다 그것을 디자인 표면 위로 끌어 올 것입니다 그렇게 할 때, 그것은 당신에게 선택을 요구할 것입니다 해당 NavHostFragment와 관련된 탐색 그래프 아직 탐색 그래프를 만들지 않은 경우, 그 대화 상자에서 바로 할 수 있습니다

우리가하는 일이야 이것이 레이아웃이 어떻게 생겼는지입니다 그것은 비어 있습니다 이 NavHostFragment가 있습니다 네비게이션 아키텍처 구성 요소 그것을 채울 것입니다 당신이로드 할 여러 단편들

그러나 두 번 클릭하면 탐색 편집기가 열립니다 이것은 네비게이션 에디터가 비어있을 때 보이는 것과 같습니다 우리가하고 싶은 첫 번째 일 첫 번째 화면을 시작 목적지로 추가합니다 우리의 애플 리케이션을 위해 대상 추가 메뉴에서 앱에있는 모든 레이아웃이 미리 선택되었습니다

그래서 우리를 위해, 우린 그 조각을 환영합니다 이전에 작업해온 레이아웃입니다 바로 거기에 놓으십시오 다음으로, 우리는 두 번째 화면을 추가하기를 원한다 그러나 이미 레이아웃을 만들지 않았기 때문에, 우리는 단순히 새로운 목적지를 만들 수 있습니다

추가 대상 메뉴에서 그렇게하면 생성의 가능성을 얻을 수 있습니다 새로운 프래그먼트 클래스와 그 관련 레이아웃, 이것이 레이아웃이 될 것입니다 두 번째 화면으로 사용됩니다 두 화면이 Navigation Editor에 있으면, 그들을 연결하는 시간이 온다

그것은 행동으로 할 수 있습니다 화면에 표시된대로 작업을 간단하게 만들 수 있습니다 또한 Attributes 패널에서 직접 탐색 편집기의 해당 동작에 대한 속성 중 일부를 설정하고, 애니메이션이 재생되는 것과 같습니다 그 동작을 통해 전환 할 때, 또는 뒤로 누르면 행동으로 할 수있는 또 다른 매우 흥미로운 일 한 화면에서 다음 화면으로 유형 안전 데이터를 전달합니다

그렇게하고 싶다면 다음과 같이 할 수 있습니다 수신 대상에 – 인수 섹션에서 더하기 단추를 클릭하십시오 속성 패널의 단순히 대화 상자를 열면 인수의 이름을 지정하십시오 인수의 유형 그것은 미리 정의 된 유형일 수 있습니다

또는 프로젝트에서 정의한 유형일 수 있습니다 당신이 원하는 어떤 물건이라도 물론, 네비게이션 그래프 만들기 앱 탐색을 완벽하게 지정하기에는 충분하지 않습니다 또한 약간의 코드를 작성해야합니다 그러나 당신이 볼 수있는 것처럼 그것은 꽤 간단합니다

여기, 나는 RecyclerView의 항목에 불과하다 OnClickListener의 경우 전환하려고합니다 그 행동을 끝내라 그래서 내가하는 일은 액션 객체를 만드는 것입니다 내비게이션에서 지정한 인수를 전달합니다

편집자 일단 행동을 취하면 나는 간단하게 탐색 라이브러리의 navigate 메소드 호출 실제로 전환을 수행합니다 그것이 실제로 정의한 전환을 수행하는 데 필요한 전부입니다 탐색 편집기에서 할 수있는 마지막 사항 나머지 네비게이션 흐름을 채우기 위해 자리 표시자를 사용하며, 그 순간에 귀찮게하고 싶지 않으면 새로운 조각 나중에, 그렇게 할 준비가되면, 당신은 단순히 돌아가서 레이아웃으로 대체 할 수 있습니다

지금은 실제로 빌드 할 때가되었다고 생각합니다 우리의 두 번째 레이아웃 보시다시피, 많은 이미지가 포함 된 레이아웃입니다 많은 자원이 필요합니다 우리는 어떻게 자원을 볼 것인가? 관리자는 우리가 그것을 구축하는 데 도움이 될 수 있습니다

VADIM CAEN : 나는 갭을 채우기 전에 이야기하고있었습니다 Android Studio에 존재했던 하나의 차이 리소스를 관리하는 방법이었습니다 문제가 무엇인지 살펴 보겠습니다 Android Studio 리소스 디렉토리 구조 프레임 워크를 위해 만들어진 것이지 실제로는 아닙니다 사용자에게 리소스를 얻을 때 디자이너에게서 보면 이렇게 보일 수도 있습니다

폴더가 많을 수도 있습니다 죄송합니다 먼저 Android Studio에서 다른 문제가 발생했습니다 전체 축소판보기가 없습니다 특정 Android보기

그래서 레이아웃, 벡터 잔해 또는 모양 – 미리 볼 수있는 유일한 방법은 하나의 레이아웃을 두 번 클릭하거나 하나의 파일에 두 번 클릭하는 것입니다 미리보기에서 확인하십시오 이 문제를 해결하기 위해 Android Studio에 도입했습니다 34 Resource Manager는 다음과 같은 새로운 도구입니다

리소스를 가져오고, 사용하고, 탐색 할 수 있도록 도와줍니다 보다 그래픽적인 방식으로 그것을 열려면 간단히 Resource Manager 버튼을 클릭하면됩니다 Android Studio의 왼쪽에있는 프로젝트 버튼 아래, 이 중립 창을 열 것입니다 한번 더 그래서 우리 문제로 되돌아갑니다

왼쪽에는 프로젝트 구조가 있습니다 오른쪽에는 디자이너가 우리에게 준 것을 가지고 있습니다 우리는 파일에서 다른 프로그램을 볼 수 있습니다 디자이너가 우리에게 준 것 어쩌면 그들은 자신이 좋아하는 디자인 소프트웨어를 사용했을 것입니다

기본 내보내기 옵션을 사용했습니다 폴더에 드로어 블 접두어가 누락되었을 수 있습니다 이름 또는 접미사 @ 2x와 함께 웹 형식을 사용했을 수도 있습니다 그리고 당신이해야 할 일은 @ 2x 접미사를 제거하는 것입니다

그런 다음 하나씩 하나씩 파일을 붙여 넣습니다 다른 문제는 폴더가 누락되었을 수 있으며, 그리고 당신은 문서로 돌아 가야 할 것입니다 이 특정 폴더에 대한 한정자가 무엇인지 기억하고, 그리고 당신은 올바른 순서로 그들을 넣어야합니다 Resource Manager와는 어떻게 작동합니까? 이제 전체 묶음을 끌어다 놓기 만하면됩니다 당신이 Resource Manager에 가져온 파일들, 자동으로 가져오고 이름별로 그룹화됩니다

여기에서 볼 수 있듯이 우리의 자원은 이름별로 그룹화되어 있습니다 올바른 한정어가 적용되었습니다 그래서 방금 무슨 일이 있었던거야? [박수 갈채] 고맙습니다 한정어를 식별하면 여기에는 웹 또는 Android가 파일 경로에있을 수 있습니다 우리는 단순히 해당 안드로이드 폴더를 만들 것입니다, 파일에있을 수있는 접미어를 제거하고, 프로젝트에 복사하십시오

물론 한정자를 추가하려는 경우 (예 : 무작위로 지방, 그리고 프랑스어와 같은 임의의 언어, 프랑스와 같은 지역에서는 간단하게 여기에서 할 수 있습니다 그리고 당신은 명령을 기억할 필요가 없습니다 수동으로 폴더를 만들면 자동으로 생성됩니다 올바른 한정어로 이 시점에서 원하는 경우 파일의 이름을 바꿀 수도 있습니다 이제 우리의 자원은 Resource Manager에서 그룹화됩니다

한 번에 모두 볼 수 있습니다 따라서 기본적으로 하나의 리소스 버전 만 표시됩니다 하지만 리소스를 두 번 클릭하면 당신은 모든 다른 버전을 볼 수 있습니다 다른 한정자가 적용되면 분석 할 파일 유형 어떤 파일이 응용 프로그램에서 가장 많은 공간을 차지했는지 자, 이것은 제가 정말로 흥분되는 특징입니다

이제 SVG를 드래그 앤 드롭 할 수 있습니다 VectorDrawable로 변환됩니다 [CROWD CHEERING] 고맙습니다 그래서 여기에 파일 선택기가 열려 있습니다 나는 아무것도 선택할 필요가 없다

간단히 클릭하고 열 수 있으며 모든 SVG를 열 수 있습니다 가져오고 변환됩니다 또 다른 멋진 기능은 모든 레이아웃을 미리 보는 것입니다 이름으로 레이아웃을 인식하는 것이 어려울 수도 있습니다 따라서 레이아웃 탭에서 리소스 관리자를 열면, 모든 레이아웃을 볼 수 있습니다

당신이 찾고있는 것을 찾으려면 전에 말했듯이 도구 체인이 있습니다 이 전체 도구 체인을 함께 통합하려고합니다 우리가 한 것은 통합 된 것입니다 [INAUDIBLE] 레이아웃 편집기로

예를 들어 여기에 포함시키고 자하는 레이아웃이 있습니다 그래서 상단 부분 이 레이아웃을 레이아웃 편집기로 드래그 앤 드롭 만하면됩니다 [INAUDIBLE]을 만듭니다 Drawable에도 똑같이 적용됩니다

Drawable을 드래그 앤 드롭하면 ImageView가 생성됩니다 이 견해의 끝까지 빨리 감습니다 이전 레이아웃에서 볼 수 있습니다 우리 툴바는 올바른 색상이 아닙니다 우리가 할 수있는 것은 컬러 탭을 열고, 우리 프로젝트에 정의 된 모든 색상을 볼 수 있습니다

그 중 하나를 두 번 클릭하기 만하면됩니다 파일을 열어서 커서를 옮깁니다 여기서 색상이 정의됩니다 그런 다음 새로운 색상 선택기를 사용할 수 있습니다 시각적으로 색을 선택하십시오

색상 선택기는 RGB 및 HSB에서 작동하며, HSB를 선택한 디자이너와 함께 일한다면 값을 사용하거나 자료를 사용할 수 있습니다 이미있는 팔레트 이제 두 개의 레이아웃이 준비되었습니다 앱에서 실행하고 싶습니다 Ashley와 Joe가 우리에게 말하기를 다시 환영 할 것입니다

새로운 레이아웃을 검사하는 방법 [박수 갈채] JOE BAKER-MALONE : 감사합니다, 바딤 이제 개발주기의 다음 단계로 넘어갑니다 우리가 실제로 앱을 실행하게되면, 실제 데이터와 함께 작동하는 방법을보고 조정할 수 있습니다 우리가해야 할 수도 있습니다

이제 오늘, 레이아웃이 어떻게 작동하는지보고 싶다면 런타임에는 Layout Inspector 도구가 있습니다 Android Studio에서 레이아웃 속성은 스냅 샷을 제공합니다 한 화면의 전체보기 계층 구조, 및 속성에 대한 일부 정보 각보기에서 설정됩니다 하지만 지금은 많은 한계가 있습니다 이것은 부분적으로 안드로이드 프레임 워크의 데이터에 기인합니다 표시 할 수 있도록 Studio에 제공됩니다

이제 Android Q에서는 프레임 워크에 Studio에 대한 여러 가지 새로운 API 추가 더 많은 뷰 및 레이아웃 디버깅을 노출하는 데 사용 정보 Ashley는 새 API에 대해 곧 이야기 할 것입니다 프레임 워크 추가가 우리에게 충분한 지 확인하려면 우리가 원하는 정보를 사용자에게 보여주고, Android Studio 팀의 우리 부부 프로젝트 마블에서 약간의 시간을 보냈습니다 새 API를 채택하고 우리가 할 수있는 것을 확인하십시오 우리는 완전히 새로운 Layout Inspector 작업을 시작했습니다

내가 너에게 지금 보여줄 것은 일의 몰래 절정이다 우리는 지금까지 해왔습니다 자, 이것은 초기 작업입니다 최신 미리보기 빌드에는 아직 포함되어 있지 않습니다 그러나 차드가 어제 개발자 기조 연설에서 말했듯이, 우리는 미리보기를 좋아합니다

우리는 개발자 의견을 환영합니다 그래서, 우리는 당신의 손에 그것을 밖으로 가져갈 것입니다 최대한 빨리 자, 어떻게 작동하는지 봅시다 Google 여행 앱부터 시작하겠습니다

우리가 해왔 던 이제 에뮬레이터에서 실행 중임을 알 수 있습니다 우리는 물건을 끌어 올려서 사용자로부터 실제 데이터를 실행하고, 디자인 타임에 사용한 샘플 데이터가 아닙니다 여기서 아래로 스크롤하면 볼 수 있습니다 실제 데이터의 일부 여행 설명 우리가 샘플 데이터에서 가지고있는 것보다 상당히 길다 텍스트가 정렬되는 지점까지 우리가 의도하지 않은 방식으로 이미지를 지배했다

새로운 레이아웃 검사기에서 이것을 살펴 보겠습니다 새로운 레이아웃 검사기가 우리에게 제공하는 것을 볼 수 있습니다 레이아웃 검사기에서 현재 가지고있는 것과 유사한보기입니다 문제의 텍스트보기를 선택하면 여기, 그리고 오른쪽에있는 Attributes Panel을보고, 우리는 몇 가지 차이점이 있음을 알 수 있습니다 현재 레이아웃 검사기에서 가지고있는 것입니다

우선, 실제 속성 이름이 있습니다 이전에는 getter 메소드 모음이 있었지만 그렇지 않을 수도 있습니다 잘 실제 속성 이렇게하면지도를 훨씬 쉽게 찾을 수 있습니다 여기서 본 것에서부터 정의한 것에 이르기까지 자신 만의 레이아웃과 스타일로

두 번째로, 우리는 멋지게 형식화 된 속성 값 다양한 가치 유형에 대해 우리는 전에 그것을 항상 얻을 수는 없었다 예를 들어 ID, 열거 형을 볼 수 있습니다 가치, 색깔, 등등 세 번째로, 우리는 지금 몇 가지 정보를 가지고있다 그 속성 값이 설정되는 곳

따라서 우리는이 선언 된 속성 섹션을 볼 수 있습니다 여기, 우리가 Layout Editor에서 가지고있는 것과 비슷합니다 직접 설정된 속성의 경우 선택한보기에서 이제 텍스트 크기와 관련된 속성을 살펴 보겠습니다 이 옵션을 선택하면 기본 탐색 기능을 사용할 수 있습니다 여기에서 직접 키 스트로크를 선언하는 방법 해당 값이 설정되는 레이아웃 xml로 이동합니다

조금 더 작게 변경하십시오 개발자 기조 연설에서 들었던 것처럼, Android Studio 35 미리보기에서 이 새로운 변경 기능을 적용하십시오 이것 이후에 바로 그 부분에 대해 더 많은 것을들을 수 있습니다 Android 개발자 도구에서 새로 워진 이야기

하지만 지금은 에뮬레이터의 변경 사항을 확인하는 데 사용하겠습니다 우리의 애플 리케이션을 재배치 할 필요없이 실제로 새로운 레이아웃에서 업데이트가 즉시 표시됩니다 경감 님 Layout Inspector가 무엇을 미러링하고 있기 때문입니다

기기 라이브에서 발생합니다 우리가 여기서 다시 스크롤한다면, 레이아웃 검사기가 오른쪽으로 스크롤되는 것을 볼 수 있습니다 게다가 [박수 갈채] 예 다른 시나리오를 살펴 보겠습니다

앱의 어두운 테마를 구현하고 싶다고 가정 해 보겠습니다 여기서 우리는 밝은 배경색을 가지고 있음을 알 수 있습니다 배경색이 어디인지 알아 보겠습니다 에서 온다 우리가 여기에있는 단편 xml을 보면, 우리는 거기에 직접 설정되어 있지 않습니다

Layout Inspector를 살펴 보겠습니다 여기서 배경을 선택하면, 정말 잘 볼 수 있다면 우리는 배경색이 없다

이보기에서 직접 설정하십시오 왜 그럴까? 글쎄, 우리는 여기에서 가장 많은보기를 선택했습니다 배경색을 어느 정도 낮추어 놓을 수도 있습니다 뷰 계층 구조에서 그러나 어떤 시각이 설정되고 있습니까? 글쎄, 새로운 레이아웃 검사기가 우리에게 제공합니다

쉽게 찾을 수있는 방법 [크라우드 반응] [웃음] 3D보기에서는 어느 것이 쉽게 볼 수 있습니다 여기에서 무엇을 그리는가? 이제이보기를 선택하면 배경이 색상이 실제로 설정되어 있습니다 그러나 어떤 파일에 설정되어 있습니까? 이것은 선언 된 속성 섹션의 맨 위에 있지 않습니다 그래서 우리는 그것이이 견해에 직접적으로 설정되어 있지 않다는 것을 알고 있습니다

그러나 다시 한번 우리가 Attributes에서 속성을 선택하면 Panel, 거기에서 직접 탐색 할 수 있습니다 그것이 설정되는 곳으로 이 경우 스타일로 설정됩니다 그리고 우리는 그 스타일을 직접 탐색 할 수 있습니다 보기에 명시 적으로 참조되지 않는 경우에도 마찬가지입니다

우리가 본 3D 표현은 우리는 다른 방식으로 사물을 시각화하고, 여기서 유용한 정보를 계속 찾고 있습니다 예를 들어 초점을 맞추는 것이 유용 할 수 있습니다 한보기 및 그 자녀들에게 또는 무엇을 기반으로보기를 함께 그룹화하는 것이 유용 할 수 있습니다 그들이 정의 된 레이아웃 파일

이 화면의 예는 상단에서 볼 수 있습니다 우리는 RecyclerView 항목을 가지고 조각을 만든 다음, 활동 그리고 그 뒤에, 다양한 견해들 프레임 워크에 의해 정의됩니다 가벼운 새로운 레이아웃 검사기를 위해 더 많은 계획을 세웠습니다 저는 우리가 무엇을 생각해 낼 수 있는지에 대해 매우 기쁩니다

이제는 필요한 프레임 워크 변경 사항에 대해 이야기합니다 이것을 가능하게하려면 여기 애쉴리가 있습니다 애쉴리 로즈 : 고마워, 조 [박수 갈채] Android Q의 경우 세 가지 새로운 API가 추가되었습니다 이러한 새로운 검사 기능을 사용할 수 있습니다

우리는 모든 도면 명령을 수행 할 수 있습니다 화면에 프레임을 만들었습니다 그것을 직렬화하여 Studio로 다시 보내십시오 그래서 그것들을 재생할 수 있고 멋진 3D보기를 만들 수 있습니다 우리는 얼마나 길게 빨랐 는가? 뷰 계층 구조에서 뷰의 특성을 가져오고, 추가 메타 데이터를 추가 할 수 있습니다

그것을보다 정확하게 만드는 것입니다 그리고 우리는 리소스 프레임 워크에 몇 가지 새로운 API를 추가했습니다 속성 값의 출처를 보자 의사 결정에 대한 더 많은 통찰력 그 과정은 다음과 같은 경우에 적용되었다 해당 속성 값에 도달합니다

그럼 Skia Picture에 대해 이야기 해 봅시다 Skia는 UI 툴킷의 기초가되는 2D 그래픽 라이브러리입니다 이것은 실제로 슬라이드에 맞도록 단순화 된보기입니다 하지만 그것은 그리기 명령의 목록입니다 더 일찍부터 우리 여행 카드 중의 1 개를 형성하는 것에 들어간다

우리가 그것을 보았다면 그림자, 둥근 사각형, 이미지, 텍스트 – 그 모든 것들을 자산과 함께 그것을 렌더링하는데 필요한 이미지 데이터, 폰트 데이터 등을 포함한다 우리는 Skia에서 이것을 기본적으로 얻습니다 매우 빠릅니다 실시간 미리보기를 수행 할 수 있기 때문에 이걸 몇 초에 한 번하십시오 그것은 일반적으로 매우 작습니다

그러나이 문제는 우리가 스위치를 확대하려면 여기를 클릭하십시오 그것은 텍스트, 둥근 사각형, 그리고 서클 슬라이더 스위치에 대한 약간의 이미지 그것들이 어떤 관점에서 왔는지는 모른다 그들은 명령을 내리는 것입니다 그리기 명령을 그룹화하는 방법이 필요했습니다

그들이 어떤 시각에서 왔는지에 따라 우리는 렌더링 노트 API를 보았습니다 두보기의 기초가되는 조직 트리입니다 그리고 drawables– 우리는 각각의 렌더링 노트에 고유 한 ID를 추가했습니다 그런 다음이 고유 한 ID를보기에 노출 시켰습니다

Skia 그림 자체에 주석을 달았습니다 여기서 각 렌더 노드는 그리기를 시작하고 멈 춥니 다 스튜디오 측에서 보기가 시작된 위치와 중단 된 위치를 확인하고 연결할 수 있습니다 이 3 개의 그리기 명령은 다시 스위치보기로 돌아갑니다 또한 우리는 시작과 중지가 있기 때문에, 우리는 멋진 중첩 된 프레임 워크를 가지고 있습니다

HTML – 우리가 볼 수있는 모든 도면 명령이 다시 있습니다 단순화 된이 카드보기를 만드는 데 들어갔다 같이 [? 오랫동안도?] 그들이 시작하고 멈추는 전망, 우리는 중첩을 해봅시다 부동산 검사를 어떻게 수정하는지 조금 이야기 해 봅시다 Joe의 관점에서 일찍 – 모든 것이 게터 이름이나 메소드 이름이었습니다

그건 우리가 반사를 사용했기 때문이었습니다 런타임시 뷰 인스턴스 내부의 속성 반사는 세계에서 가장 빠른 것이 아닙니다 특히 휴대 기기에서 매우 복잡한 앱의 경우 전체보기를 렌더링하는 데 최대 몇 초가 걸릴 수 있습니다 계층

그래서 우리는 다음과 같은 접근 방식을 들여다 보았습니다 모든 것을 직렬화하는 메서드가 있습니다 그것은 조금 부서지기 시작합니다 보기에 새 속성을 추가하면 업데이트되지 않습니다 우리는 주석 처리기에 추가했습니다

그것은 우리가 반사를 유연하게 유지할 수있게 해줍니다 우리를 제공했다 특수 효과를 추가하기 만하면됩니다 새 게터를 추가하면됩니다 사용자 정의에 대해 어떻게 보일지 살펴 보겠습니다

이는 사용자가 누구에게나 관련이 있기 때문에 볼 수 있습니다 곧 라이브러리보기를 빌드하십시오 우리는 컬러보기를했습니다 속성은 색이며 주석을 달았습니다 InspectableProperty

주석 처리기가 보이면 그것으로 우리에게 조금 더 많은 맥락이 생깁니다 우리가 이전에 얻은 것보다 훨씬 낫습니다 그래서 우리는 Kotlin에 있고 @ColorInt 주석을 볼 수 있습니다 정수형뿐만 아니라 우리는이 정수에 색을 채웠다는 것을 압니다 그리고 그것은 단지 수치가 아닙니다

재산의 이름이 있습니다 우리는 속성 ID에 대한 추론을하는 데 사용할 수 있습니다 그것을 부르는 것 물론 우리는 주석에 대한 속성을 사용하여 추론하기 그 자체 그래서이 코드 생성은 어떻게 생겼습니까? 이 객체는 이 견해와 나란히 앉을 것이다

그 중 하나가 어떻게 생겼는지 살펴 보겠습니다 이것은 검사 동반자입니다 그것은 Q를위한 새로운 API입니다 두 가지 목적이 있습니다 하나는 클래스가 주어진 경우의 목록을 정의합니다

여기에 그 클래스에 정의 된 속성이 있습니다 이 경우 색상을 정의했습니다 지도 색상에 대한 호출을 살펴보면, 색깔이기 때문에 거기에 유형이 있습니다 우리는 속성 이름을 가지고 있고 유추했습니다 ID의 속성 R

attr 이것은 또한 우리가 – 추론 된 속성 ID가없는 경우, 또는 당신이 하나를 공급했다면 우리는 그것을 거기에 넣을 것입니다 내가보기에 Studio를 가르치면, 여기에 내가 가지고있는 속성이 있습니다 여기에 그들의 속성 ID가 무엇인지, 이것은 우리가 그 부분을 가능하게합니다 코드 완성 기능으로 이동하십시오

다음 단계는 실제로 우리가 보기의 인스턴스가 있으면 속성을 읽고 싶습니다 다시 말하지만, 우리의 견해가 Kotlin에서 정의되고 자바를 사용하고 있기 때문에 – 이것이 생성 된 코드이기 때문에 – 우리는 viewgetColor를 호출한다 직접 호출한다 getter에게 반사가 필요 없습니다

매우 빠릅니다 이를 통해 뷰 계층의 실시간 업데이트를 수행 할 수 있습니다 Studio에서는 우리가 가지고 있지 않기 때문에 우리가 전에했던 모든 추가적인 오버 헤드 우리를 얻는 모든 것이 현재의 가치에 달려 있습니다 우리가 말할 수있는 것은 여기에 우리가 가지고있는이 사랑스러운 푸른 색 텍스트 색입니다

우리는 그것이 무엇인지에 관계없이 말할 수 있습니다 그것이 런타임에 설정되었는지 여부 viewsetColor를 호출했을 수도 있습니다 또는 자원에 설정되어있는 경우

그러나 대부분의 속성 값은 자원에서 설정되며, 그래서 우리는 그 사건을 돕고 싶었습니다 우리는이 경우에, 그것은 위젯에 정의되어 있습니다 리소스에 API를 추가하여, 나는이 가치를 얻었다 그게 어디서 왔는지 말해줘 Google은 해당 데이터를 추적하여 전체 리소스를 통해 저장합니다

뼈대 또한, 우리는 통찰력을 얻고 싶었습니다 스타일이 어떻게 영향을 미치는지 그래서 자원 프레임 워크가 해결 될 때 속성 값 – 어떤 스타일을 적용할지 결정해야합니다 의사 결정 트리를 가져 와서 API를 추가하여이를 나타냅니다

근본적으로 고려 된 스타일 목록입니다 그러나 결국 사용되거나 사용되지 않을 수 있습니다 해당 속성 값을 해석하는 동안 이 모든 문제는 일시적인 현상입니다 왜냐하면보기, 일단 팽창되면, 그들은 그들의 관계를 잊는다 리소스

일단 그들이 건설되면, 그들은 그들이 어디에서 온 것인지 기억하지 못한다 개발자 옵션을 추가했습니다 속성 ID의 맵과, 그들이 왔던 곳, 스타일 해상도는보기의 테마에서 스택됩니다 그래서 스튜디오 – 준비가되었거나 관심이있을 때 재산으로 더 자세히 조사하고 싶어요 돌아와

보기로하고,보기에게 묻는다, 헤이, 어디에서 당신의 속성 값이 왔는지, 그들의 스타일은 무엇입니까? Q가 가진 모든 것을 꽤 많이 감쌌다 바딤과 제롬을 환영하고 싶습니다 우리를 감싸는 무대에 [박수 갈채] VADIM CAEN : 전체 툴 체인에 대해 들었습니다

그리고 집에 돌아갈 때 그것을 사용하기를 바랍니다 레이아웃 편집기로 레이아웃을 작성하고, 우리가 추가 한 새로운 기능 네비게이션 편집기로 네비게이션 만들기, 자원 관리자로 자원 관리, 새로운 레이아웃 검사기로 검사를 수행하십시오 올해 I / O에는 Android Studio 협상이 가득합니다 바로 뒤에 – 원형 극장에서 – 당신은 안드로이드 개발의 새로운 기능을 볼 수 있습니다

Tor 및 [? Ja ?] 그렇다면 당신은 2 단계의 Android 빌드 시스템의 새로운 기능 그것은 다른 쪽 위에있다 그것은 오늘 오후에 시작한다 여기에 빨간 점이 거의 없습니다 Android Studio 팁 및 트릭 제공 선별 된 엔지니어 및 프로젝트 매니저에 의해, 2 단계

마지막으로 내일, ConstraintLayout의 새로운 기능 Nicolas와 John의 모션 레이아웃 우리는 여기서 밖에 질문을 할 것입니다 와 주셔서 대단히 감사합니다 내년에 봐 [음악 재생]

Samsung S8 Software Update OFFICIAL One UI Android 9 0 Pie Review|Sammobile

테크노 Uxama YouTube 채널 구독 최신 아이콘을 보려면 벨 아이콘을 누르십시오 재미있는 기술적 비디오

얘들 아, 우사 마야 그리고 Techno Uxama YouTube 채널을보고 있습니다 이 동영상에서는 삼성 훌륭한 일을 해냈습니다 마지막으로 우리는 하나의 UI에 대한 최신 업데이트를 얻었습니다 삼성 갤럭시 폰에서는 S8과 S8 +입니다

우리는 2009 년과 다른 전화를 들었습니다 그래서이 비디오를 계속 보아라 우리는 전화를 완전히 업데이트 할 것입니다 얘기합시다 [테크노 뮤직 플레이] 그리고 우리는 삼성 갤럭시 S8 + Android One UI

나는이 UI를 매우 좋아한다 이 기능에 관심이 있습니다 내가 좋아하는 UI, 즉 하나의 UI입니다 안드로이드 10에서 gen 9

0 Pie 그리고 삼성,이 런칭에 대한 좋은 소식입니다 UI와 매우 흥미 롭습니다 이제이 UI를 설치하고 점검 할 것입니다 즉, 어떻게 작동하고 몇 가지 중요한 기능

그러니 끝까지이 비디오를 계속 시청하십시오 너에게 뭔가 보여 줄거야 이 비디오에서 특별하다 이 UI를 포함하여 작동 방식 및 작동 방식 그것은 다른 Samsung 그들에서 아주 매끄럽다 최신 휴대 전화로 휴대 전화를 업데이트하는 데 큰 부분을 차지합니다

UI, 얘들 아, 특별한 걸 보여주고 싶다 이것은 적절한 업데이트입니다 그리고 저는 이것을 수동으로 업데이트합니다 따라서 모든 사용자가 직접 전화를 업데이트하는 것이 좋습니다 때때로 당신은 [? 이상한?] 알림 [을 (를) 통해 휴대 전화를 업데이트 하시겠습니까? 데이터

?] 그래서 수동으로 이 업데이트를받지 못하면 이 업데이트를 얻으면 매우 좋습니다 이제 삼성의 특징을 확인하겠습니다 One UI에 포함되었습니다 하나의 UI 컨텐츠 설정을 읽을 수 있습니다 그리고 다른 정보는 당신을 지키기 위해 인정되었습니다

집중하고 손에 그 이미지의 상호 작용은 가장 중요한 새로운 디자인과 새로운 기능으로 이전되었습니다 저렴하고 아주 특별한 것을 포함해서 그것 모두는 전시 중이다 삼성 키보드 업데이트 및 Bixby 새로운 기능, 전화가있다 다이얼러, 갤러리, wi-fi 삼성 건강, 그리고 많은 것들 이 업데이트에서 개선되었습니다

확인하고 싶으면이 기능들을 읽을 수 있습니다 매우 신중하게 이것이 바로 삼성이 더 많이 포함시킨 것입니다 전화가 완전히 바뀌 었음을 의미합니다 모든 것이 업데이트 되었기 때문에

그리고 현재 안드로이드 UI 버전을 확인하고, Android Oreo 801에서 실행됩니다 그리고 그게 다야 8

00입니다 그게 전부 야 그리고 삼성은 최종 사용자 경험 90을 제공합니다

하나의 UI는 매우 중요한 기능입니다 그리고 우리는 모든 것을 준비했습니다 One UI의 모든 새로운 기능이므로 설치 시간입니다 배터리를 충전하는 중입니다 업데이트를 설치할 시간입니다

모바일 데이터로 업데이트를 다운로드했기 때문입니다 나는 그 업데이트에 매우 흥미가 있기 때문에 그리고 나는 나의 1600 [? Ambis?] 모바일 나는 아무것도하지 않았다 이제 설치 프로세스를 시작하십시오 그리고 그것을 특징으로합니다

나는 그것이 어떻게 작동하는지 매우 흥미 롭습니다 이 업데이트에서 나는 모든 것을 보여줄 것입니다 그것이 작동하는 방식과 시간이 얼마나 걸릴지 등이 포함됩니다 [비공개]이 동영상을 종료하십시오 그래서 약간의 문제, 제 언어

하지만 너는이 비디오를 완성해야 해 왜냐하면 나는 갈거야 이 비디오를 하나의 UI로 최신 S8 +로 업데이트하십시오 이제이 업데이트를 설치해야합니다 업데이트가 완료 될 때까지 계속 동영상을 시청하십시오

방법 그리고 나서 나는 훌륭한 특징에 대해서 이야기 할 것입니다 이 비디오에서 하나의 UI에 대한 다음 비디오에서는 몇 가지 중요한 기능에 대해 논의 할 것입니다 하나의 UI에 포함되어 삼성 사용자를 변경합니다 모든 삼성 사용자의 경험 왜이 비디오를 완벽하게 시청할 것을 권합니다

업데이트는 여전히 진행 중입니다 24 %로 확인할 수 있습니다 그리고 나는 계속 될 것이고 나는 아주입니다 재미 있고 흥미로운 One UI를 확인하십시오 잠깐

24 %입니다 이제는 53 %입니다 시간이 더 걸리기 때문에 나는 비디오를 건너 뛴다 그러나 당신은 이것을 얻을 것이다 55 %입니다

그리고 지금, 어서, 그냥 그것을 확인하십시오 삼성 원 UI는 가장 중요한 UI 중 하나입니다 세상에 안드로이드 사용자 경험이 그렇게 좋지 않기 때문입니다 모든 삼성 휴대 전화에서이 UI를 경험하기 때문에 S9, S9 +, 주 9 및 기타 전화는이 업데이트를 제공합니다

Galaxy S7 및 S7 Edge에서이 업데이트를 기다리고 있습니다 이것이 내가 제일 좋아하는 전화이기 때문입니다 92 %를 기다리고 있습니다 이 업데이트를 완료하는 데 몇 시간 만 더 소요됩니다 그런 다음 Samsung One UI 성능을 확인합니다

내 S8 +의 변화 이 업데이트가 완료되면 내 S8 +가 S10이 될 것입니다 그래서 지금은 단지 100 %입니다 그래서 시간이 왔습니다 그리고 이제 우리는 삼성 S8 +, 하나의 UI에서 작동하는 방식

후행과 몇 가지 어려움이 있습니다 귀하의 UI에서 수정하거나하지 않습니다 삼성 S8 + 로고가 나옵니다 그리고 [INAUDIBLE]에서 삼성 로고를 기다리십시오 그래서 삼성 로고는 [부적절한]

처음으로, 첫 번째로드에는 많은 시간이 걸리고, 그러나 다음 번에는 더 부드럽게 진행될 것입니다 One UI가 설치된 후 첫 번째 부팅입니다 그리고 나는 기다리고있다 나는 단지 어떤 기능이 포함되어 있는지를 기다리고있다

그리고 전화의 앞면이 뭔가 특별한 것을 얻을 것입니다 One UI 큰 아이콘, 내 파일 갤러리, 전화의 모든 내용이 업데이트되었습니다 그것은 아주 특별한 무언가입니다 그리고 앨범에서 이미 이야기를들을 수 있습니다 따라서이 업데이트를 설치해야합니다

모든 삼성 사용자가 따라서 One UI에서 약 114 개의 앱을 최적화합니다 따라서 최적화 앱을 업데이트하는 데 시간이 걸립니다 최신 뉴스를 기다리는 중입니다 따라서 응용 프로그램을 설치하는 데 단 1 분이 걸립니다 단지 1 분 더

그게 다야, 친구들 이것은 갤럭시 S8 +에서 삼성의 UI 중 하나입니다 첫 번째로드이므로 시간이 오래 걸립니다 일부 앱을 여는 중입니다 그 후, 그것은 꽤 빨리 갈 것입니다

전화 걸기를 열어 보겠습니다 그것은 완전히 바뀌 었습니다 나는 보았습니다 그리고 매끄러운 애니메이션들, 나는 그렇게 좋아합니다 그리고 그것은 훌륭합니다

설정은 얼마나 증가하고 얼마나 많이 개선 되었습니까? 전화, 설정 메뉴 및 모든 것 이제 소프트웨어 버전을 확인할 것입니다 그건 안드로이드 버전 9이고, 안드로이드 UI 10, 하나의 UI Android 그것은 좋은 소식입니다

나는이 업데이 트를 얻을 매우 관심이 있습니다 모든 삼성 사용자는 업데이트해야합니다 그리고 삼성 S7 및 S7 Edge 사용자는 더 기다려야합니다 나는 그것이 4 월 경에 업데이트 될 것이라고 생각한다 또는 그것의 더 많은 것은 안드로이드 파이를 얻기 위해 시간이 걸립니다

그래서 내 업데이 트를 마쳤습니다 그리고 카메라 기능은 매우 중요하고 사진입니다 그리고 다음은 선택적 초점, 비디오, 그리고 슈퍼 슬로우 모션 모든 것이이 UI에 포함됩니다 메시지가 완전히 바뀐다

애니메이션은 아주 좋습니다 나는 이것을 여기에서 매우 좋아한다 우리는이 비디오에서 집으로 돌아갈 것이며이 비디오에서 작별 인사를합니다 관심이 있으시면 버튼을 누르십시오 내 채널을 구독하고 내 지원을 찾으십시오

그리고 제 언어에서이 비디오에 실망한 사람이 있다면, 나는 매우 유감 스럽다 왜냐하면 나는 처음으로 영어 비디오를 제작하기 때문입니다 그리고 곧, 더 많은 비디오를 만들면서 그들은 향상 될 것입니다 그래서 삼성 갤럭시 S7이 있습니다 나는 [? 하데스?] 안드로이드 8

0 Oreo 그리고 나는 Samsung S7 Edge와 Pie 업데이트를 기다리고 있습니다 곧 올 것이다 Android 80

0을 확인할 수 있습니다 그래서 다음은 그 것입니다 흥미롭게도 소프트웨어 업데이트입니다 확인하러 갈거야 그래서 수동으로, 귀하의 장치가 최신이라고합니다

그래서 우리는 수동으로 업데이트해야합니다 나는 기다리고있다, 삼성 3 월에 올거라 생각합니다 어쩌면 8 월에 나옵니다 나는 그것을 확인하지 않는다

하지만 삼성 One UI로 다음 비디오에서 만나겠습니다 개선 및 기능 그러니주의하십시오 안녕

Principles of mobile app design: Delight users and drive conversions – Google I/O 2016

JENNIFER GOVE : 안녕하세요 어떻게 모든이다? 관객 : 좋습니다

제니퍼 GOVE : 좋아 그런 멋진 군중 오늘 내 이야기에 모두와 주셔서 감사합니다 제 이름은 Jenny Gove이고 저는 User Experience Researcher입니다 여기 Google에서

나는 지금 Google에 10 년 동안 이달에 있었는데, 그게 우연이라고 들었는데 [클리핑] 고맙습니다 나는 그것이 우리가 몇 년의 시간과 일치한다고 들었다 I / O 컨퍼런스 개최 그래서 두 주년, 정말 재미 있습니다 그래서 오늘 오후에 우리는 이야기 할 것입니다

훌륭한 앱 개발 및 원칙 수립에 대해 귀하와 공유하고 싶은 모바일 앱 디자인, 그래서 당신은 당신의 사용자에게 훌륭한 경험을 할 수 있습니다 그리고 왜 이것이 중요한가? 글쎄, 중요한 이유는 죄송합니다 각 앱에는 150 만 개가 넘는 앱이 있습니다 우리가 알고있는 상점 거기에는 많은 경쟁이 있습니다

앱이 유용성 결함으로 고통 받기를 원하지는 않습니다 나는 유용성 결함과 사용자 경험 문제를 생각한다 일부 앱의 참여가 부족할 수 있습니다 예를 들어 25 %의 앱과 같은 것을 배웠습니다 때로는 두 번 이상 사용되지 않고 34 %의 앱 11 번 이상 열리지 않습니다

따라서 주변에 이러한 통계가 있습니다 앱 참여 및 재 참여와 관련하여 우리는 그 문제 자체에 대해 많은 연구를하고 있습니다 구글에서 우리가 가지고있는 특정 제품들 그러나 나는 그것이 정말로 우리에게 일하고 있다고 생각한다 우리의 사용자 경험과 우리의 애플 리케이션에서 사용성 문제

그래서 저는 여러분에게 세 가지에 대해 이야기 할 것입니다 남은 얘기들 나는 너에게 경험에 관한 이야기를 할 것이다 최근에 앱을 가지고 있었다 나는 너에게 한 연구에 대해 말할거야

정말 멋진 앱을 만드는 방법을 이해하기 위해 도망 쳤습니다 경험 그리고 저는 몇 가지 원칙을 다룰 것입니다 우리가 온라인으로 발행 한 내용으로 이해할 수 있습니다 앱을 만들기 위해 할 수있는 핵심 사항 더 나은 경험

그리고 그 원칙들 내에서, 나는 너를 위해 많은 자원이있어 뿐만 아니라 그 길을 따라 도울 수 있습니다 그래서 내 이야기 가족과 휴가를 보내고있는 동안 여기에 우리는 플로리다에서 멋진 시간을 보내고 있습니다 저와 저의 파트너이자 아이들입니다

그리고 우리가 휴가를 가기 전에 우리가 머물기 위해 일련의 호텔을 세웠다 그것은 스스로 운전하는 여행이었고 나는 이것들을 미리 예약했다 – 나는 그것을했다 내 노트북에 플로리다에 도착했을 때 많은 호텔이 발견되었습니다 새로운 기술 – 앱을 최대한 활용하기 시작했습니다

구체적으로 – 나에게주기 위해서 나의 여행 중에 정말로 매끄러운 약간의 경험 그들은 내가 체크인 할 수 있도록하는 일을 지금하고 있습니다 내가 도착하기 전에 – 비행기를 타듯이 – 그리고 내가 열 수 있도록 내 방으로 곧장 갈 수있게 해줘 문, 응용 프로그램과 함께

꽤 멋지다 나는이 새로운 것들로 꽤 날아 갔다 그들이 할 수 있었던 일 하지만 내가 휴가를 갔을 때 무슨 일이 있었는지, 체크인 통보가 왔어 내가 뭔가에 일렬로 서있는 동안 이렇게, 테마 파크의 롤러 코스터

그것은 나에게 물었다, 내가 체크인하고 싶어 했느냐? 그리고 나도 나에게 물었다, 나는 자기 자신의 방을 선택하고 싶어했다 또는 나는 그들이 나를 위해 선택할 수있게 했습니까? 음, 내가 예약했을 때 나는 기억한다 텍스트 필드가 있었는데, 나에게 물어 봤어 내가 요청을 받았 더라면 나는 바다가 보였습니다 왜냐하면 저는 다음 호텔에이 아름답고 깨끗한 해변이 있음을 알았습니다

나는 발코니가있는 방을 주문했다 저는이 멋진 경험을 정말로 원했고, 바다를 내려다 보면서 하지만 노트북에서의 경험이 이 앱의 경험으로 바꿀 것입니다 나는 지금 직면했다 나는 그것에 대해 약간 염려했다

그리고 나는 더 나은 기회를 가질 수있을 것이라고 생각했다 내 방을 선택하는 것보다는 그들은 나를 위해 선택합니다 항상 당신 손에 맡기는 것이 더 낫지 요? 그래서 나는 내 방을 선택하기로 결정했다 그들이 나에게 준 것은 휴대 기기에서 꽤 좋았습니다 실제로 효과가있었습니다

나는 그것이보기에 상당히 도전적 일 것 인 것처럼 보인다라는 것을 알고있다 부동산의, 그러나 그것은 아주 잘 작동했다 그들은 분명히 다른 방을 배치했다 그들은 방의 출입 여부를 명확하게 표시했다 하지만 단 한 가지 문제가있었습니다

그리고 그것은 호텔이 어떤 방향으로 향하고 있는지 전혀 몰랐습니다 바다 앞 그래서, 나는 줄을 서 있었고, 알아 내려고 노력했다 어떻게 해결할 수 있을까? 이제 실제로는하지 않은 몇 가지 해결 방법이 있습니다 그 때를 생각해보십시오

Google지도, 어쩌면 Google 이미지를 파악하거나 볼 수도 있습니다 이 경우 호텔은 다소 대칭입니다 그래서, 그것은 매우 까다로울 것입니다 나는 일종의 엄지 손가락 규칙을 사용하기로 결정했다 그리고 내가 생각하기에, 가장 많이 찍은 방을 가진 쪽 아마 바다를 마주하고 있었던 쪽이었다

그래서, 여기 730 방을 선택하기로 결정했습니다 그래서 우리는 호텔에 도착해서 모든 가방을 가져 갔고 너 무슨 일이 일어날 지 알지? 나는 이것 같이 조금 보인 전망을 얻었다 [웃음] 큰 실망 그럼 내가 뭘해야 해? 그런데 나는 다시 모든 길을 가야했다, 다시, 리셉션에 – 나는 내가 생각했다 우회로, 응용 프로그램을 사용하여 – 접수와 이야기

그들은 매우 도움이되었고, lovely 한 호텔이었고, 그것을 고쳤다 나를 위해, 그리고 결국, 우리는 위로 올라 갔다, 다른 마루, 호텔에 들어갔다 나는 전망을 얻었다 그것은 훨씬 더 같았습니다 아름답군, 응? 이것은 실제로 플로리다입니다

바하마처럼 보입니다 정말로, 정말로 멋졌다 그래서 인 – 게스트 서비스는 인간의 개입이 요구되었다 앱이 실제로 제공되지 않았기 때문에 내가 바라는 서비스 너무 잘 했어, 나는 정말로 내가 사용할 수있는이 새로운 기술로 찍은, 그러나 그것이 배달되지 않았기 때문에 그것은 짧아졌다

이 중요한 정보는 나를위한 것입니다 나는지도상의 정보가 필요했다 이 경우에는 바다의 전망이 필요했습니다 약간의 파도 방금 오리엔테이션이 필요했습니다

그래서 나를 위해, 그것은 매우 비판적이었다 이 아름다운 해변에 대한 내 견해, 이 주차장보다 그리고 그것은 훨씬 더 비판적이었을 수도 있습니다 내 휴가에 아주 친애하는 것보다 그것은 클라이언트를위한 이벤트 매니저 예약 일 수 있었지만, 아마 그것은 손님들을 위해 예약 된 사람들이었을 것입니다

결혼식이나 무언가를 위해서 한 가지 교훈은 분명합니다 우리는 개발자와 디자이너로서 전체 흐름을 이해할 필요가있다 우리 사용자가 겪고있는 그리고 그 부분은 부서집니다 이것은 정말로 시원하고 신기술이었습니다

그러나 나는 모든 것을 통해 백 트랙을 정렬해야했다 그 앱이 살 일걸요 날 구해줘 그래서 그 경험을 정말로 이해합니다 처음부터 끝까지

그리고 저는 모바일에서 생각한 것은 그 작은 것들입니다 우리는 우리가해야 할 것을 깨닫지 못한다 그래서 우리가 정말로 이해해야하는 이유입니다 사용자의 관점과 사용자의 경험 그래서, 제 이야기는 그런 것들에 관한 것입니다

그리고 우리가 그들을 어떻게 고칠 수 있는지 내가 너에게 약간의 역사를 알려줄 께 2 년 전, 우리는 많은 경험 특히 모바일 웹의 경우 문제가 많았습니다 사람들을 위해 그래서 우리는 대규모 연구를 수행했습니다

어떤 일이 일어나지 않았는지 이해하려고했습니다 모바일 웹 용으로 올바르게 구현, 우리가 더 잘할 수있는 곳, 우리는 모바일 웹을위한 25 가지 원칙을 발표했다 그것들은 정말로 잘 해냈습니다 사람들은 그것을 일종의 초기 단계로 사용했습니다 더 나은 사용자를 제공하기위한 좋은 방법 모바일 웹에서의 경험

하지만 그뿐 아니라 우리는 사람들이 우리에게 돌아와서 말했습니다 이것은 모바일 웹에 적합하지만 내 앱입니다 내 앱은 어떨까요? 내 앱에 대해 말해 줄 수 있습니까? 그래서 나는 다른 연구를하라는 부름을 많이 받았다 그리고 애플 리케이션에 대한 연구, 그래서 우리가 한 일 이죠 최근에는 연구에서 기본 앱을 살펴 보았습니다

오늘 내가 너에게 선물 할 원리들 그 일의 결과입니다 이 연구에서 우리는 특허를 이해할 수있었습니다 운 좋게 사용자 경험을하게하고, 운 좋게 행복하게 우리는 일부 회사가 더 나은 방법으로 구현 된 것들, 그 특허가 왜 더 잘 작동하는지 이해하십시오 그것들을 당신에게 가져 오십시오

그리고 이것을 잘 이해하는 것이 우리에게 중요합니다 그래서 우리는 원칙에 확신을 가질 수 있습니다 우리가 말하고있는 것, 그리고 너 자신의 제품에이를 구현하는 데 자신감을 가질 수 있습니다 그래서이 연구를하기 위해 우리는 회사와 파트너 관계를 맺었습니다 AnswerLab이라고합니다

그들은 사용자 경험 컨설팅 기반 샌프란시스코 그리고 우리는 그들과 협력하기 때문에 우리가 연구를 원했기 때문에 규모를 조정할 수있었습니다 꽤 큰 규모입니다 모바일에서 100 가지 앱에 대한 상호 작용을 연구했습니다 그래서 이들은 대형 소매점, 소규모 서비스 제공 업체를 통해 우리는 뉴스 앱을 보았고, 우리는 많은 다른 종류를 보았다

식료품 점과 같은 서비스, 여행 서비스, 소매업, 중소기업 우리는이 일환으로 게임을 보지 않았습니다 그것은 의도적으로 이루어졌습니다 왜냐하면 우리는 그것이 약화 될 것이라고 느꼈기 때문에, 또는 희석, 원리 우리는 게임이 아마도 완전히 다른 세트를 가지고 있다고 생각합니다 그걸 제외하고, 우리는 다양한 수직 계열을 조사했습니다

그리고 우리는 샌프란시스코, 시카고, 뉴욕시 이제이 연구에 참여한 103 명의 참가자가있었습니다 그래서 사용성 연구를 위해, 그것은 정말로 크다 그들은 개별적으로 실험실에 들어 왔고, 각각 90 분 동안 따라서 155 시간의 사용성 연구가 가능합니다

그래서, 만약 당신이 밤새도록 그리고 하루 종일 밤새 위로 머물렀다면, 그것은 거의 일주일이 될 것이고, 휴식을 취하지 않을 것이며, 실제로는, 그것은 일주일에 거의 4 주 정도가되었습니다 그래서, 실제로 큰 연구가 있습니다 그래서 우리는이 다른 수직을 커버 할 수있었습니다 그리고이 연구에서 우리는 무엇을 했습니까? 음, 사람들이 연구에 들어갔다 90 분 동안 그들은 정말 6 개의 앱을 사용할 수 있습니다

그것들 각각에 대해 좋은 일을하고 있습니다 그들은 그들과 함께 자신의 휴대폰을 가져 왔고, 그 이유는 우리가 그들을 원했기 때문입니다 전화에 정말 익숙합니다 그리고 우리는 어떤 문제도 원하지 않았습니다 다른 기기이거나 그렇지 않았습니다

뒤로 버튼 또는 그와 비슷한 것에 익숙합니다 그래서 Android는 약 50 %, iOS는 약 50 %를 차지했습니다 그리고 연구에 참여했을 때 우리는 무엇을 했습니까? 그래서, 우리는 다른 작업을하고 다른 시나리오를 설정했습니다 그들을 위해 우리는 그 일을 무언가로 만들기 위해 최선을 다했습니다

그들에게도, 그들이 할 수 없도록, 우리가 부르는 것을, 만족스러운 일을하는 것입니다 가능한 한 빨리 작업을 수행 할 수 있습니다 그들이 할 수있는 한 우리는 그들이 그 일에 관심을 갖길 원했습니다 그래서 우리는 그들이 관심을 갖는 것에 관해 종종 그들과 이야기했습니다

이 예에서 우리는 그들과 대화 할 수 있습니다 좋아하는 음식에 대해 이해하고 이해합니다 먼저 그들로부터 무엇인가, 그 전에 그들이 그것을 주문할 수 있는지를 물어보기 그날 저녁 저녁 그리고 우리는 그들이 큰소리로 말하게했습니다, 사용성 용어로 불리는 것이 무엇인지, 생각대로하는 프로토콜을 사용했고, 우리는 그렇게했습니다 그래서 우리는 그들이 고통의 포인트를 이해할 수 있었다

그들이 다른 업무를 수행 할 때 맞았다 그들이하고있는 일을 어디에서 물건이 원활하게 흘러 갔는지 이해하십시오 그렇게 해본 결과 우리는 데이터를 취했습니다 – 많은 데이터가있었습니다, 당신이 상상할 수 있듯이, 그 많은 유용성 자료 – 우리는 그것을 25 가지 원칙으로 정리했습니다 그래서 이것은 당신이 취할 수 있고 이해할 수있는 것입니다 자신의 앱에 적용 할 수 있습니다

우리는이 원칙들을 6 개의 챕터로 분류했습니다 하지만 내가 그들에게 들어가기 전에, 나는 우리가 실제로이 25 가지를 어떻게 얻었는지 설명합니다 그래서 그것을 25 가지 원칙으로 만들기 위해, 우리는 이것이 넓은 범위의 문제라는 것을 알아야했습니다 우리는 그것을 알아야만했다 상당히 일반적인 문제였습니다

우리는 25 가지 이상의 것들을 만났습니다 앱에서 문제가 있었지만 우리가 가장 큰 문제를 치고 있는지 확인하기 위해, 우리가 더 나은 방법을 구현 될 수있다 승인 그래서, 우리가 가지고있는 다른 장 앱 탐색 및 탐색, 앱 검색, 상거래 및 전환, 등록, 양식 입력 및 유용성 및 이해력 이제 우리는 25 가지 다른 원칙을 가지고 있습니다

하지만 여기서,이 이야기에서, 나는 단지 두 가지 원칙으로 갈 것입니다 각 챕터와 나머지 원칙들 온라인으로 사용할 수 있습니다 나는 또한 당신을위한 자원을 모아 봤다 일부 구현에 도움이되는 당신이 여기서 보는 것들 스크린을 찍을 좋은 시간이 될 것입니다

그것은 당신이 당신 자신의 시간에 들여다 볼 수있는 자원이기 때문에, 더 자세하게 이제 앱 탐색과 탐색부터 시작하겠습니다 따라서이 장은 실제로 사용자에게 내용을 안내하는 것에 관한 내용입니다 그들이 찾고있는, 빨리 그래서 우리는 일련의 핵심 원칙들을 모았습니다

효과적이고 유쾌한 앱 탐색을 만드는 데 도움이됩니다 이제 이들 중 두 가지를 살펴 보겠습니다 따라서 사용자에게 큰 도움이 될 수있는 기능 위치를 자동으로 감지하지만하지 않습니다 위치 기반 작업이 필연적으로 예외없이 현재 위치를 기반으로합니다 우리는 이것을 너무 자주 본 것 같아요

그래서 정말 대단한 일입니다 구현하고 도움을 줄 수있다 사용자가 무언가를 원할 때 끊김없는 경험 위치는 있지만 기본적으로 사람들을 활성화시키는 방법없이 과도하게 적용된 것을 보았습니다 해당 위치를 변경하십시오 그래서이 예에서 누군가 오늘 밤 호텔을 찾고 있습니다

그들이있는 곳 근처의 호텔을 찾고 있습니다 불행히도, 위치를 바꿀 수는 있지만, 그것을하는 유일한 방법은 아마도 설정을 통과하는 것입니다 우리는이 문제를 여행 앱뿐만 아니라, 소매 앱에서도 사용했습니다 우리는 무언가를 찾고 싶어하는 사람들의 유스 케이스를 보았습니다 상점에 있었지만 그 위치는 아마도 부모가 살고있는 곳 근처에서 그 가게 근처에 있었는지 알아 내고 싶었다

부모님 께 그 사실을 알릴 수 있도록 그래서 단지 이것을 제공하는 것입니다, 기본적으로 우리는 우리는 너무 많은 사용 사례를보고 있습니다 시나리오 밖이었습니다 여행에서 우리는 사람들이 나타날 곳을 보았습니다 그들의 교통 수단과 그들이 원했던 호텔 기차역의 다른 쪽 끝에 책을 썼다 라인, 그리고 그들은 지금 호텔을 예약 할 시간이 있었는데, 하지만 그들은 그들이있는 곳에 있지 않습니다

당시 호텔이 필요했습니다 훨씬 더 나은 시나리오는 여전히 사람들이 현재 위치를 사용할 수있게하고, 그러나 그들을 잘 변화시킬 수있는 자원을 제공해야합니다 근본적으로 위대하고 위대한 기술입니다 분명히 당신이 사용하도록 권장하지만, 그것은 과도하게 적용된 종류입니다, 화면의 일부를 사용하지 않고 부동산 사용자가 위치를 변경할 수 있도록합니다 그 자동 감지 위치를 사용하고 싶다면, Google Places API를 사용하면 현재 지원되는 위치를 알아 내려면 우리는 당신을위한 짧은 링크가 있어요

저 재료에 도착하기 위해서 앱 탐색 및 탐색의 또 다른 측면 우리가 애플 리케이션으로 공정한 비트를 본 것은 앱에서 모바일 웹으로 이동합니다 그리고 내가 작성한 방식으로 볼 수 있습니다 이것을하는 것에 문제가 있다는 원칙 그것은 app-to-web 전환이 필요한 곳에, 그래서 그들이 필요한 곳에 마찰이 가해지지 않도록하십시오

그래서 저는 여기 아이디어가 각각의 경우에 정말로 필요하다고 생각합니다 그것을 위해? Google은 여기 Google에서 기술을 만들기 위해 노력하고 있습니다 이 장면을 훨씬 더 부드럽게 만들기 위해 필요한 전환점 그것을하기 위해, 그러나 현재, 우리는 여전히 적어도 일종의 성능 저하를 봐라 그래서, 정말로 당신이 가지고 있는지 모바일 웹으로 사람들을 밀어 넣는다 그들이 지금 앱 경험에있을 때, 그런 다음 마찰이 없도록하십시오

따라서이 예에서 우리는 누군가 누가 비행기를 탑승하는지 이것은 아주 평범한 상황이 될 수 있습니다 사람들이 모바일 웹으로 이동합니다 그러나 우리가 자주 본 것은 단순히 여행 앱에있는 것이 아니라, 다른 시나리오에서도 우리는이 경험을 보았습니다 근본적으로 변한다

그래서 우리는 이런 것을 보았습니다 승인? 그리고 때로는 일어날 수 있다고 생각합니다 팀의 조직 구조 때문입니다 알다시피,이 앱 팀이 모바일 웹입니다 팀, 그리고 그들은 충분히 말하지 않았어, 그렇지? 그래서 저는 몇몇 회사들이 더 좋은 일을하고 있다고 생각합니다

이 팀은 함께 사용자를 계획 할 수있게합니다 경험, 모양과 느낌, 내용 배치 방법에 대해 설명합니다 그런 다음 실제 구현을 분리합니다 다른 플랫폼에서 따라서 더 나은 경험은 회사들은이 점에 대해 정말로 사려 깊다

그리고 그 모습과 느낌을 매우 매끄럽게 만들 수 있습니다 모바일 웹으로 바로 이동할 수 있습니다 안드로이드에서, 우리는 이것에 대해 약간의 연구를하고 있습니다 Chrome Custom이라고하는 몇 가지 기술이 있습니다 살펴 봐야 할 탭

그것은 당신을 활성화 시키는데 정말로 도움이됩니다 툴바 색상 변경, 종료하고 애니메이션을 입력하여 해당 앱에서 이동하는 전체 과정 모바일 웹에보다 원활하게 전달할 수 있습니다 두 번째 장으로 이동하십시오 따라서 앱 검색에서의 중요성 정말로 과소 평가 될 수 없습니다 이제 몇 가지 중요한 검색 구현에 대해 이야기 해 보겠습니다

따라서 검색 필드를 눈에 잘 띄게 표시합니다 우리는 모바일 웹 연구를했을 때 이걸 발견했습니다 검색의 중요성에 대해 따라서 가난한 사례에서 우리는 사람들이 그것을 찾을 것으로 기대하는 장소에서 검색, 그러나 텍스트를 찾기 위해 그것을 어떻게 기대할 것인가가 아닙니다 이리 우리가 본 연구에서 사람들은 수색을 위해 주위를 둘러보고있는 약간의 좌절을 가지고 있었다

때때로 그것은 메뉴 아래에 숨겨져 있었고, 가장 분명한 것 중 하나 인 것처럼 들리지만, 그러나 나는이 연구에서 내가 본 것에 대한 나의 요약이 무엇인지, 개발자와 디자이너가 구현하지 않았다는 것입니다 충분한 검색 필드 영구 검색 필드를 포함해야합니다 검색이 정말로 중요한 부분 일 때 앱에서의 내 경험에 대해 무슨 일이 일어나고 있는지 생각하는 사람들이 많이 있습니다 검색이 중요하다고 생각하지만 그렇지 않습니다

스크린 부동산을 바치는 것이 중요합니다 그러니 앱에서 확인해보세요 현재보다 현저하게 강조해야할까요? 아르? 그래서 우리는 이것에 대한 조언을 Material Design에두고 있습니다 그리고 우리는 지속적인 검색을하고 검색 필드에 넣고, 확장 검색도 있습니다 우리는 유리 모양의 아이콘을 가질 수 있습니다

물론 검색을 위해 확장되었습니다 앱에서 검색의 중요성에 대해 생각해보십시오 그리고 사람들이 얼마나 중요한지는 중요합니다 검색 유형에 대한 결정 구현해야합니다 그리고 구현 세부 사항을 위해, 검색 대화 상자와 검색 위젯이 있습니다

이 링크를 클릭하면 더 많은 정보를 얻을 수 있습니다 필터 및 정렬 옵션은 어떻게됩니까? 대단히 중요합니다 다시 한 번, 우리는 그들이 숨겨져 있거나 일종의 묻혀있는 것을 보았습니다 또는 더 아래로, 사람들은 그들에게 갈 수 없었다 그들이 필요로하는만큼

그것은 우리가 최근에 한 우리 연구가 보여준 것입니다 우리는 그것의 훌륭한 구현을 보았습니다 그러나 아직도해야 할 일이 더 있습니다 셔츠에 대한 결과 242 개, 필터링하거나 정렬 할 방법이 없습니다 따라서, 더 나은 구현은 정말 좋은 클리어 버튼

필터 사람들은 그것을 아주 분명하고 쉽게 볼 수 있습니다 그리고이 예는 의류에 대한 것입니다 이 패널을 모든 올바른 종류로 슬라이드했습니다 그 (것)들을위한 수색 선택권의

그래서 당신은 베스트 매치, 최신 콜렉션, 그런 종류의 것 내가 이런 필터를 보았을 때 한 가지는, 몇몇 회사들은 예를 들어 사이징을 실시하고 있었고, 재고가 없을 때, 그리고 그것은 사람들에게 문제를 일으켰습니다 그들은 그들이 이제까지 할 것인지 알지 못했기 때문에 재고가 그들의 크기가 그래서 여분의 작은 것을 빼앗긴다고 상상해보십시오 그냥 그것이 주식에 없었기 때문에, 사람들 그것이 다시 올지 모르겠다

그보다 나은 경험은 그들을 가능하게하는 것과 같습니다 아마 재고가 언제 돌아 왔는지 알아보기 위해 가입하십시오 그러나 확실히 그것을 보여주고, 그것을 안정된 상태로 보여준다 좋다 그래서 여기에 색과 가격 그리고 또 다른 한가지가 있습니다

나는이 디자인에 대해 좋아한다 필터를 지우거나 필터를 적용한 다음 패널을 닫으려면 맨 위의 별도 수표, 그래서 패널을 닫는 것에 대해 혼란스럽지 않습니다 않습니다 따라서이 주제에 대한 검색을 유지하면서, 사람들에게 검색을 돕는 다른 방법이 있습니다 그 중 하나는 사용자 정의 제안 추가입니다

이는 응용 프로그램의 데이터에서 만들 수 있습니다 그래서 그것은 사람들이 그들의 수색에 정말로 도움이 될 수 있습니다 또 다른 하나는 최근 질의 제안입니다 그래서 모든 기술과 시설 그 검색 경험을 향상시킬 수 있습니다 보다 깊이있는 검색 경험을 통해 생각해보십시오

좋은 주제입니다 상거래 및 전환 따라서 사용자는 앱이 정말 부드럽길 기대합니다 제품을 찾고, 학습하고, 구매하는 경험 그럼 몇 가지를 살펴 보겠습니다

이 연구에서 상거래 및 전환에 대한 정보가 공개되었으며, 전환 경험을하도록 돕습니다 따라서 비교 쇼핑 기능을 사용할 수 있습니다 이 예에서 왼쪽의 여기에 부동산 앱, 여기, 그리고 사람들에게 그냥 그들은 아래로 스크롤하여 볼 수 있습니다 다른 집에서 그들이 좋아하는 것, 그들은 기억에 의지해야하며, 사람들, 우리, 너와 나, 우리는 모두인지 주의자이다 우리는 우리의 두뇌를 그렇게 많이 사용하는 것을 좋아하지 않습니다 그리고 우리는 사용자가 자신의 뇌를 많이 사용하도록 만들고 있습니다

여기, 그들이 물건 등을 보았던 곳을 기억합니다 그러나 우리는 더 잘할 수 있고 그 중 일부는 할 수 있습니다 우리가 본 것은 사람들을 돕기 위해 이런 방식으로 우리는 사람들에게 북마크 아이템을 제공하게됩니다 그들은 그것을 보았습니다 그래서 그들은 그것을 비교할 수있었습니다

모바일에서이 작업을 수행하는 것은 여전히 ​​매우 어렵습니다 그러나 여전히 우리가 할 수있는 모든 일이 도움이됩니다 그래서 저는 여기서 당신을 보여 드리겠습니다 사람들이 비교할 수있게했다 그리고 나서, 당신은 그것이 꽤 제한되어 있음을 볼 수 있습니다, 전화의 크기와 함께,하지만 여전히, 당신은 그 정보를 모으는 것

그것은 그들이 다른 모든 가정을 무시할 수 있다는 것을 의미합니다 걱정하지 않고 침실을 비교할 수 있습니다 그들은 욕실을 비교할 수 있습니다, 가정의 비용, 기타 등등 우리는 이것이 필요하다는 것을 알고 있습니다 연구에서, 우리는 사람들이 이에 대한 대안을 취하는 것을 보았습니다

그래서 소매상에서 사람들이 장바구니에 품목을 추가하는 것을 보았습니다 단지 그들이 같은 장소에서 그들 모두를 볼 수 있도록 그리고 그 일을 생각하는 사용자가있었습니다 다른 사람들이 어려움을 겪었습니다 그래서 우리는 이것이 필요하다는 것을 압니다

비교 및 탐색 경험에 대해 생각해보십시오 앱 내에서 사람들이 필요로하는 것 그런 다음 결제 수단을 쉽게 추가하고 관리 할 수 ​​있습니다 나는 다른 날에이 사실에 대한 가난한 예를 실제로 발견했습니다 내가 물건을 사러 갔을 때였습니다

나는 다시 휴가를 가고 있었다 나는 휴가를 가기를 좋아한다 그리고 나는 예약을하고 있었다 임대 주택 그리고 카드를 업데이트해야 할 시점까지갔습니다

내 머리 속의 나의 모델은 음, 새 카드가 도착했다 이전과 같은 카드 일뿐입니다 그것에 날짜가 새겨졌습니다 내 마음 속에는 내 카드에 대한 내 정신 모델이 있습니다 그것은 같은 카드입니다

그냥 교체가 필요합니다 새로운 결제 수단이 아닙니다 그래서 기존 카드를 편집 할 수있을 것으로 기대했는데, 그러나 그것을 할 수있는 시설이 없었습니다 그래서 나는 개발자의 모델을 이해해야 만했다 새로운 결제 수단을 추가해야했습니다

이 예에서는 그 사람이 그들이 체크 아웃되고있는 지점까지, 하지만 카드를 편집하거나 새 카드를 추가 할 방법이 없습니다 그것은 다른 곳에서도 가능합니다 하지만 우리 대부분은 생각하지 않습니다 글쎄, 나는 아침에 일어나서 생각할 것입니다 해당 앱에서 결제 수단을 관리해야합니다

종류가 별개의 활동입니다 맞습니까? 우리는 필요할 때 그것을 생각하는 경향이 있습니다 우리가 돈을 낼 때 그래서, 여기에 문제가 있습니다 따라서이 예에서는 훨씬 좋습니다

기존 카드를 편집 할 수있는 옵션이 있습니다 새 결제 방법을 추가합니다 여기에 여러 가지 결제 수단을 제공하고 사람들을 유도합니다 매우 깨끗한 형태의 디자인으로, 여기, 사용자가 새로운 신용 카드를 추가하기로 선택한 경우, 원할 경우 카드를 스캔 할 수도 있습니다 그래서 그 경험을 멋지고 깨끗하게 만드십시오

이제 Google에서 제공하는 하나의 시설 Android Pay는 그 중 하나를 선택하는 방법입니다 지불 할 이 아이디어는 사용자에게 매우 간단합니다 사용자가 Android Pay를 통해 원활하게 결제 할 수 있으며, I / O에는 여기에 대한 이야기가 있다고 생각합니다 이 링크에서 더 많은 정보를 얻을 수 있습니다

그래서 등록 등록은 회사 및 개발자에게 매우 인기가 있으며, 그게 그렇게 보였으니까 우리가 사용자로부터 참여를 얻을 수있는 곳입니다 그것은 사용자가 우리에게 맡기는 곳입니다 우리는 오래 전부터 이러한 등록을 제공 한 사실을 알고있었습니다

장벽이 앞에있는 것은 사람들이 도달하기위한 커다란 장애물이 될 수 있습니다 먼저 뭔가를 제공하는 것이 낫습니다 그래서 그들은 그들의 편에서의 참여를 느낄 수 있습니다 회사에 다른 몇 가지가 있습니다

등록과 관련하여 오늘 이야기하고 싶습니다 그래서 우리는 사용자들이 로그인하고 가입하는 데 어려움을 겪고있는 것을 보았습니다 까다로운 일이지, 그렇지? 우리는 종종 사용자가 양식을 작성하는 것을 보았습니다 그들이 제공 되었다면 그들이 가입하기로되어있을 때 서명하고 있었고, 그 반대 아마 우리 모두에게 일어난 일입니다

그래서 우리는 더 나은 경험을 발견했습니다 사람들에게 로그인하거나 등록 할 수있는 옵션이 주어졌습니다 그 단어들은 매우 달랐고, 그것들을 구별 할 수 있었고, 우리는 그들을 올바른 길로 끌 수 있습니다 그래서 그들은 그 혼란에 빠지지 않았습니다 우리는 등록 및 신원에 대한 솔루션을 많이 보유하고 있습니다

Google에서 우리는 전체 ID 플랫폼을 가지고 있습니다 내가 너를 보라고 권하고 싶다 기본적으로 인증 시스템입니다 몇 가지 구성 요소와 다양한 선택 사항이 있습니다 만들다

그래서 이들 중 하나는 Android 용 로그인입니다 사용자가 동일한 자격 증명으로 로그인 할 수 있습니다 그들은 Google에서 사용합니다 전체적인 의도는 그 과정을 더 많이 만드는 것입니다 쉽고 간단합니다

그 이야기는 다른 방법이 있습니다 암호 인증을 마찰없는 경험으로 만드십시오 우리 모두는이 상황에 처해있었습니다 우리에게는 효과가 없으며 모바일에서는 상당히 고통 스럽습니다 비밀번호를 계속 입력하면 작동하지 않습니다

앱에서 더 악화 될 수 있습니다 이 곳이 사람들이 돌려 보내진 곳이라는 것을 알았습니다 모바일 웹에 연결 했지, 그렇지? 그럼, 당신은 다시 그 고리에있어, 그리고 그것은 더욱 악화되고 있습니다 그래서 우리는 하나의 솔루션에 대해 이야기했습니다 사람들이 로그인 할 수있게 해줍니다

우리가 보았던 또 다른 하나는 훨씬 더 대중적이되고 있습니다 지문 입력이고, 우리의 연구에서, 사람들은 이것에 대해 꽤 행복했습니다 그들은이 일을 아주 많이 좋아했습니다 그래서 나는 이것이 좋은 것으로 생각합니다 또한 구현 세부 정보가 더 있습니다

여기서 지원되는 장치에서 지문 스캔을 사용합니다 그리고 Smartlock은 우리의 정체성 시스템의 또 다른 부분입니다 그것은 당신이 자동으로 사용자에게 응용 프로그램에 로그인 할 수있게하고, 그들이 저장 한 자격 증명을 사용합니다 그것은 또 다른 좋은 것입니다 이 연합 신원 조항의 일부 그리고, 만약 당신이 사용자들과 멀리 떨어져 있지 않다면, Sign-in Hints도 있습니다

우리에게 자격 증명 API를 사용하십시오 로그인시 사용자에게 힌트를 줄 수 있으며, 사용자 이름과 이메일 주소 모든 것은 서명 허들과 같은 쉬운 일종의 방식으로 이루어집니다 그래서 폼 엔트리 양식 입력에 대해 디자인에서 이야기했습니다

년과 년 동안 우리는 데스크톱 양식 입력 작업을 많이했는데, 우리가 모바일 웹에 갔을 때, 우리는 다시 모든 것을 다시 배우어야했습니다 그 양식들이 실제로 정말로 작고, 양식을 작성하기 위해 확장해야합니다 항상 앱으로 조금 더 나아졌습니다 우리가 양식을 디자인했기 때문에 모바일 장치의 구매부터

그러나 나는 말하기를 기쁘게 생각한다, 나는 우리가 먼 길을왔다라고 생각한다 그러나 우리 연구에서 보았던 것들이 아직도 있습니다 개선 될 수있다 그래서 저는 이것을 사용자 친화적 인 형태로 분류했습니다 내가 본 것들 중 몇 가지는 여전히 사용자가 자신의 업무에 많은 작업을해야하는 일부 앱

여러 다른 필드에 커서 놓기 그들의 전화 번호, 그리고 이런 것들에 대해서, 사용자 측에서 많은 노력이 필요합니다 또한 양식 필드가 어떻게 나타나는지 보려고 지불하지 않았습니다 사용자에게 문제가되었습니다 그 (것)들을 위해 종류를 분류하는 것은 단단했다 그들이 다음에 채워야 할 것의 그들의 정신 모델 그것들은 좌절감을 일으켰고 확실히 마찰적이었습니다

포인트 더 나은 교전은 여기에서 더 많은 일을하고 있습니다 백 엔드에 따라서 사용자가 휴대 전화에 글을 쓰고 싶어하는지 숫자 사이에 대시가있는 숫자, 숫자 사이에 공백이 있으면 아니면 하나의 긴 필드 일뿐입니다 그리고 그것을 만들어라

그것은 우리를 위해 조금 더 많은 일을한다 개발 측면에서,하지만 그것은 사용자가 훨씬 쉽게 사용할 수 있습니다 그들이하는 일을 이해하고, 오류가 반환되지 않습니다 또한 오류가있는 곳에서도 인라인을 제공합니다 정말 도움이됩니다

여기 앱에는 양식을 현장으로 옮기는 정말 좋은 직장 사용자가 정보를 입력하면 이는 사용자에게 매우 유리한 결과였습니다 따라서 멋진 텍스트 필드를 만드는 방법에 대한 많은 정보가 있습니다 머티리얼 디자인을 통해 서로 다른 측면에 대해 많은 이야기 좋은 양식을 만드는 것 특히 장소에 대해서는 지역 정보 자동 완성 기능을 사용할 수 있습니다

Places API의 일부로 다시, 그리고 이것은 이러한 형태로 채우는 데 정말로 도움이 될 수 있습니다 위치가 필요한 필드 양식 디자인의 또 다른 측면은 키보드와 일치하는 것입니다 필요한 텍스트 입력 이것은 꽤 잘 알려진 일이며, 그러나 우리는 여전히 잘 수행하지 못하는 중요한 앱을 보았습니다

따라서 사용자가 신용 카드에 커서를 올리면 필드에 추가하고 앱에이 항목이 있다면 너는 그것을 조사해야한다, 그것이 옳은 일을하고있는 것인가? 이 예에서는 여기에 올바른 일을하지 않습니다 사용자는이 키보드를 그대로두고, 올바른 키보드를 얻을 수있는 방법이 없습니다 대개는 아니지만, 여기에 숫자 키를 치고 나서 그들은 상단에 숫자가있는 키보드를 갖게 될 것이고, 적절하게 설계하는 것과는 대조적으로, 한 번 커서가 안에 있으면 그 (것)들을위한 숫자 키보드 이렇게 작은 것들, 양식에있는 모든 작은 것들 실제로 추가하고 양식 디자인을 체크 아웃하십시오 이런 식으로 사람들에게 정말로 도움이됩니다

입력 방법 지정에 대한 정보가 있습니다 이 링크에서 찾을 수있는 키보드 유형과 올바른 키보드 그런 다음 마지막으로 유용성과 이해력을 살펴 보겠습니다 이것들은 당신이 할 수있는 작은 것들입니다 우리가 우리 연구에서 보았던 것, 애플 리케이션을 통하여, 사용자들에게보다 자연스러운 경험을 제공합니다

우수한 사용자 경험을 보장하는 데 중요 할 수 있습니다 사용자가 걸려 넘어 지거나 경험을 포기하지 않는 경우, 언제든지 이것은 텍스트 레이블 및 시각적 키 제공에 관한 것입니다 시각적 정보를 명확히하기 위해 그래서 이전에 이것을 보았습니다 제 이야기에서 저는 시각적 인 열쇠가 빠져있었습니다

그 그림 속의 파도가 필요해 호텔의 방향을 이해하는 데 도움이됩니다 이 예제를 보자 몇 순간을 가지고 자신을 결정하십시오 그 아이콘이 나타내는 것이라고 생각하는 것

그들 중 일부는 아마 다른 사람들보다 분명합니다 답을 봐야할까요? 여기에 우리가 간다, 그래서, 그것은 나의 여행, 책, 클럽, 그리고 계정이다 누구가 그 (것)들을 맞았 는가? 나는 아마 계정이 그렇게 나쁘지 않았다고 생각한다 그러나 우리가 본 교훈은 다시, 나는 그것이 지나친 일반화라고 생각한다 우리가주는 규칙은 아이콘이 모호하고, 텍스트 레이블이 꼭 필요합니다

문제는 말하기에 때 아이콘 모호하다 우리 모두는 서로 다른 수준을 가지고있다 이해와 관련하여 너는 내가 생각하기에, 너의 많은 아이콘들 애매하게 될 것입니다 나는 당신에게 모범을 줄 수있다

따라서 필터 아이콘을 알 수 있습니다 이런 식으로 보이니? 그렇게 보편적이라고 생각할 수 있습니다 그것은 아주 다른 방식으로 그려집니다 많은 다양한 앱에서 보편적으로 사람들 사이에서 이해되는 것을 발견하지 못했습니다 그래서 나는 우리가 우리의 수준을 바꿔야한다고 생각합니다

앱의 아이콘 수와 관련하여 설정 라벨이 필요한 사람들, 사람들이 그것을 이해할 것입니다 그리고 이것은 매우 훌륭한 곳입니다 간단한 AB 테스트를 수행하고 레이블 제공 여부와 차이점 레이블을 제공합니다 여기에 구현 세부 정보가 있습니다 단추에 텍스트와 아이콘을 사용하려는 경우

그래서 그걸 가지고 있다면 그리고 라벨을 붙이는 것에 대해 이야기하고, 항상 저를 깨닫게 해줍니다 내 응용 프로그램에 액세스 할 수 있습니다 여기에는 많은 가이드 라인이 있습니다 응용 프로그램에 액세스 할 수 있는지 확인하십시오

그리고 오늘 내가 들어가야 할 마지막 원리 컨텍스트에서 사용 권한을 요청합니다 그래서, 이것은 우리가 Android M으로 가능하게 한 것입니다 하지만 우리는 여전히 상당수의 앱을보고 있습니다 그것을 이용하고 있지 않다 잠시 동안 iOS가 가능할 수있었습니다

지금도 따라서이 예에서 사용자는 다운로드 및 응용 프로그램을 열고 그들은 즉시 묻습니다, 위치를 사용할 수 있습니까? 그래서 아마이 앱은 그들에게 제안되었습니다 다른 누군가에 의해 그들은 오, 이것이 정말 좋은 앱이라고 말했다 당신이 가정 장식에 대해 배우고 싶다면, 그리고 그것은 당신이 살 수있는 몇 가지 정말 멋진 것들을 가지고있어

그러나 우리와 비슷한 방식입니다 문제가되는 등록을 생각 하겠지? 당신이 그것을 앞쪽에 요구할 때 넘어서 오는 장애물입니다 이것은 사용자에게 똑같습니다 개발자들이 말하는 것처럼, 내 위치를 알려주는 것과 같습니다 내가 너에게 다른 것을주지 않기 전에, 그렇지? 사용자는 종종 '아니오'라고 말하려고합니다

그들은 왜 그 이유를 정말로 이해하지 못하기 때문에 그들은 단지 당신의 앱을 둘러보고 싶었습니다 그래서, 그걸하는 더 좋은 방법입니다 안드로이드 M 때문에 지금 할 수 있어요 런타임에 컨텍스트에서이를 수행 할 수 있습니다 이 예에서는 매장을 검색하는 사람들이 있습니다

사용자가 자신의 동기 부여가 있기 때문에 훨씬 나아질 것입니다 권리? 그들은 그 가게를 찾을 수 있기를 원합니다 그 다음에 일어나는 일은 그들에게 더욱 분명합니다 뒤에 오는지도가 있고 그것 묻는다, 위치를 사용할 수 있습니까? 음, 물론 그렇게 할 수 있습니다 권리? 너는 받아 들일 확률이 훨씬 높다

당신이 문맥에서 묻는다면 우리는 이것을 위해 많은 자원을 가지고 있습니다 우리는 작은 비디오와 구현 세부 사항이 있습니다 런타임에 사용 권한을 요청할 수 있는지 여부 그리고 그것은 단순히이 원칙에 불과합니다 왜냐하면 많은 사람들이 그것에 대해 알고 있음을 알고 있기는하지만, 우리가 최근에 공부 한 앱에서 많이 보았습니다

그것이 여기있는 이유입니다 그래서 내가 원칙의 끝으로 나를 데려다 준다 너와 갈거야 각 장을 살펴 보았습니다 이러한 원칙을 온라인에서 더 많이 찾을 수 있습니다

그들은 모두 Google에서 생각할 때 온라인 상태입니다 그리고 여기 당신과 관련된 짧은 링크를 만들었습니다 원칙에 향상된 모바일 사용자 환경 사실 여러 가지 원칙이 있습니다

내가 무엇이 있는지 말해 줄께 모바일 앱 원칙, 새로운 설정 25 가지 모바일 원칙 중 새 집합이 있습니다 소매업을위한 25 가지 원칙 – 웹과 앱 모두입니다 다시 한 번 연구를 했으므로 그 정보는 그런 다음 모바일 웹 원칙이 있습니다 이전에 게시 한 내용, 이미 보았을 수도 있습니다

이 링크의 모든 링크는 동일한 링크입니다 더 자세한 구현 정보가 필요한 경우 모바일 웹 사이트에서 우리의 웹 펀더멘털의 일부이기도하다 사이트 및 그 곳에서 제공 한 특정 링크 추가 개발자 구현 세부 정보를 제공합니다 내가 가기 전에 한 가지 더 이야기하고 싶습니다 연구의 이야기

그래서이 연구에서, 신용 카드 스캔 기능을 구현 한 지불하기 위해서 이제 우리는 연구에서 소수의 사람들이 전에 그것을 사용했고, 그것을 가로 질러 왔고, 그것을 좋아했다 그러나 이것은 상대적으로 새로운 기술이기 때문에, 우리는 그것을 만난 사람들이있었습니다 처음으로 이제 스캔이라는 단어에 대해 생각하면 가장 친숙한 단어입니다

경험, 나는 생각한다, 단어 스캔과 더불어, 내가 식료품 가게에 가서 신용 카드를 스캔 할 때입니다 권리? 그리고 바로 옆에 내 신용 카드를 걸고 있습니다 음, 다른 기계를 통해 퍼팅, 정말, 그게 스캐닝 내가 스캔이라는 단어를 알고있는 또 다른 곳 사진 복사기에 종이 넣고있다 더 오래 전의 일이지만 여전히 스캔, 서로의 위에 뭔가를 가하고

따라서 사용자는이 요청을받습니다 신용 카드 스캔 그것은 스캔이라는 단어를 사용하는 것입니다 그리고 만약 당신이 그들을 번역하려한다고 상상한다면, 종종 가장 먼저 묻는 것은, 우리 카메라를 사용할 수 있을까요? 음, 카메라가 할 일은 무엇입니까? 내 신용 카드를 스캔하는 중입니까? 음, 아마도, 나는 그것을 이해하지 못한다 그래, 그래, 내 카메라를 사용할 수있어

그런 다음 여기에 신용 카드를 보관 해달라고 요청합니다 자동으로 스캔합니다 좋아요, 지시에 따라 놀라지 마시고, 우리는 연구에서 세 사람이 이것을 보았다 그리고 그들은 기다리고 기다렸다 그들은 대단히 실망했다

그들은 지불하는 것이 아주 간단한 방법이라고 생각했기 때문에 그리고 이것은 단지 이해에 관한 것입니다 우리가 사람들에게하고 싶은 것과 사용하고있는 언어 간단하고 사용하기 쉽습니다 불행히도 우리는이 모든 것이 효과가 있다고 생각합니다

아직 작동하지 않습니다 그러나 그것은 말이 맞습니다 그들이하는 일, 그들이 무엇을하도록 지시 받았기 때문에 그래서 다시, 나는 그 시점으로 돌아 간다 사용자를 이해하고있는 앞에서 만든 경험, 끝에서 끝까지

흐름과 고통의 포인트를 이해합니다 정말 중요합니다 네가 경험을 쌓기를 원하기 때문에 당신은 당신의 사용자를위한 정말 좋은 앱 경험을합니다 사용자가 좌절하지 않는 곳, 좌절감의 종류가 아니라 내 앱을 사용한 후에 느낌이 들었고 내 호텔 방까지 갔다

내 창문에서 그 주차장을 봤어 앱 경험을 할 수 있기를 바랍니다 사람들이 인생이 정말로 마찰이없는 것 같은 느낌을 갖게한다 해변의 경치와 더 비슷합니다 그래서 저는 여러분에게 세 차례의 테이크 아웃을 해드 리고 싶습니다

그리고 이것들은 생각할 수있는 세 단계입니다 이 이야기 이후에 대해 앱을보고 앱을 감사합니다 25 가지 원칙에 위배된다 간단히 말해서, 우리는 이러한 경험들 각각에서 무엇을하고 있으며, 그리고 그것을 측정하고 있습니까? 그게 너에게 길고 긴 길을 가져다 줄거야

하지만 앱도 독특합니다 맞습니까? 따라서 주요 사용자 여정을 실제로 이해해야합니다 그 붕괴 지점을 이해하십시오 내 호텔 앱에 내가 제공 한 것 정말 흥분 되긴했지만 내게서 깨진 점들 결국에는 잘 작동하지 않게되었습니다

그리고 나서 마침내, 당신 자신의 사용자 테스팅에 대해 생각해보십시오 Google Ventures의 가이드 사용자 연구를 위해 많은 자원을 제공합니다 실제로 작은 규모의 방법으로 사용자 테스트를 수행하면 당신이 제공 한 좋은 것들을 볼 수 있도록 앱에서 축하하고 고통을 식별 할 수 있습니다 귀하의 애플 리케이션에 포인트, 그래서 당신이 그들을 해결하는 방법에 대해 생각할 수 있습니다 시간 내 주셔서 감사합니다

[음악 재생]

Android Performance: UI (Google I/O '17)

[음악 재생] CHET HAASE : 와우, 미온 한 박수 고맙습니다

크리스 크랙 : 제 이름은 크리스 크레이크입니다 나는 안드로이드 UI Toolkiit에서 일한다 CHET HAASE : 나는 Chet Haas입니다 나는 또한 안드로이드 UI Toolkit 팀에서 일한다 그리고 오늘, 우리는 공연에 관해서 이야기하지 않겠습니까? 우리가 퍼포먼스 토크를한지 얼마되지 않았습니다

그래서 우리는 다시해야한다고 생각했습니다 우리가 공연에 관해서 이야기하기를 좋아하기 때문입니다 올해의 퍼포먼스 토크에서, 우리는 그것을 좀 더 유스 케이스 중심으로 만들고 싶었습니다 렌더링이 어떻게 작동하는지 조금 알려주세요 우리가 만든 변화들 중 일부는 성능 향상을위한 또한 실제로 어떻게 할 것인지에 대한 몇 가지 단계를 거칩니다

jank이 무엇인지 알아보고, 응용 프로그램에서 그것을 수정하는 방법 그러자 UI 성능, 이봐, 너 거기 간다 그래서 우리는 초당 프레임, FPS에 대해 이야기합니다 정말 좋은 통계입니다

무엇을 이해할 수있는 좋은 방법입니다 귀하의 신청서에서 진행됩니다 그러나 실제로 기간에 대해 생각하는 것이 좋습니다 권리? 따라서 초당 프레임 수는 적지 않습니다 솔직히 디스플레이는 초당 60 프레임을 맞고 있습니다

항상 그리고 나서 같은 숫자의 명중을 정렬해야합니다 응용 프로그램에 대한 초당 프레임 수입니다 그러나 기간에 대해 생각하는 것이 좋습니다 각 프레임이 복용하고 있습니다

그 프레임이 실제로 그리는 데 얼마나 걸리나요? 너는 그 창문 안에 들어 가지 않을거야 당신이 너무 오래 적응하지 못하면 따라서 응용 프로그램에서 jank를 수정하려면, 애매한 부분을 고치고 싶다면 언제 당신은 그 목록을 내미는 것입니다 중간에 프레임이 건너 뛰었습니다 사용자가이 janky 동작을보고 있습니다 고정하는 것은 단순히 프레임을 고정하는 것을 의미합니다

너무 오래 걸린다 또한 일관성에 대해 생각하는 것이 좋습니다 60 프레임을 가질 수 있다면 좋습니다 대부분의 경우 초당 하지만 가끔씩, 여러 프레임을 떨어 뜨리는 경우 연속적으로, 그것은 좋지 않다

당신이 정말로 원하는 것은 일관된 행동입니다 그래서 짐을 쫓는 것은 당신이있는 곳을 찾는 것입니다 그것들을 버리고 당신이 그것들에 기여하는 병목 현상을 수정합니다 그럼 시간에 대해 이야기 해 봅시다 앞으로 나아갈 시간을 살펴 보겠습니다

왼쪽에서부터, 오른쪽으로– 미안, 왼쪽에서 오른쪽으로 – UI 공간에서 어떤 일이 일어나는지 살펴보십시오 따라서 이러한 수직 새로 고침 동기화에 대해 생각해 보면, 매 16 및 2/3 밀리 초마다, 일반적으로 일반적인 디스플레이에서 Vsync 요청을 받고 있습니다 권리? 이것은 프레임을 게시하는 하드웨어 종류입니다 화면에 사용자가 뭔가를 볼 때입니다

60 초를 60, 16 2/3으로 나눈 값으로 나눕니다 나중에 필요할 때 수학을 끝낼 수 있습니다 그런 다음 프레임을 각 프레임에 매핑하면 이러한 각 프레임, 이 회색 상자는 게시물을 게시하기 위해 애플리케이션이 수행하는 작업 그 정보를 화면에 표시합니다 이상적으로, 모든 것들은 해당 프레임에 대해 일어날 필요가있는 것은 16 및 2/3 밀리 초 나는 그 말을 그만둬야 해

나는 16 밀리 초를 말할 것이고 너는 그것을 해석 할 수있다 그러나 당신은 원한다 내가 손으로 직접 그린 아름다운 아이콘 화면 맨 아래로 가면 사용자가 볼 수 있습니다 그래서 각각의 수직 동기화에서, 그들은 하드웨어 버퍼가 무엇이든간에보고 있습니다 님이 화면에 게시 중입니다

그래서 그들은 거기에서 그것을 볼 것입니다 하지만 문제가 생기면 렌더링, 프레임 중 하나가 너무 오래 걸리는 경우, 사용자는 그것을 보지 않을 것입니다 그들은 그들이 무엇을 정확히 볼 것입니다 이전 프레임에서 본 것입니다 귀하의 신청서에 너무 오래 걸렸습니다

당신은 프레임을 건너 뛰었습니다 그래서 그것은 jank입니다 그것이 우리가 분석하고 고치려고 노력해야 할 자국입니다 그러니 조금 뒤로 물러나서, 좋아, UI 툴킷에서 실제로 렌더링이 어떻게됩니까? 앱의 관점이 있습니다 당신의 응용 프로그램에서 계속 진행하면 프레임 워크가 실제로 무엇인지 살펴보십시오

너를 대신해서 여기 간단한 코드가 있습니다 나는 계속해서 돌아다 보니, 알았다 그래서 화면에서 볼 수있다 여기로

여기 간단한 코드가 있습니다 우리는이 색깔을 가지고 있습니다 상황이 지금은 밝은 회색입니다 그리고 사용자가이 사용자 정의보기의 중간에 클릭하면, 우리는 색을 바꿀 것입니다 우리는 그것이 필요하다는 견해를 말할 것입니다

무효화하려면 새 색상으로 다시 그리기 따라서 사용자가 화면을 클릭하면 onclick 메서드에 이벤트를 보내고, 우리는 상황을 바꿀 것입니다 그러면 우리는 무효화 할 것입니다 무효화하면 이후에 onDraw가 호출됩니다 일련의 일이 아닙니다

그것은 onDraw를 직접 호출하지 않습니다 하지만 시스템에 알려주면, 다시 그려야합니다 그리고 나중의 호출은 onDraw 메소드로 필터링됩니다 그런 다음 onDraw가 캔버스에 그립니다 그것은 결국 화면에 게시됩니다

UI 툴킷이 제공하는 모든 작업을 통해 너를 대신해서 그래서 플랫폼 관점에서, 무슨 일이 일어나고 있는지 한 줄에 여러 가지가 있습니다 무엇보다도, 주어진 프레임에서, Vsync 요청을 받으면 입력을 처리합니다 따라서 사용자가 클릭 한 경우, 사용자가 스크롤하는 경우 우리가 그 정보를 얻는 곳입니다 그것을 바탕으로 무언가를하십시오

애니메이션이있는 경우, 애니메이션이있는 경우 그 스크롤 목록을 놓아 줘요, 지금은 그냥 뛰어 다니고 있습니다 이벤트를 게시하여 목록으로 업데이트되도록합니다 공간에서 움직이거나, 화면에서 화면을 움직이는 것처럼, 우리는 그 애니메이션 이벤트를 처리합니다 속성을 변경합니다 그게 무효화되어 적절하게 다시 그려 질 수 있습니다

그런 다음 필요한 경우 레이아웃을 수행합니다 따라서 애플리케이션에서 변경된 사항이 사물, 크기 또는 위치를 변경하고, 그것이 우리가 측정하고 배치 할 때입니다 다시 변화해야 할 일, 무효화 및 다시 그립니다 그리고 나서 우리는 실제로 우리가 기록적인 무승부라고 부르는 것을합니다 이것이 이전 슬라이드에서 우리가 보았던 것입니다

onDraw 메서드에서 여기가 네가 무엇이든 할 수있는 곳이야 우리가받은 드로잉 작업을 원한다 내부적으로 저장합니다 캔버스, 새로운 색을 그려보세요

그래서 당신은 우리가 다음에 그릴 수 있도록 후드 아래에서 옳은 일 그리고 마지막으로 렌더링합니다 이것이 바로 우리의 무대입니다 그래서 처음 네 단계에서 모든 것을 할 수 있습니다 코드에서, 또는 표준보기에서, 우리는 그것을하고 있습니다

그리고 우리는 렌더링을 처리합니다 그리고 그것은 기본적으로 변형입니다 우리가 쓴 무엇이든 아래층에서해야합니다 나는 너에게 힌트를 줄 것이다 OpenGL 또는 GPU 명령으로 바꾸고, 그런 다음 우리는 GPU에 보냅니다

우리가 아름답고 빛나는 색채를 보면 몇 가지 다이어그램에서 사용하려고합니다 우리는이 다섯 단계를 가지고 있습니다 그래서 특정 프레임에서 지루한 회색 상자가 있습니다 실제로 다른 단계로 나뉘어져 있습니다 앞의 예제에서, 간단한 애플리케이션 코드에서, 우리는 거기에 모든 단계가 없었기 때문에 레이아웃이 필요하지 않았습니다

우리가 한 모든 일은 색을 바꾸는 것이 었습니다 그래서 우리는 onclick에 대한 정보를 얻었습니다 캔버스 작업의 기록을 그렸습니다 새 색상을 그리고 나서 그 결과로 생긴 렌더링 작업 전형적으로 – 그래, 슬라이드에서 말하는 것처럼

전형적인 어플리케이션에서,보다 일반적인 프레임, 그러면 거기에 모든 단계가있게 될 것입니다 따라서 우리는 일부 입력과 일부 애니메이션을 처리 할 수 ​​있습니다 일부 레이아웃 및 레코드를 작성한 다음 렌더링합니다 그리고이 모든 일들이 연속적으로 일어나고 있습니다 그래서 이것은 작업 순서입니다

실제로 실제로 두 개의 스레드가 있습니다 우리가 렌더링 스레드를 가지고 나온 롤리팝처럼 기술, 이전에 우리가 얘기했던, 우리가 처리하는 곳 모든 응용 프로그램 공간이 계속 진행됩니다 응용 공간에서 처음 네 단계, 또는 UI 스레드에서 그리고 나서 우리는 실제로이 분리 된 실을 가지고 있습니다 렌더링을 처리합니다

그것들은 여전히 ​​연속적으로, 순차적으로, 렌더링 스레드가 무엇을 알지 못하기 때문에 당신이 말할 때까지 렌더링 할 수 있습니다 그러나 렌더 스레드는 다른 것들을 비동기 적으로 수행 할 수도 있습니다 UI 스레드에서 그래서 우리는 원자 애니메이션의 일부를 보낼 수 있습니다 그 동안에 처리 할 수 ​​있습니다

그러나 일반적으로 UI 스레드에서 이러한 모든 작업을 수행합니다 그런 다음이 정보를 렌더링과 동기화합니다 스레드를 생성 한 다음 해당 스레드에 스레드를 렌더링하고, GPU와 대화를 처리합니다 따라서 잘 작동하는 응용 프로그램에서 전형적인, 이것이 스크롤링 또는 핑거링 상황이라고 가정 해 봅시다 응용 프로그램에서 물건이 잘 작동하고, 그리고 비교적 빨리 그릴 수 있습니다

이것은 상황이 어떻게 생겼는지입니다 다시 말하지만, 하단의 아름다운 눈 아이콘, 사용자가 프레임이 발생하는 것을보고, bam, bam, bam, bam, 모든 것이 16 밀리 초의 장벽 내에서 발생합니다 그러나 전형적인 janky 상황에서 갑자기, 뭔가 더 오래 걸렸다 여기에서는 입력 명령이 훨씬 오래 걸리는 것을 볼 수 있습니다 따라서 사용자가 클릭 할 때 비용이 많이 드는 작업 수행되었다

누군가 웹 서비스 호출을했습니다 또는 일반적으로보기를 만들었거나 바인딩했습니다 당신은 비싼 수술을 했어요 우리에게 많은 일을 시켰고, 시간을 밀었습니다 당신이 그 모든 일을 기록하는 데 지출하고 있다고 작업

그런 다음 렌더링 작업이 반드시 미끄러졌습니다 다음 프레임으로 이동하고, 사용자 장벽에 부딪치지 않았기 때문에 그 의견을보고 싶지 않았습니다 그래서 그것은 우리가 고치기를 원하는 재앙입니다 좋아, 움직여 보자 너는 무엇에 관해서 말하는 걸까? 응용 프로그램에 문제가 있습니다

쳇이 묘사 한대로, 지금 어떤 일이 일어날 지 알 것입니다 프레임이 너무 오래 걸리는 경우 우리가하는 과정에 대해 이야기 해 봅시다 de-janking이라고 불리우는 것, 당신의 신청서를 밟는 것, 이러한 문제를 찾아 내고 수정합니다 따라서 귀하의 신청서를 취소하는 첫 단계 release-ish 빌드를 실행하는 것입니다

그래서 저는 그것이 의미하는 바는 make 디버깅을 실행하고 있는지 확인하십시오 디버깅을 사용하여 실행중인 경우, 호는 다른 수표를 추가해야합니다 약간의 시간을 추가 할 수있는 검증 단계 결과를 조금 왜곡하십시오 따라서이를 무시하거나 테스트하는 것이 좋습니다 실제 릴리스 빌드

두 번째 단계는 앱을 시각적으로 검사하는 것입니다 목록을 스크롤하면서, 어떤 깡통이 생기고, 시각적으로 감지하면, 애니메이션을 보면 분명히 앱에서 가장 핵심적이고 중요한 부분부터 시작하십시오 많은 사람들이 기본 스크롤 목록을 가지고 있습니다 시작하기 좋은 곳 당신이 일종의 사람이되면 당신이 방금 볼 수 있다면, 오, 잘, 그것은 나에게 잘 보이지만, 프로필 GPU 렌더링을 사용하도록 설정할 수 있습니다

그리고 너에게이 모든 막대를 줄거야 아래쪽에, 당신에게 말할 것입니다 특정 임계 값을 통과하면 일어나고 있을지도 모르는 것에 관해 당신에게 작은 암시를 줘라, 색상에 따라 온라인에 관한 문서가 있습니다 하지만 진짜 다음 단계는, 그 후, 당신은 어떤 양동이를 보았습니다, 너 오, 그래,이 물건들이 화면에 나타날 때, 또는 UI의이 특정 부분을 처음로드 할 때, 너는 상호 작용이 무엇인지 알아 낸다

그리고 당신이 말한다, 좋아, 다음에 무엇을해야합니까? 음, 다음 단계는 일반적으로 Systrace입니다 Systrace는 SDK에있는 도구이며, 플랫폼 도구 디렉토리에 있습니다 당신은 또한 GitHub에서 꺼낼 수 있습니다 당신은 절대 가장 신선한 버전을 원한다면 그래서 여기에서 우리는 매우 빠른 라이브보기를 할 것입니다

Systrace가 실제로 어떻게 생겼는지를 통해 그래서 이것은 당신이 끌어 올 때 볼 수있는 것입니다 처음으로 Systrace 그래서이 특별한 예에서 나는 내 애플 리케이션에서 RecyclerView를 통해 스크롤 그리고 오, 저 jyy 프레임이 있습니다 나는 시각적 인 말더듬이를 볼 수있다

그래서 나는 그 시간 동안 Systrace를 잡았습니다 그리고 이제 나는 Systrace를 시작합니다 오, 세상에, 여기에 많은 정보가 있습니다 소음이 많습니다 정말보기가 어렵습니다

무엇을보고 있어야합니까? 무엇보다 먼저 할 수있는 일 여기 왼쪽을 볼 수 있니? 알았어, 알았어, 음, 커널이 있고, 잠재적으로 다른 프로세스가 있습니다 내가 뭘할지 알아? 나는 지금 다른 모든 사람들을 무시할 것이다 상단 프로세스까지 아래로 스크롤하겠습니다 지금 당장 볼 수있는 유일한 것 내 패키지, Androidjanktown입니다

사실, 그 이상으로 나아갈 수도 있습니다 여기 왼쪽에서 볼 수 있습니다 이것은 사실, 개별 스레드를 알려줍니다 우리가 신경 쓰는 것 쳇이 말한 것처럼 여기서 중요한 두 개의 스레드입니다

내 응용 프로그램의 UI 스레드와 렌더링 스레드가 있습니다 그래서 나는 더 아래로 스크롤 할 것입니다 내가 볼 수있는 모든 것까지, 화면 맨 위에, 그게 대부분입니다 그래서 매우 높은 수준에서, 그냥보고있는 것입니다 이 흔적에서, 그것에 대해 많이 알지 못하고, 나는 말할 수있다, 좋아,이 추적의 시간은 왼쪽에서 오른쪽으로 간다

가장 왼쪽에 0 초가 있습니다 더 멀리 나아가 그리고 당신이 특정한 세부 사항을 볼 수없는 경우에, 그것에 대해 걱정하지 마십시오 나중에 확대 된 일부 스크린 샷을 보겠습니다 그러나이 매우 높은 수준의 견해에서조차도, 나는 말할 수있다, 제로, 나는 작은 작은 조각을 많이 얻는다

여기,이 작은 맥박 이들은 프레임입니다 큰 확인 그것의 대부분은 믿을 수 없을만큼 일관되게 보입니다 정말 매끄럽게 보입니다

정기적으로 반복됩니다 그러나 여기에는 몇 가지 큰 시각적 우수성이 있습니다 그리고 이것은 종종 드 janking 무엇입니까 이 특별한 뛰어난 프레임을 찾고 있습니다 조사하고 있습니다 여기를 확대하면 시작할 수 있습니다 정확히 틀린 부분을 보면서 주변을 클릭하고 알아낼 수 있습니다

정확히 무엇이 문제인지 그리고 당신이 그것을 볼 수 있도록, 우리는 슬라이드로 돌아가서 당신에게 보여줄 것입니다 특별히 스크린 샷 이것은 간단한 프레임 중 하나입니다 상당히 의미심장하게, 우리가 이전에 보았던 것 매우 빈번하고 매우 규칙적인 펄스처럼

이제 이것들은 매우 좋았습니다 그들은 전에 작은 작은 조각처럼 보였습니다 그러나베이스 라인이 무엇인지 살펴보기 위해 먼저 살펴 보겠습니다 그래서 우선, Systrace에 관한 까다로운 것들 중 하나 여기에 많은 데이터가 있습니다 클릭해야 할 것이 많습니다

하지만 멋진 기능 중 하나는 이러한 UI 스레드의 대부분 구성 요소, 그것을 클릭하십시오, Systrace 당신에게 그것을 설명하려고 최선을 다할 것입니다 따라서이 특정 유형의 UI를 클릭하면 이것은 가장 많이 추적되는 섹션을 의미합니다 이것은 UI 스레드 작업을 나타내는 가장 큰 청크입니다 Systrace UI의 맨 아래에서 클릭하면, 오, 알겠습니다 안무가는 안무가입니다

그리고 사실 여기에서 문서로 연결됩니다 dandroidcom에서 Choreographer가 어떻게 설명되는지 공장 마찬가지로, 내가 드로잉 프레임을 내려다보고 싶다면, 그것은 프레임의 렌더 스레드 구성 요소입니다

그리고 그것을 클릭하면 비슷한 설명을 얻습니다 모든 종류의 추적을위한 많은 기능이 있습니다 Systrace 전체, 특히 UI 및 렌더링 스레드, 가장 관심이있을 수 있습니다 이제 우리가 물건을 클릭 할 수 있다는 것을 알았으니, 우리는 그런 식으로 조금 더 많은 정보를 얻을 수 있습니다 이 프레임이 어떻게 생겼는지 정확하게 살펴 보겠습니다

뭐하는거야? 그래서 우리가 여기서 제일 먼저 보는 것은 애니메이션 콜백입니다 이 버튼을 클릭하면 애니메이션이 표시됩니다 또는 확대하면 볼 수 있습니다 그리고 저는 이러한 방식으로 진행할 것입니다 이 애니메이션은 Chet와 ​​똑같은 애니메이션입니다

전에 그것에 대해 이야기하고있었습니다 그리고 전에 보았 더라면 많은 프레임이있었습니다 그리고 저는 그것이 RecyclerView라고 말했습니다 따라서 RecyclerView에 대한 한 가지 공통적 인 이유가 있습니다 애니메이션 효과를 발휘하고 있습니다

Flinging 애니메이션 자체는 RecyclerView의 실제를 실행합니다 애니메이션 콜백의 일부로 작업을 번역하고 팽창시킵니다 그리고 Chet가 말한 다른 무대 전에는 기록 그릴입니다 RecyclerView 뷰가 유용하기 때문에 무효화, 주위의 미끄러짐 및 그리기입니다 좋아, 우리는 그것이하고있는 일에 대해 약간의 맥락을 얻는다

그리고 실제로이 부분을 클릭하면 애니메이션 안에있는 애니메이션의 이것은 RecyclerView 스크롤입니다 따라서 RecyclerView 스크롤은 실제로 정말로, 정말로 빠르게 여기에 RecyclerView가 최소한의 작업을 수행하고 있기 때문입니다 사실,이 UI가 차지하는 시간을 살펴보면 프레임은 125 밀리 초입니다

훌륭합니다 전체 프레임은 6 개 미만으로 완료됩니다 축하합니다 이제 우리는 조금 더 느린 프레임을 봅니다 이제이 사람은 실제로 끔찍하지 않습니다

그러나 그것이 이전의 것과 어떻게 다른지 살펴 보겠습니다 그래서 우선, 여기에 측정 값이 있음을 알 수 있습니다 그래서 계층 구조의 어떤 것이 레이아웃을 요청했습니다 재평가 됐어 알았어, 알았어

여기 또 다른 것은 업로드 비트 맵입니다 그래서 RenderThread가 비트 맵을 처음 보았을 때 그것을 표시 할 필요가있을 때, 그것은 GPU에 업로드 될 것이고, GPU가 정말 빨리 그릴 수 있도록 OpenGL에 업로드했습니다 이제 첫 번째 업로드는 약간 비쌉니다 나중에 조금 더 얘기하겠습니다 그러나 실제로, 우리가 그것을 보면, UI 스레드 4 밀리 초가 걸린다

전체 프레임 13 미만으로 끝납니다 이것은 문제가되지 않습니다 이건 괜찮아 그러나 이제는 정말 나쁜 것들을 보도록하겠습니다 이것들은 우리가 멀리에서 본 것들입니다

좋아요, 여기서 분명히 뭔가가 일어나고 있습니다 하지만 네가 새로운 사람이라면, 무슨 일이 일어나고있는거야? 무슨 일이 일어나는지 어떻게 알 수 있습니까? 그래서 실제로,이 부분을 클릭하면, RV CreateView, 설명 할 것입니다 이것은 기본적으로 어댑터의 콜백입니다 onCreateViewHolder에 대한 즉, RecyclerView는 새로운보기가 필요합니다

그리고 그것을 창조하고 있습니다 그리고 실제로, 당신이 바로 아래를 보면, 음, 많은 이유, 많은 시간들 이 CreateView 부분을 차지하고, 그것은 팽창하고 있다는 것입니다 특히 복잡한 물건들로 부풀려지다 내 RecyclerView에서 시간이 좀 걸릴 수 있습니다 글쎄, 그건 불행한 일이다

다음 부분 인 onBindViewHolder에서 밀리 세컨드 반 정도 걸립니다 좋지는 않지만 OK, 그럼 어떻게해야합니까? 알다시피,이 UI 스레드 프레임은 약 20 밀리 초가 걸렸습니다 UI 스레드에서 약 274로 합계 안좋아

우리는 분명히 그 틀을 잡을 것입니다 그래서 이것은 실제로,이 과정입니다 네가 통과 할 수있는 사람이야 그러나이 특별한 경우에, 우리는, 우리가 너를 도울 수있는 뭔가 야 지원 lib와 함께

그리고 이것은 우리가 작업 한 기능입니다 정확히 그 목적을 위해 그럼 돌아가서 조금 얘기합시다 RecyclerView가하는 일 따라서 RecyclerView는 기본 지원 lib 구성 요소입니다

콘텐츠의 동적 목록을 표시하기위한 뷰를 동적으로 보여줄 필요가있다 무한 또는 잠재적으로 스크롤하거나 표시 뷰 계층 구조에 첨부 된 것보다 많은 컨텐츠 그래서 나는 무엇을 의미합니까? 글쎄, 네가이 네 가지 항목을 부분적으로 가지고 있다면 RecyclerView에 표시되고, 스크롤을 시작하고, RecyclerView가해야 할 일은이 네 가지를 처리하는 것입니다 특정 항목 실제로,해야 할 일은 그것들을 아주 약간 상쇄하는 것입니다

그것이 우리가 보는 일의 양입니다 그리고 사실, 기억한다면, 첫 번째 RV 우리가 강조했던 두루마리, 그것은 작았 다 RecyclerView가 거의 수행하지 않았기 때문에 사소했습니다 그러나 일단 우리가이 특정한 목록의 가장자리에 도착하면, 음, 무슨 일이야? 이제 우리는 갑자기 일부 양동이를 볼 수 있습니다 이것은 흥미로운 일이 일어나는 프레임이기 때문입니다

처음으로이 목록에는 5 개의 항목이 있습니다 즉 이전에 재활용 할 품목을 얻을 수 없다는 의미입니다 즉,이 메시지 아이콘을 부풀려 야합니다 음, RecyclerView가 작동하는 오래된 방법입니다 이제는 어떤 종류의 단순화 된 버전으로 돌아가 보겠습니다

우리는 Systrace에서 보았습니다 다시 한 번 말하지만, 이것은 추방하는 동안 일어났습니다 우리는 완전히 멋지게 보이는 두 개의 프레임을 가지고 있습니다 짧은 UI 스레드 지속 기간 매우 합리적인 RenderThread 기간 마감일 전에 끝났습니다 그러나 갑자기, 당신은 큰 애니메이션 덩어리를 쳤습니다

우리가 알다시피,이 특별한 경우에, RecyclerView가 생성 및 바인딩 작업을 수행하고 있기 때문입니다 작업 그래서 우리는 여기서 재미있는 것을 보게됩니다 RenderThread가 작동 할 때, UI 스레드는 10 밀리 초 동안 완전히 유휴 상태입니다 이 새로운 프레임이 나오기 전에

플링이 예상되는 것은 어렵지 않습니다 계속할 것입니다 제 말은 애니메이션이하는 일입니다 그리고이 작품을 만들어, 실제로 바로 거기에 맞을 수 있습니다 따라서 RecyclerView Prefetch에서이 작업을 수행합니다

우리는 새로운 아이템을 기대하기 시작했습니다 근본적으로 화면에 올거야 그들로부터 도둑질을했다 깨달음, 오, 그게 많은 일을 할거야 저를 조금이라도 훔치도록하겠습니다

내가 인플레이션하러 가자 일찍부터 우리는 필요에 따라 그렇게 할 필요가 없습니다 그리고 이것은 실제처럼 생겼습니다 이 앱은 똑같은 응용 프로그램의 Systrace입니다 내가 한 모든 일은 지원을 업데이트하는 것뿐이었습니다

lib를 사용하여이 기능을 사용하십시오 갑자기 Systrace에서 RV Prefetch 이벤트가 발생합니다 다시 한번 클릭하면 Prefetch 기능에 대해 설명하고, 그것은 무엇을합니다 그리고 와우, 우리가 꺼낸 13 1/2 밀리 초입니다 다음 프레임의 우리는 일을 훔쳐 막대한 시간을 절약했습니다

그리고 이것은 무언가의 위대한 모범입니다 지원 lib가 한 일이지만 절대적으로 프로세스입니다 당신이 훑어 볼 수있는 자신의 응용 프로그램에 문제가 있습니다 지원 lib는 이런 식으로 모든 문제를 해결할 수 없습니다 하지만 좀 더 프리 페치에 대해 이야기 해 봅시다

그래서 몇 가지주의 사항이 있습니다 항목이 실제로 필요하지 않으면 어떻게됩니까? 항목을 프리 페치하면 어떻게 될까요? 그리고 갑작스럽게, 그 항목 바로 앞에 화면에 올 때, 사용자는 화면을 탭하기로 결정하고, 날뛰다 멈춰? 별똥별을 멈 추면, 당신이 그 물건을 필요로하지 않으면, 뭔가 다른 것이 들어 오면 마지막 순간에 새 데이터가 도착하면 작업을 잘못 수행했을 수 있습니다 그리고 정말로, 괜찮습니다 시간의 999 %, 프리 페치가 진행 중입니다

올바른 결정을 내리기 위해 그 특별한 경우에 약간의 작업을 낭비 할 수 있습니다 그래도 RenderThread가 없다면? RenderThread가 없다면 프리 페치를 시도하지 마시고, 지금부터 시작하십시오 RenderThread가 대다수의 장치에 있기 때문에, 당신은 무료로 대부분의 장치에서 이것을 얻을 수 있습니다 지원 lib의 최신 버전 만 사용하면됩니다 하지만 오래된 장치에서는이 기능이 작동하지 않습니다

그래서 가용성, 이것은 실제로 얼마 전부터 lib v25가 지원되었습니다 그러나 가장 좋아진 사람들을 포함하여 점점 좋아지고 있습니다 26의 최근 베타 버전 이 기능은 기본 레이아웃 관리자에 내장되어 있습니다

그래서 RecyclerView, horizontal, 수직, 무엇이든간에 선형 또는 시차 또는 격자 레이아웃, 너는 단지 이것을 무료로 얻는다 이것은 최신 지원 lib로 업데이트하는 것입니다 그러나 사용자 정의 레이아웃 관리자가있는 경우, 당신이 완전히 관습적인 것을하고 싶다면, 또는 흥미로운 방식으로 하위 클래스 중 하나를 하위 클래스로 만들려면, 당신이 재정의해야 할 수도 있다는 것을 명심하십시오 이 특정 방법은 인접한 프리 페치 위치를 수집합니다 그리고 이것이 당신의 커스텀 레이아웃 매니저에서, 똑같은 동작을 얻을 수 있습니다

그리고 당신은 구현을 볼 수 있습니다 다른 것들의 그리고 Chet의 멋진 글에서 이것에 대해 더 많이 읽을 수 있습니다 RecyclerView에 대한 프리 페치 하지만 조금 뒤로 물러나서 이야기 해 봅시다

음, 뭐라구? 음, 우리는이 특별한 경우를 보았습니다 버스트 작업 부하를 가진 RecyclerView가 jank를 유발할 수 있습니다 그러나 일종의 이야기하고, 뒤로 물러나서, 무엇을 이야기할까요? 역사적으로 Android와 jank의 문제였습니까? 그래서 우리가 생각한 가장 오래된 것들 중 하나 쓰레기 수거입니다 역사적으로 가비지 수집은 중요한 문제였습니다 Android에서 그러나 이것은 플랫폼 꾸준히 개선되고 있습니다

따라서 alloc에 ​​대한 GC는 ART를 사용하여 L에서 본질적으로 고정되었습니다 나는 수백 개의 흔적을 보았다 나는 무엇보다 가장 막강하게 블로킹 GC를 보지 못했다 앱 할당 GC는 큰 문제가 아닙니다

그러나 여전히 런타임은 계속해서 개선되고 있습니다 런타임은 GC에서 더 좋아지고 있습니다 할당 오버 헤드를 낮 춥니 다 OS 쓰레드 스케쥴링, 이것은 특히 흥미로운 것이다 이전 버전의 커널에서, Android의 이전 버전에서 플랫폼은 언제쯤에 나쁜 결정을 내릴 것입니다

귀하의 신청서를 예약하십시오 이것은 특히 N / O에서 크게 개선되어 왔으며, 하지만 유감스럽게도 커널에만 한정되어 있습니다 그래서 그것은 보장되지 않는다는 것을 의미합니다 모든 N 또는 O 장치에 있어야합니다 그러나 확실히 새로운 장치를 찾으십시오

특별히 스레드 스케줄링을보고 있다면, 작업이 실행 중인지 확인하려는 경우 당신이 그것을 원할 때 정확하게 렌더링은 흥미로운 것입니다 나는 많은 부분을 렌더링 할 때 일한다 렌더링, 특히, 하나의 것들 나는 Chet와 ​​Ramon이 수년 전에 이야기했던 것을 기억한다 View Alpha가되었습니다

보자 렌더링이 겹쳐져있다 설정된 레이어 유형의 하드웨어가 있습니다 어딘가에 내가 기억할 필요가있는 다른 콜백들 잘, 우리는 그것을 개선하려고 노력했다

그래서 우리는 Auto-Hardware layer M을 추가하기 시작했습니다 그것을 무료로 받으십시오 M +, 당신은 여전히 ​​Hardware Layer를 사용할 수 있습니다 그 문제를 피하십시오 그러나 우리는 N, 최악의 상황을 개선합니다

비트 맵 업로드는 다른 하나입니다 일찍 일어난 일에 대해 이야기했다 처음에는 비트 맵을 표시 할 때 상당한 지연이 발생합니다 그러나 우리는 N에 새로운 기능을 추가했다 prepareToDraw 비트 맵에서 비트 맵로드 허용 라이브러리를 비동기식으로 작업을 일찍 시작하려면, 그리고 그것은 그들에 의해 채택되기 시작했습니다

이전에 말했던 것처럼 재활용보기 (View Recycling) 기본적으로 다른 일반적인 원인이었습니다 support lib가 크게 향상되었습니다 그래서 25에 추가, 거기에 와서 더 많은 개선 그리고 돌아가서 ART의 녹음을 볼 수 있습니다 더 많은 것을 배우고 싶다면이 I / O의 세션 ART가 해왔 던 일에 대해서

하지만 나는 그 모든 것을 통과하기를 원했다 그게 당신에게 말하는 것 같아서요 플랫폼이 어떻게 개선되고 있는지, 그리고 저크의 유일한 근원이되는 지점에 도착하는 것 귀하의 응용 프로그램에서 당신이 해결할 수있는 것들입니다 자 료의 출처에 대해 조금 이야기 해 봅시다 애플리케이션에서 발생할 수있는 그게 뭔가로 인해 일어날 수 있습니다

앱 내부에서 잘못되었습니다 그리고 그들 중 많은 수가 있습니다 그러나 정말로 빨리 가자 RecyclerView의 문제는 부 풀릴 필요가있는 RecyclerView 관련 문제, 마지막 순간에 그 일을하고, 느슨하게, 아마도 10 밀리 초 이상을 일으킬 수 있습니다 단일 프레임에서의 작업 하지만 RecylcerView에는 다른 미묘한 문제가 많이 있습니다

불필요한 인플레이션을 유발할 수 있습니다 그리고 그것에 대해 조금 더 이야기하십시오 그래서 비트 맵 그림을 UI 스레드에서, 무승부 콜백의 가장 일반적인 이유 중 하나 매우 길다는 것은 당신이 일부 작업을 캐싱하려고 시도하고 일부 내용을 비트 맵에 캐시합니다 그러나 유감스럽게도 소프트웨어 비트 맵으로 그립니다 특히 그것이 어디에 있든 많은 시간이 걸릴 수 있습니다

화면 크기 근처 캔버스 호출, 몇 가지 캔버스 호출, 즉 경로를 그립니다 당신이 당신의 경로에 자주 돌연변이를 일으키고 있다면, 저비용 일 수 있습니다 그리고 우리는 실제로 자신의 길을 벗어났습니다 이들 중 일부를 문서화하십시오 그리고 나는 이것을 언급 할 것이다

하지만 바인더 예제로 빨리 가자 이것이 가장 좋아하는 조사 중 하나이기 때문에 지난 버전의 Android 실적 팀 바인딩 바인더 문제를 찾고 해결했습니다 따라서 Binder는 Android의 IPC 메커니즘입니다 창 관리자와 대화하고 싶다면, 또는 뷰 계층 구조가 창 관리자와 이야기하고 싶습니다 아마 바인더를 통과 할거야

다른 사람의 콘텐츠 제공 업체와 이야기하는 경우, 만약 당신이 표면 튀김과 이야기하고 있다면, IPC를 통해 이야기하는 경우 아마 바인더를 통과 할거야 바인더에는 추적 기능이 있습니다 불행히도, IPC는 종종 매우 비쌉니다 진실을 말하면 실수로 추가하기가 쉽습니다 귀하의 응용 프로그램에

다음은 Systrace의 특정 스크린 샷입니다 계속 진행되는 바인더 트랜잭션이 많은 RecyclerView 스크롤 중에 당신이 그것을 본다면, 바인더, 바인더, 세상에, 그런 다음 UI에서 다른 콜백을 실행 중입니다 스레드, 많은 바인더를 실행합니다 이 모든 것들이 상당히 중요합니다

21 밀리 초 프레임입니다 인플레이션이 없다 절대적으로 오래 걸리는 일은하지 마라 작업을 수행하는 바인더 오버 헤드 일뿐입니다 UI 스레드에서 실제로 수행하면 안된다

그래서 바인더 추적은 전체적으로 많은 도움을 줄 수 있습니다 Systrace의 최신 버전에서는 기본적으로 설정되어 있습니다 그러나 요약하면 많은 이유가 있습니다 그리고 우리는 그들 모두를 문서화했습니다 d

androidcom/vitals 페이지로 이동하면 이 프리젠 테이션에는 많은 자료가 있습니다 코드로 더 깊이 들어간 예제가 많이 있습니다 예제 등등이 웹 사이트에서

그리고 이제 저는 그것을 다시 돌려 줄 것입니다 성능 유지에 관해 이야기 할 Chet에게 앱에서 CHASE HAASE : 나도 지적해야한다 Chris가 지적한 문서는 새로운 것입니다 방금 게시되었습니다 크리스 크랙 : 그래, 수요일

CHASE HAASE : 사이트의 퍼포먼스 문서를 생각하면, 당신은 어쨌든 그것을 확인하고 싶을 수도 있습니다 훨씬 더 자세하고 자세한 정보 그리고 문서화 팀이 일하고있었습니다 Chris와 같은 엔지니어들과 정말 밀접하게 다른 팀은 그 정보를 얻기 위해 이 드 janking 당신을 도울 정말 정확 하 고 깊은 그래서 당신이 어떻게 발견하고 수정할 수 있는지 이야기 해 봅시다

실제로 앱 성능을 유지해야합니다 그것은 네 단계의 종류로 내려갑니다 당신은 생각할 수 있습니다 하나는 사용자 통계를 수집 할 수 있으므로 실제로 통계 문제가있는 곳 자체 추적을 추가 할 수 있습니다

우리가 모든 Systrace를 볼 때주의해야 할 점은 중요합니다 Chris가 보여준 것들, 그것은 샘플링 프로파일 러가 아닙니다 메소드 호출 당 보이지 않습니다 그것은 귀하의 응용 프로그램에서 일어나는 모든 것들이 아닙니다 그것들은 우리가 계측 한 구체적인 흔적들이다

프레임 워크와 플랫폼 코드, 그래서 Systrace에서 볼 수있는 유일한 것입니다 우리가 실제로 플랫폼에 추가 한 흔적입니다 왜냐하면 우리가 흔적을 추가한다면, 그러면 애플리케이션 속도가 느려질 것입니다 그래서 우리는 그것이 실제로 의미가있는 곳에서 그것을 추가합니다 따라서 실제로 추적 기능을 추가 할 수 있습니다

그 방법을 알려 드리겠습니다 잔크 테스트를 추가 할 수 있습니다 따라서 실제로는 연속 테스트가 필요합니다 변경 사항을 구현할 때이를 알 수 있습니다 그리고 애플리케이션의 새로운 빌드를 가지고 있다면, 그리고 당신의 연기는 사라집니다

네가 의존하는 대신 그걸 알면 좋지 않을까? 사용자가 Play 스토어에서 낮은 평점을 받으면 처음 보는 사람은? 어쩌면 당신은 실제로 지속적인 테스트를 가질 수 있습니다 그걸 네가 잡을 수있어 마지막으로 도구를 사용하십시오 그는 Systrace에서 깊이 들어 봤지만 가치가있다 다른 것들에 대해서 생각해 보라

개발 중일 때 일반 도구 상자의 일부 여야합니다 그래서 내가 지적해야 할 것들 중 하나 사용자 통계를 보면 현재 대시 보드의 스크린 샷입니다 실제로는 이론적 인 스크린 샷입니다 우리는 실제로 회색 박스를주지는 않습니다 그건 의미가 없습니다

그래서 이것은 수요일에 플레이 팀이 준 이야기에서 온 것입니다 다양한 측정 항목에 대해 이야기했습니다 이제 대시 보드에 제공 할 수 있습니다 따라서 계산되고 저장되는 메트릭이 있습니다 기기에서 사용자가 선택하는지 여부에 따라 그 안에 업로드 된 다음 업로드 될 수 있습니다

귀하의 응용 프로그램을위한 귀하의 대시 보드에 대한 정보가 될 수 있습니다 그래서 사람들이 실제로 무엇인지 볼 수 있습니다 jank stats를 포함하여 실제 세계에서 볼 수 있습니다 얼마나 많은 프레임이 들어 왔는지, 그것은 이러한 지속 시간 버킷의 히스토그램의 일종입니다 각 레벨에서 얼마나 많은 프레임이 들어 오는지 그 히스토그램의

따라서 응용 프로그램의 용도뿐만 아니라 아이디어를 얻을 수 있습니다 일반적으로하고 있지만, 방금 업데이트 한 경우에도, 그리고 상황이 더 나 빠졌 으면 좋았을까요? 집계되어 표시되는 정보 Play 대시 보드에서 실제로 내부에서 왔습니다 우리는 플랫폼에서 N 릴리스에 주입되었습니다 프레임 메트릭 그리고 그 주변에는 API가 있습니다

그리고 우리는이 것을 매우 낮은 수준으로 컴파일합니다 그러나 당신은 그것에 대해들을 수 있습니다 이 OnFrameMetricsAvailableListener를 구현할 수 있습니다 그리고 프레임 당 콜백 데이터를 얻습니다 각 기간의 지속 시간은 다음과 같습니다

이 개별적인 것들 네가 생각하면, 네가 GPU 프로필 또는 온 스크린 프로파일 러를 완료하고, 우리는 이전에 스크린 샷을 보았습니다 그 모든 정보 정확히 당신이 얻는 기간입니다 FrameMetricsListener에서 입력은 얼마나 오래 걸렸습니까? 애니메이션은 얼마나 오래 걸렸습니까? 프레임의 총 지속 기간은 얼마나됩니까? 따라서 모든 정보를 얻을 수 있습니다

그것을 집계하여 업로드하십시오 당신의 심장 내용을 분석하십시오 우리는 지원 lib의 v26에서 약간 단순화했습니다 따라서 베타 버전에는 지금이 비트가 있어야합니다 따라서 프레임마다 듣고 지속 시간을 확보하는 대신 그리고 나서 그것들을 집계 할 필요가있다

우리는 당신을 위해 그들을 모아 놓았습니다 기본적으로 지속 기간 버킷의 SparseIntArray를 가져옵니다 히스토그램 그리고 다시, 당신은이 물건들을 컴파일하고 집계 할 수 있고, 기기에 저장 한 다음 업로드하십시오 오프라인으로 분석하도록 선택한 서버 따라서 Play 스토어 대시 보드는 귀하를 대신하여, 전체 응용 프로그램 그러나 특정 흐름을 계측하고 싶다면 귀하의 응용 프로그램에서 정말 당신이 중요하게 느끼기에 민감하거나 중요합니다

그런 다음 프레임 메트릭 항목을 사용하여이를 수행 할 수 있습니다 커스텀 트레이싱 – 내가 말했듯이, 모든 트레이스들 크리스가 보여준 Systrace 예제에서 본 우리가 플랫폼에서 가지고있는 표준 추적이었다 하지만 당신은 자신의 흔적을 추가 할 수 있습니다 귀하의 신청서에 그래서 당신은 어떤 것들을 위해 이것을하는 것에 대해 생각해야합니다 당신이 생각하는 것이 더 비쌀 수도 있습니다

당신은 레이아웃을 유발하고 있습니다 너는 그것을 원한다 보기를 바인딩하거나 비싼 물건일지도 모릅니다 거기에 추적을 추가하고 싶습니다 그 시간이 어떻게 될지보고, Systrace에서의 모습

악기를 더 많이 사용할수록, 실제로 보낼 시간이 많을수록 계측 정보를 출력합니다 그렇기 때문에 우리는 방법론 수단을 가지고 있지 않습니다 한편으로는 Systrace에 너무 많은 정보를 원하지 않습니다 왜냐하면 중요한 정보가 손실되기 때문입니다 그러나 실제로, 당신은 실제로 비뚤어지고 싶지 않습니다

계기 호출에 의한 당신의 시간 너가 실제로 만들고있는거야 귀하의 응용 프로그램에 대해서도 마찬가지입니다 그렇게 생각한다면, 반 밀리 초보다 오래 걸릴 것입니다 계측의 오버 헤드 소음에 빠질 것입니다 그러나 그것보다 훨씬 빠른 경우, 당신은 아마 그렇게하고 싶지 않을 것입니다

영구적 인 기준으로 성능 테스트는 항상 그렇습니다 어쨌든 시험을 치르면 좋습니다 네가 실제로 성능 문제를 유발할 때를 알고 있었습니까? 특히 큰 앱과 큰 팀의 경우에 그러합니다 그래서 많은 개발자들이 코드를 쥐고 있다면 공통 코드 기반으로 만들면 좋을 것입니다

문제 발생시기를 자동으로 감지하는 방법 그렇지 않다면 – 개발자가 코드를 쥐고 있다면 귀하의 아키텍처에 익숙하지 않은 또는 귀하의 관행, 그럼 당신이되고 싶어 이전에이를 감지 할 수있다 사용자 수준에서 잡기 그리고 당신은 특히 UI 영역에 대한 테스트 그게 더 중요해, 그렇지? 공통 피드가있는 경우 공통 목록 보기, RecylerView 상황 사람 모든 시간에 들어갈 것입니다 모두가 착륙하는 곳에서 그 코드를 테스트하고 그 코드가 빡빡하게 유지되는지 확인하십시오

사용자 측면에서 데이터를 수집 할 수 있으며, 장치 측 및 앱 측에서는, 및 FrameMetricsAggregator 또는 호스트 측에서도 수행 할 수 있습니다 따라서 이러한 명령 줄 도구 인 dumpsys gfxinfo를 실행할 수 있습니다 그 모든 정보를 얻을 것입니다 Gfxinfo는 다시 똑같습니다

정확히 같은 종류의 다른 견해입니다 이전에 얘기했던 기간 데이터의 GPU 프로파일 링에서 볼 수 있습니다 FrameMetrics 집계에서 그리고 특히, 당신은보고 싶다 서로 다른 백분위 수를 어떻게 처리하는지 앱의 가끔 프레임을 건너 뛰면 아무런 문제가 없습니다

경우에 따라 700 밀리 초의 프레임 저하가 발생하는 경우, 그것은 아마도 큰 문제 일 것입니다 또는 프레임의 10 %가있는 경우 실제로 경계가 누락 된 것은 큰 문제입니다 그러니주의를 기울이십시오 A, 앱이하는 일, 성능이 어떤지 알면 당신이 할 수있는만큼 좋은 성능을 얻으려고 노력하십시오 그러나 시간이 지남에 따라 변화하는 것에주의를 기울여야합니다

해당 앱을 업데이트 할 때 당신이 그것을하는 것처럼 당신이 공연을 잃지 않는다고 마지막으로 도구를 사용하십시오 그래서 우리는 Profile GPU Rendering에 대해 이야기했습니다 개발자 옵션에서 활성화 할 수 있습니다 아주 쉽게, 일들이 어디로 가고 있는지 알 수 있습니다

기기에서 무슨 일이 일어나고 있는지 RecyclerView 나 일반적인 UI가 무엇이든간에 케이스가 있습니다 그 녹색 줄이 중요합니다 초록색 선 위로 가려면, 당신은 16 밀리 초 경계를 놓쳤습니다 그리고 너는 프레임을 꽉 쥐었다 이것은 특히 janky 프레임처럼 보입니다

나는 그들이 거기에 어떤 틀을 만들고 있다고 생각하지 않는다 적어도 일관성이 있습니다 그들은 그들을 위해 그것을 가지고있다 그래서 당신은 장치에서 그렇게 할 수 있습니다 이것은 디버거와 개발자에게 더 있습니다

수준, 일종의 볼 일종의 다시 말하지만, 동일한 정보를 사용하고 있습니다 우리가 가장 낮은 수준에서 컴파일하고, 사용하기 쉽도록 화면에 둡니다 Android Studio에서 몇 가지 새로운 프로파일 링 도구가 출시되었습니다 최신 릴리스에서

그들은 이번 주 회담에서 그 문제에 관해 이야기하고있었습니다 그래서 당신은 YouTube에서 녹음 된 것들을 확인할 수 있습니다 특히이 청중에게, CPU 모니터가 정보를 제공합니다 이 모든 메소드 호출에서 실제로 무슨 일이 벌어지고 있는지 그것은 당신에게 일반적으로 좋은 아이디어를 준다

앱에서 어디에서 실적이 발생하는지, 또한 GPU 모니터는 다시 한번, 얼마나 빨리이 물건을 렌더링하는지 다른 견해, 그리고 당신이 16 밀리 초 경계를 치고 있는지 여부 CHRIS CRAIK : 네, 사실 저는 말하고 싶습니다 이전 도구에 익숙하다면 내장 된 SDK의 일부인 Trace View (추적 뷰) 모니터로, 이것은 똑같은 일을한다 하지만 UI가 훨씬 뛰어나고 훨씬 더 유용하며, 사실, 훨씬 정확한 데이터도 있습니다 지금까지는 훨씬 더 좋습니다

CHET HAASE : 다른 도구를 보는 방법 그래서 우리는 Systrace에서 깊은 다이빙을 보았습니다 특히 Systrace를 처음 보았을 때, 나는 그 도구를 다시보고 싶지 않습니다 거기에 너무 많은 정보가 있습니다 정보로 무엇을해야하는지 잘 모릅니다

그것은 모든 정보를 가지고있는 도구입니다 단지 익숙해지기 만하면됩니다 그것이 어떻게 작동하고 어떻게 신을 수 있는지를보기 위해 그것을 사용함 필요한 정보와 사용자 정의 추적을 추가하십시오 필요 나는 그것으로 들어갈 수있는 더 쉬운 방법이라고 생각한다

당신은 훨씬 더 사용하기 쉽고 더 높은 것을 사용함으로써 천천히 물속에 잠길 수 있습니다 Android Studio 도구로 진행되는 사항에 대한 그런 다음 특정 양조장이있는 경우 당신이 추적하려고하는 것, 알고있는 것 Systrace는 훌륭한 곡물 도구입니다 당신이 훨씬 더 깊은 수준에서 그것을 추적하는 것을 도울 것입니다 시스템 전반 그리고 마침내, 화제에 아닙니다, 그러나 이것을 위해 군중은 성능에 관심이 있습니다

개발자 옵션을 시험해 볼 수도 있습니다 이 대체 렌더링을 사용할 수 있습니다 기본적으로 켜져 있지 않습니다 하지만 너는 볼 수있다 응용 프로그램이 어떻게 동작하는지, 가능한 미래 가능성을 위해

Skia Renderer이므로 개발자 옵션을 사용할 수 있습니다 그것을 가능하게하고, 확실하게하십시오 거기에 문제가 없다는 것을 있다면, 그것에 대해 듣는 것이 좋을 것입니다 그래서 우리는 오늘 그것을 언급하고 있습니다 우리가 언급 한 일부 자원이 있습니다

나는 그들을 다시 데려 오지 않을 것이다 다시, dandroidcom의 vitals 페이지를 확인하십시오 특히 Slow Rendering이라는 jank 섹션이 있습니다

그리고 몇 가지 중요한 I / O 세션이 있습니다 YouTube에서 확인해보십시오 아마 이미 게시되었을 것입니다 Tim Murray는 Systrace 및 시스템에 대한 훌륭한 개요를 제공했습니다 일반적으로 성능

Android Performance – Overview ART Talk는 공연과 기억에 관해 이야기했습니다 개량 그들은 꽤 멋진 약간의 재료를했다 런타임 측면, 런타임 개선, 뿐만 아니라 GC 측면 이제는 동시 가비지 콜렉션이 있습니다

더 이상 일시 중지가 거의 없습니다 결국 전체 GC를 가져올 때까지 그리고 그들은 전경에서 압축 할 수 있습니다 최소한의 크기의 힙을 얻을 수 있습니다 훨씬 빠른 할당과 컬렉션을 얻으십시오 그 모든 것들에 대한 세부 사항은 ART 토크에 있습니다

그리고 마지막으로, Play 사람들의 이야기가 있습니다 "아무도 크래시 또는 Janky Apps를 좋아하지 않습니다" 그리고 그것이 바로 대시 보드에 대한 이야기입니다 그들이있는 다른 시설들 개발자를 제공합니다 그리고 그것은 이야기입니다

알았어 [박수 갈채] [음악 재생]