[자막]Android NDK + OpenCV 카메라 예제 및 프로젝트 생성방법(Android Camera Example with NDK, OpenCV )

안녕하세요 웹나우테스입니다 이번 영상에서는 안드로이드 스튜디오에서 cmake를 사용하여 OpenCV 카메라 예제 프로젝트를 생성하는 방법을 다룹니다 구글에서 "github opencv" 를 검색합니다 검색 결과에서 "Release" 를 클릭합니다 안드로이드용 sdk를 다운로드 받습니다 다운로드 받은 파일의 압축을 풀어줍니다 sdk 폴더를 C드라이브로 복사해 줍니다 영상에서는 다음 위치에 sdk 가 위치한 걸로 가정하고 진행합니다 C:OpenCV-android-sdk 진행하기 전에 SDK Manager에서 몇가지 패키지를 설치해야 합니다 API 29를 설치하면 android

support 대신에 androidx를 사용합니다 API 28를 사용해도 무방합니다 CMake, NDK, LLDB를 설치해줘야 합니다 Native C++ 를 선택하여 안드로이드 프로젝트를 새로 생성합니다 프로젝트 이름의 제약이 없습니다 원하는 것으로 적어주면 됩니다 최소 API는 반드시 21 이어야 합니다 안드로이드용 OpenCV가 사용하는 API 라 선택의 여지가 없습니다 androidx를 사용해야 합니다 API 28 이하를 사용중이라면 체크해주세요 프로젝트 생성 작업이 완료될 때까지 기다렸다가 진행하세요 기다리지 않고 진행 시 문제가 생길 수 있습니다 메뉴에서 File > New > Import Module를 선택합니다 소스 디렉토리 항목 옆에 보이는 폴더 아이콘을 클릭하여 sdk 폴더를 지정해줍니다 모듈 이름을 :opencv 로 수정합니다 작업이 완료될 때까지 기다렸다가 진행하세요 기다리지 않고 진행 시 문제가 생길 수 있습니다 문제 없으면 프로젝트 창에 opencv 모듈이 추가됩니다 app 모듈에서 opencv 모듈를 사용할 수 있도록 의존성을 설정해줘야 합니다 메뉴에서 File > Project > Structure를 선택합니다 왼쪽에서 Dependencies를 선택하고 app 모듈을 선택한 후 오른쪽에 보이는 더하기 기호를 클릭하여 Module Dependency를 선택합니다 opencv를 체크합니다 이제 코드를 수정할 차례입니다 Github에 올려둔 코드를 사용합니다 웹브라우저에서 다음 주소에 접속하여 코드를 복사합니다 전체화면으로 보기 위해 스타일을 수정하기 위한 코드입니다 stylesxml 파일을 열어서 붙여넣기 해줍니다 웹브라우저에서 다음 주소에 접속하여 코드를 복사합니다 화면 구성을 위한 레이아웃 파일입니다 activity_main xml 파일 내용을 지우고 붙여넣기를 합니다 JavaCameraView가 카메라의 영상이 출력되는 영역입니다 웹브라우저에서 다음 주소에 접속하여 코드를 복사합니다 카메라 사용을 위해서 매니페스트 파일에 추가해야 할 설정입니다 매니페스트 파일에 <application> 태그 위에 붙여 넣기 합니다 웹브라우저에서 다음 주소에 접속하여 코드를 복사합니다 전체 영상으로 카메라 프리뷰 를 보려면 가로 방향을 사용해야 합니다 매니페스트 파일에서 기존 <activity> 태그를 지우고 붙여 넣기 해줍니다 웹브라우저에서 다음 주소에 접속하여 코드를 복사합니다 OpenCV 카메라 API를 사용하여 구현된 자바 코드 입니다 MainActivity 코드에서 패키지 선언을 제외하고 모두 지운 후 붙여 넣기합니다 자바 코드에서 함수 선언 하나가 빨간색으로 보입니다 마우스 커서를 가져가면 보이는 전구 아이콘을 클릭하여 메뉴에서 Create function를 선택합니다 cpp 파일의 네이티브 함수가 추가됩니다 cpp 파일에서 불필요한 코드를 제거 합니다 웹브라우저에서 다음 주소에 접속하여 코드를 복사합니다 처음 두 줄을 복사하여 cpp 파일에 붙여넣기 합니다 나머지 세 줄을 복사하여 cpp 파일에 붙여 넣기 합니다 아직 OpenCV가 인식이 안되어 일부 코드가 빨간색으로 보입니다 다음 작업후 해결이 됩니다 웹브라우저에서 다음 주소에 접속하여 코드를 복사합니다 CMakeLists

txt에 기존 내용을 지우고 붙여넣기합니다 다음 줄에 보이는 프로젝트 경로와 이름을 수정하세요 프로젝트 경로와 이름 은 안드로이드 스튜디오에 왼쪽 상단에 보입니다 메뉴에서 File > Sync Project with Gradle Files을 선택합니다 작업이 완료되면 cpp 파일에 보이던 붉은색 코드가 정상이 됩니다 OpenCV가 인식 되었기 때문입니다 이제 안드로이드 폰에서 실행해 봅니다 카메라 권한을 허용 해주면 카메라 프리뷰 영상이 보입니다 도움이 되었다면 구독과 좋아요 잊지 마세요 지금까지 웹나우테스 였습니다 wer

Suunto app – How to pair your watch with Suunto app for Android

Suunto 응용 프로그램은 Suunto 시계에 대한 경험을 풍부하게합니다 일상 활동, 운동 및 수면을 기록합니다

또한 Suunto 3 Fitness 용 GPS를 연결할 수 있습니다 Suunto 앱과 시계를 페어링하기 만하면됩니다 방법을 알려 드리겠습니다 필요할 것이예요: 당신 Suunto 시계 Suunto 앱이 설치된 전화 이것은 쉽습니다

시계를 깨우는 것으로 시작하십시오 설정 디스플레이로 스크롤하십시오 연결성을 선택하십시오 비행기 모드는 꺼야합니다 발견 모드가 활성화됩니다

그런 다음 휴대 전화의 블루투스를 활성화하십시오 위치 서비스가 사용 가능한지 확인하십시오 Suunto 앱을 엽니 다 아직 가지고 있지 않니? Google Play 스토어에서 찾을 수 있습니다 가입 또는 로그인하십시오

Suunto app은 GPS를 Suunto 3 Fitness에 제공합니다 앱에서 운동을위한 GPS 트랙을 만듭니다 작동 시키려면, Suunto 앱이 휴대 전화 위치에 액세스 할 수있게 허용하십시오 이제 시계를 연결하려면, 시계 아이콘을 탭합니다 Suunto 앱이 시계를 찾길 기다립니다

이제 페어 버튼을 누르십시오 Watch는 Suunto 앱을 만나고, Suunto 앱은 Watch를 만나보세요 시계에 패스 키가 표시됩니다 그것을 입력하고 쌍을 누릅니다 큰! 이제 시계가 페어링됩니다

우리는 당신을 위해 약간의 것을 준비했습니다 시계 기능에 대해 자세히 알아보기 Suunto 앱과 함께 사용하는 방법에 대해 설명합니다 "예"를 탭하면 Suunto 앱이 항상 시계에 연결되어 있고 알림 및 동기화 활동을 할 수 있습니다 다음 단계로서 Suunto 앱이 모바일 알림을 가져올 수 있도록 허용 메시지 또는 시계 수신 전화와 같은 메시지 '허용'을 탭하기 만하면 언제 어디에서나 최신 정보를 얻을 수 있습니다 '허용'을 탭하면 전화 통화를 관리하고 시계에서 발신자 정보를 볼 수 있습니다

완전한 Suunto 앱과 시계로 재미있게 탐험 해보십시오

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 : 원한다면 우리가 여기있을거야

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

Squid – Working with PDFs

이 비디오에서는 오징어에서 PDF를 사용할 수있는 몇 가지 방법을 소개합니다 빈 페이지를 사용하는 대신 PDF를 가져 와서 메모를 시작할 수 있습니다

새 메모를 만들 때 'PDF 가져 오기'를 탭합니다 기기 또는 Google 드라이브와 같은 연결된 저장 서비스에 이미 저장된 PDF를 선택하십시오 Chromebook을 사용하는 경우 여기에 액세스하려면 Google Play에서 Android 버전의 드라이브를 설치해야합니다 다른 페이지에서와 마찬가지로 PDF로 작성하십시오 Google 드라이브 또는 기기의 폴더와 같은 다른 앱에서 직접 Squid로 PDF를 열 수도 있습니다

예를 들어 Chromebook 파일 앱에서 마우스 오른쪽 버튼을 클릭하거나 파일 이름을 길게 눌러 선택합니다 그런 다음 "열기"또는 "열기"를 탭하고 오징어를 선택하십시오 같은 파일을 여러 번 여는 경우 오징어가이를 인식하고이 PDF를 기반으로 새 메모를 만들 것인지 묻습니다 또는 해당 PDF로 시작한 이전 노트 작업을 계속할 수 있습니다 기존 메모에 PDF를 삽입 할 수도 있습니다 페이지 동작을 열려면 페이지 번호를 길게 누릅니다 "PDF 삽입

"을 선택하십시오 추가 할 파일을 선택하십시오 메모에있는 모든 페이지를 보려면 페이지 번호를 탭하십시오

페이지를 오래 누르고 다시 정렬해야 할 경우 드래그하십시오 여러 PDF의 페이지를 동일한 메모로 가져올 수 있습니다 또한 메모 내에서 동일한 PDF를 여러 번 가져올 수 있습니다 보고 주셔서 감사합니다! Squid를 사용하는 방법에 대한 더 많은 도움을 받으려면 FAQ 페이지와 squidnotescom의 다른 비디오를 확인하십시오

New Online Game on Android with 3D Style, over 700 Pokemon, Mega Evolve, Z Moves on Pocket Trainer

Pokemonercom에 다시 오신 것을 환영합니다

나는 포켓몬이다 그래서 오늘, 우리는 모바일 게임을 할 것입니다 소년 보자 좋아, 오늘, 우리는 모바일 온라인 게임을 할 것이다 포켓 트레이너이고 Android에서 게임을 할 수 있습니다

그리고이 게임은 너무 무거워서 파일 크기가 700 MB 이상입니다 무언가를 살펴 보겠습니다 그래서이 게임에는 3D 스타일로 멋진 캐릭터가 있다고 말할 수 있습니다 Pokemon Black and White에서 캐릭터를 선택할 수 있습니다 그런 다음 부자 인 경우 Pokemon Sun / Moon 또는 Pokemon Red의 캐릭터로 전환 할 수 있습니다

그래서이 게임에서는 메가 에볼루션 (Mega Evolution)과 Z 이동 (Z Moves)으로 700 가지가 넘는 포켓몬을 포착 할 수 있습니다 당신은 PK를 가지고 친구와 놀 수 있습니다 음악은 좋고 그래픽도 좋다 이제는 더 많은 게임과 더 많은 비디오를 얻기 위해 Pokemonercom을 구독하고 비디오를 공유하고 싶다는 것을 기억하십시오

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 비디오를 보려면 여기를 클릭하십시오 [음악 재생]

Mobile friendly SSL Certificates (au) SSL Compatibility issues with some mobile devices

이제 모바일 장치를 사용하여 온라인 브라우징의 50 % 이상이 완료되었습니다 웹 사이트를 모바일 친화적으로 만드는 것이 그 어느 때보다도 중요합니다

많은 사람들이 깨닫지 못하는 것은 더 저렴한 SSL 인증서가 모바일이 아닙니다 친한 최신 모바일 브라우저가 설치된 최신 휴대 기기에서는 문제가되지 않습니다 문제는 약간 오래된 모델의 많은 것입니다 이러한 장치는 일반적으로 업데이트하기가 더 어렵습니다

또는 사용 가능한 업데이트가 없습니다 특히 Symbian 및 Windows Mobile 50 및 60 장치 오래된 iPhone 및 업데이트되지 않은 Android 기기도 영향을받습니다

즉, 모바일이 아닌 저렴한 SSL 인증서 중 하나를 설치하면 친한 이 오래된 기기를 사용하는 일부 방문자는 귀하의 사이트에 연결하지 못할 수 있습니다 대신 그들은 놀라운 경고 메시지를 받게됩니다 일부 웹 사이트 방문자가 귀하의 사이트에 액세스하려고 시도 할 가능성이있는 경우 오래된 장치 중 하나 그런 다음 설치하는 SSL 인증서가 모바일 친화적인지 확인해야합니다 Virtual Webmaster에서 권장하는 모든 인증서는 모바일 친화적입니다 기본 인증서를 포함하여 설치 및 구성시 무료로 제공됩니다 서비스

귀하에게 적합한 인증서를 결정하는 데 도움이 필요한 경우 가상 웹 마스터에게 물어보십시오 우리의 완벽한 설치 및 구성 서비스는 모든 사람에게 녹색 자물쇠를 보장합니다 귀하의 사이트의 페이지 가상 웹마 스터에게 문의하여 지금 사이트를 보호하십시오

모바일 친화적 인 SSL 인증서로 사이트를 보호하려면 아래 링크를 클릭하십시오!

Learn how to Build Android Apps with Android Jetpack and Kotlin

발표자 : 건축가와 건축가를 배우십시오 Kotlin 프로그래밍 언어로 된 Android 앱 업계에서 입증 된 도구와 라이브러리를 사용합니다

Kotlin에서 Android 앱을 만드는 중입니다 Udacity와 함께 Google에서 개발 한 코스입니다 업계에서 실제 Android 앱을 제작하여 학습하게됩니다 현대적인 응용 프로그램 아키텍처의 모범 사례 Android Jetpack 구성 요소를 사용하는 이유와 방법을 이해하고, 데이터베이스 룸, WorkManager 백그라운드 처리를위한 새로운 탐색 구성 요소 등

핵심 Kotlin 기능을 사용하여 앱 코드 작성 보다 빠르고 간결하게 Android로 개발하는 법은 API와 바로 가기를 배우는 것 이상 그것은 당신의 두뇌를 모바일 개발자처럼 생각하도록 훈련시키는 것입니다 우리와 함께 배우십시오 이 무료 과정에 대한 자세한 정보와 모든 정보를 보려면 Udacity, udacitycom/google으로 이동하십시오