What’s New in Android Design Tools – New Features for Rapid UI Development (Google I/O ’17)

[음악 재생] JOHN HOFORD : 안녕하세요 저는 존 호 포드입니다

그리고 이것은 니콜라스 기수입니다 우리는 모두 ConstraintLayout, Android Studio 디자인 화면 니콜라스가 우리에게 약간의 소개를 해줄거야 모든 것에 니콜라스 로어 : 안녕하세요, 모두들 그래서 우리는 조금 이야기 할 것입니다

일반적으로 Android Studio에 대한 내용과 조금 더 ConstraintLayout에 대해서도 마찬가지입니다 여기서 우리의 목표가 무엇인지에 대한 간단한 요약은, Google 개발자까지 – 우리가 원하는 것은, 정말로, 당신의 삶을 많이 만들고, 훨씬 낫지, 그렇지? 그리고 우리는 당신이 무엇을 듣고 싶습니다 모든 의견, 아이디어, 요청을 말해야합니다 그러나 무엇이든, 우리는 실제로 그것을 조사하고 있습니다 그리고 우리는 빨리 움직이려고 노력합니다

지난 해 I / O에서 우리는 안정적인 버전 Android Studio 22, 23, 우리는 현재 30을 연구 중입니다 그리고 3

0을 테스트 해 보시기 바랍니다 현실에는 많은 개선이 있습니다 태블릿에 세부 사항입니다 특히 현실에 대한 세부 사항 Android Studio의 비주얼 디자이너는 우리의 목표는 비교적 간단합니다 기본적으로 레이아웃을 시각화 할 수 있기를 바랍니다

나도 알아, 비주얼 디자이너라고 우리는 당신이 그 레이아웃을 아주 쉽게 만들 수 있기를 바랍니다 그리고 그것들 모두는 효율적입니다 우리는 이유없이 당신이 당신의 시간을 잃어 버리는 것을 원하지 않습니다 그 메모에, 존? JOHN HOFORD : 좋습니다, 그래서 우리는 단지 당신에게주고 싶습니다

간략한 개요, 디자이너의 땅의 위치 모두가 어떻게 함께하는지에 대한 아이디어를 제공합니다 당신이 할 수있는 일 중 하나는, Darcula Mode에서 – Darcula Mode와 같은 많은 사람들이 확신합니다 그리고 우리는 다른 하나로 돌아갈 수 있습니다 이제 우리는 왼쪽에 팔레트가 있습니다 기본적으로 위젯을 드래그 앤 드롭 할 수있는 곳 귀하의 디자인 표면에

그런 다음 구성 요소 트리를 클릭 한 다음 관리자가옵니다 우리는 나중에 그것에 대해 더 많은 것을 알게 될 것입니다 그런 다음 핵심 디자인 화면과 툴바가 있습니다 우클릭 메뉴도 있습니다 그래서 많은 사람들이 마우스 오른쪽 버튼 클릭 메뉴

개체를 선택하면 해당 개체를 클릭 할 수 있습니다 마우스 오른쪽 버튼을 클릭하면 유용한 작업이 수행됩니다 당신이 선택한 것과 당신이 전환 할 수있는 다른 것은 청사진 모드입니다 한 번에 두 개의 화면으로 전환 할 수도 있습니다

청사진 모드는 일종의 청사진입니다 대략적인 개요, UI의 스케치입니다 디자인 표면은 실제로 안드로이드 에뮬레이터의 일종 인 레이아웃 LIM에서 렌더링됩니다 우리가 할 수있는 일 중 하나 XML 편집기 모드에서 디자이너를 사용하십시오 그래서 XML 편집기에서 Preview를 누르면, 근본적으로 바로 전체 디자인 모드를 얻게됩니다

선택하면 미리 알림이 표시됩니다 XML에서 올바른 요소로 이동합니다 디자인 또는 청사진을 보려면 전환 할 수 있습니다 당신은 또한 그것을 약간 확장 할 수 있습니다 팔레트를 꺼내, 실제로 요소를 바로 드래그 할 수 있습니다 화면에

실제로 하단에 XML이 생성되었음을 알 수 있습니다 사실 XML을 편집하면 이 경우 XML을 삭제합니다 디자인 표면에서 즉시 이동합니다 따라서 양방향으로 실시간 피드백을 얻을 수 있습니다 간단히 말해서

NICOLAS ROARD : 그건 단지 간단한 소개였습니다 당신에게 개념의 일부를 제공하기 위해, 우리가 대화에서 사용할 어휘의 일부 그리고 이미이 UI에 익숙해지고 있기를 바랍니다 그렇지 않은 경우 다시 30 시도해보십시오

ConstraintLayout을 지금 다루겠습니다 ConstraintLayout은 작년에 발표 한 라이브러리입니다 이 방에있는 I / O에서 그리고 일반적인 생각은 뭔가를 제공하는 것입니다 그것은 당신에게 모든 유연성과 힘을줍니다

모든 유형의 레이아웃을 만들 수 있습니다 평평한 레이아웃을 중요하게 강조하고 싶습니다 평평한 레이아웃이있는 경우 – 중첩되지 않음을 의미합니다 그 레이아웃을 생성하기 위해 뷰의 계층 구조 – 많은 장점이 있습니다 자주 반복되는 장점 중 하나는 성능입니다

실제로 중첩 된 레이아웃을 사용하면 [? 코너?] 경우 계산이 폭발적으로 늘어나는 곳 따라서 모든 것이 평평한 경우 실적에서 승리하는 경향이 있습니다 이것이 하나의 이유입니다 내가 생각하는 실제로 더 흥미있는 또 다른 이유는, 당신은 훨씬 더 융통성이 있습니다 콘텐츠를 제한하려면 훨씬 더 좋습니다

내용을 수정하려면 훨씬 더 좋습니다 업그레이드, 수정 등 ConstraintLayout을 사용한 또 다른 큰 일 맞아, 일하는 팀이 같아 ConstraintLayout 및 레이아웃 Android Studio의 편집기 그래서 그것은 처음부터 깊이 통합되어 있습니다

ConstraintLayout에 몇 가지 기능이 있다는 것을 의미합니다 훌륭한 UI 디자이너를 만드는 데 도움이되며 그 반대의 경우도 마찬가지입니다 Studio에 몇 가지 기능이 있습니다 훨씬 더 효율적이고 훨씬 효율적으로 만들 수 있습니다 ConstraintLayout을 사용한 레이아웃

또한 번들되지 않은 라이브러리이기도합니다 언제든지 모든 버전을 푸시 할 수 있음을 의미합니다 사실, 우리는 방금 새 버전을 밀어 넣었습니다 오분 전 기본적으로 모든 기기와 호환됩니다

그래서 10을 재빨리 요약 해보십시오 작년에 우리가 10을 발표했을 때, 우리는 긴 일련의 알파 릴리즈, 베타 릴리즈를했습니다 작년 이래로 기본적으로 17 건이 출시되었습니다

우리가 빨리 움직이고 빨리 반복하려고한다고 말했을 때, 그것이 우리가하는 일입니다 우리는 2 월에 10의 최종 릴리스를 수행했습니다 특히 많은 경우 성능이 향상됩니다 작년 ConstraintLayout을 시도해보십시오

확실히 그것을 줘 새로운 기능에 대해서도 다룰 것입니다 Android Studio의 기본 레이아웃입니다 따라서 새 화면을 만들 때 기본적으로, 우리는 ConstraintLayout을 넣습니다 RelativeLayout을 배치하는 데 사용됩니다

물론 Studio는 매우 유연합니다 그것을 바꾸고 싶다면 그렇게 할 수 있습니다 그러나 우리는 그것이 정말로 훌륭한 레이아웃이라고 믿습니다 을 눌러 화면을 시작하십시오 그게 우리가 당신을 격려하고 싶습니다

그리고 그것들 모두는 정말로 지역 사회의 개입없이 가능했다 기사, 회담, YouTube의 동영상으로 널리 채택 됨 도서관의 또한 새로운 커뮤니티 기반 이번 주에 시작되는 ConstraintLayout 웹 사이트, 너는 그것을 조사해야한다 그래서 10, 기능면에서 우리는 무엇을 가지고 있었습니까? 작년에 무엇을 보여줬습니까? 글쎄요, 그 동안 우리는 무엇을 추가 했습니까? 그래서 우리는 상대적인 포지셔닝을 가지고 있다고 생각했습니다 레이아웃을 설정하여 하나의 버튼 다른 요소에 상대적으로 배치됩니다

부부와 함께 RelativeLayout과 매우 유사합니다 흥미로운 비틀기 센터 포지셔닝도 추가했습니다 따라서 두 대상 사이에 제약 조건을 만드는 경우, 귀하의 요소는 중앙에 배치됩니다 그리고 실제로 수정할 수 있습니다

그것은 중심이 아니라 편견을 적용 할 수 있습니다 그래서 훨씬 더 유연한, 단순히 반응적인 UI가 아닌 정확한 차원의 측면에서 우리는 또한 헬퍼 객체의 개념을 도입했습니다 같은 지침 그리고 가이드 라인을 가진 아이디어는 훨씬 더 자연스러운 방법으로 UI를 만들 수 있습니다

특히 디자인 배경에서 나온 경우, 또는 디자이너와 함께 일하는 경우, 그들은 언제나 자신의 레이아웃을 생각하고 창조합니다 그들은 많은 이름 – 지침, 키 라인, 수정 지시라고 부릅니다 기본적으로 수직선과 수평선 모든 것이 올바르게 정렬되어 있는지 확인하십시오 글쎄, ConstraintLayout의 가이드 라인 당신이 사용하고 창조 할 수있는 단지 첫 번째 개념입니다 귀하의 레이아웃,하지만 궁극적으로 장치에, 단지 레이아웃에 적합한 설정이됩니다

우리는 또한 체인을 도입했습니다 10 릴리스주기의 비교적 늦은 판입니다 위젯 그룹을 배치 할 수 있다고 생각하십시오 그룹으로

그래서, 예를 들어, 그것들을 분산 시키십시오 Android의 이전 레이아웃과 비교하여 흥미로운 점 한 축에서만 작동한다는 것입니다 따라서 다른 축은 체인에 의해 구속되지 않습니다 마지막으로 비율을 도입했습니다 나는 많은 사용자가 사용자 정의보기를 다시 구현해야한다고 확신합니다

그냥 비율을 구현합니다 이제는 ConstraintLayout에 추가했습니다 출발에서 마지막으로 ConstraintSet을 도입했습니다 ConstraintSet의 아이디어는 이제 우리가 평평한 레이아웃

레이아웃을 만드는 데 필요한 계층 구조가 없습니다 어떤 의미에서, 당신은 무리와 함께 동일한 수준의 위젯을 제공합니다 그리고 우리는 그것을 레이아웃을 만들기 위해 적용합니다 원하는 결과를 얻으려면 이러한 제약 조건을 적용해야합니다 그래서 ConstraintSet, 아이디어는 간단합니다

우리가 모든 제약 조건들을 모으고, 그 객체에 ConstraintSet 객체를 넣습니다 따라서 제약 조건 집합을 만들 수 있습니다 레이아웃의 모든 제약을 포함합니다 레이아웃 파일에서 생성 할 수 있습니다 라이브 뷰 계층 구조에서

그리고 그 일을 할 수 있다는 사실 사실, 정말 강력합니다 왜냐하면 그리고 당신에게 간단한 예를 보여주기 때문에, 하나의 제약 조건 집합 만 토글 할 수 있습니다

또 하나 따라서 런타임에 UI를 조정하는 것은 매우 쉽습니다 레이아웃을 지정하고 만들 수 있습니다 레이아웃 편집기의 편의성을 그래픽으로 제공합니다 그리고 프로그램에서 런타임에, 당신은 원하는 레이아웃을 결정할 수 있습니다

이것은 매우 강력한 개념입니다 우리는 그걸로 돌아올거야 그리고 마침내, 오늘 우리는 11, 베타 1을 발표했습니다 Maven에서도 사용할 수 있습니다

워크 플로에 쉽게 통합 할 수 있어야합니다 11에서 우리는 무엇을 추가 했습니까? 우리는 첫째, 장벽의 개념을 추가했습니다 그리고 장벽은 어떤 의미에서 말하자면, 위젯 세트를 가지고, 가장자리의 최대 값 또는 최소값을 취합니다 그리고 그것은 당신이 많은 UI를 만들 수있게 해줍니다

이전에는 ConstraintLayout 10으로, 할 까봐 까다 롭다 우리는 또 다른 [? 하이퍼 클래스?] 그것은 그룹이라고 불리는데, 현재로서는 상대적으로 제한되어 있습니다 그러나 우리는 그것을 향상시키는 방법에 대한 아이디어를 가지고 있습니다 그러나 개념은 기본적으로, 당신은 해당 그룹에 저장되는 위젯 세트를 가질 수 있으며, 예를 들어 그룹의 가시성을 설정할 수 있습니다

그래서 너는 더 이상 자신을 유지할 필요가 없다 위젯 목록 만 토글 할 수 있습니다 한 번에 그들의 가시성 XML로 지정할 수 있습니다 그룹의 모든 가시성 상태 기본적으로 그룹의 요소에 적용됩니다

새로운 개념 인 자리 표시 자 개념도 있습니다 나중에 더 자세히 설명하겠습니다 하지만 네가 좋아할 것 같아 마지막으로 몇 가지 조작을 추가했습니다 우리는 제약과 차원을 다루는 방식으로 그래서 너비가 너비 인 뷰를 만들고 싶다면 화면의 30 %는 할 수 있습니다

그러나 지침과 조금 복잡했습니다 왜냐하면 가이드 라인은 퍼센트 포지셔닝을 허용하지 않기 때문입니다 하지만 이제는 위젯에서 직접 간단하게 할 수 있습니다 이제 우리는 조금 새로운 기능을 다루겠습니다 Android Studio 자체 JOHN HOFORD : 네

근본적으로, 당신에게 친절을 베풀기 위해서 안드로이드 스튜디오 내부의 자세한 내용은 우리는 일련의 도구를 가지고 있습니다 그들 중 일부는 나중에 조금 더 이야기 할 것입니다 그러나 우리는 정렬 형 도구 인 일련의 도구를 가지고 있습니다 및 정렬 형 도구

그리고 지침을 추가 할 물건이 있습니다 그리고 우리는 그것들에 관해 더 많이 볼 것입니다 오른쪽 클릭 메뉴도 있습니다 실제로는 – 그들 중 많은 도구가 있습니다 자, 도구로 할 수있는 일의 작은 예가 있습니다

그래서이 특별한 예에서는 체인을 만들고, 나는 그 (것)들의 모두를 중심에두고, 그 후에 추론을 사용하여 자동으로 연결합니다 그래서 세 번의 클릭으로, 나는 본질적으로 최상위 레이어를 만들었습니다 형세 자, 우리가 많은 일을 한 다른 것들 중 하나 에 경감이 있습니다 당신이 내가보고있는 작은 작은 것들

그들은 광선을 자동으로 던지고, 인접한 표면에 따라서 연결을 만드는 빠르고 편리한 방법입니다 실제로 작은 선을 드래그하지 않아도됩니다 정말 많은 연결 속도를 높일 수 있습니다 그리고 나서 다른 모든 기능들과 함께 놀고 있습니다

경감 나는 편견을 바꿀 수있다 나는 가서 다시 연결을 끊을 수있다 둘 다 함께 일합니다 그래서 저는 그것을 다시 되돌려 놓습니다

그리고 루프는 처음부터 다시 시작됩니다 추론 – 당신은 저에게 추측의 조금을 보았습니다 전에 본질적으로 확률 모델을 기반으로합니다 우리는 무엇이 가장 가능성있는 일인지 추정하려고 노력한다

에 연결하고 싶습니다 그들이 서로 위에 늘어선다면, 그렇게 정렬 될 가능성이 큽니다 그것이 센터에 직접있는 경우, 작은 아이콘으로, 그것은 그것을 연결하기를 원할 것입니다 그것에 대한 멋진 점 중 하나는 당신은 내가 연결할 수 있다는 것을 알게 될 것입니다 그리고 나서 추측을 사용하여 마무리하고 UI를 본질적으로 완성하십시오

그래서 내가 많이 걱정하는 것들, 나는 손으로 할 수 있습니다 추론은 현재 생성하지 않습니다 체인 또는 우리가 이야기하는 새로운 위젯 중 일부를 포함합니다 새로운 디자인으로는 제대로 작동하지 않습니다 풍모

그러나 이러한 기능이 안정화됨에 따라, 추론 엔진에 넣을 것입니다 여기 예제가 있습니다 그것은 추론했다 그리고 당신이 볼 수 있듯이, 그것이 중심에 놓여 있음을 발견했습니다, 그것을 거기에 붙였다 랩 내용과 일부 내용이 변경됩니다

DP를 제로로 만드는 것 그것은 단지 그것을 고치려고합니다 기억할 다른 것들 중 하나 여기 미인이 아니에요 그것은 당신을 위해 일을 정렬하고, 준비하지 않을 것입니다 물건을 넣는 곳을 정확하게 유지하기 위해 열심히 노력합니다

그래서 사람들이 어색해하는 몇 가지 사례를 보았습니다 UI에 상황을 넣은 다음 추론을합니다 조직화되어 있지 않기 때문에 나쁜 결과를 낳습니다 그래서 생각할 때 그렇게하는 것을 잊지 마십시오 우리가 좋아하는 것들 중 하나는 경감입니다

너는 내가 그것을 사용하는 것을 보았다 얻을 수있는 또 다른 모드가 있습니다 당신이 정상에서 작은 화살을 쳤다면, 이것은 모든 제약 조건입니다 그것은 매우 솔직하게 사용하는 고통입니다 그래서 우리는 무언가를 연구 해왔다

조금만 더 쉽게 시도하고 당신은 그것을 사용할 것이고, 당신은 그것과 상호 작용할 것입니다 그리고 우리는 그것을 – 내부적으로 슬라이스라고 부릅니다 레이아웃이있을 때마다 상상해보십시오 너는 실제로 ~ 레이아웃과 관련하여 치수, 문자열 파일, 몇 개의 파일이 있습니다 그리고 함께 작업하려는 정보 이 모든 다른 파일에 매핑됩니다

그래서이 게임을 둘러싼 이런 호핑이됩니다 너는 알아 내려고 노력 중이야, 오, 나는 가서 조정해야 해 여기 치수 나는이 파일에 문자열을 설정해야한다 그리고 나는

나는 쉽고 간단한 탐색을 할 수 없다 레이아웃에서 선택된 객체를 가져올 수 있다면, 퍼센트, 사용하는 치수, 사용하는 스트링, 그리고 그것이 말하는 다른 모든 것들, 우리는 그들을 하나의 사용자 인터페이스로 결합합니다 오른쪽에 나타납니다

그리고 우리는 XML 파일과 비슷한 모양을했습니다 XML에 익숙하다면 XML의 기능을 이해할 수 있습니다 그리고 그것이 어떻게 작동하는지 당신은오고있는 파일을 볼 수 있습니다 다른 모든 매개 변수에서

예를 들어 드로어 블은 나 그림이다 값은 몇 가지 숫자입니다 사실, 편집을 할 수 있으며 심지어 해당 사용자 인터페이스에서 직접 새 요소를 작성하십시오 따라서 디자이너 내에서 신속하고 신속하게 작업 할 수 있으며, 다른 모든 작은 일들을해라 일반적으로하고 싶습니다

NICOLAS ROARD : 그래서 도구에 대해 조금 이야기하고 싶습니다 속성 이 모든 것을 보여주는 아이디어 물론 모든 레이아웃을 사용할 수도 있습니다 XML로, 맞죠? 내 말은, 그들은 보통의 Android 레이아웃입니다 이전 레이아웃을 사용할 수 있으며 ConstraintLayout을 사용할 수 있습니다

모든 것이 XML에서 완벽하게 사용 가능합니다 하지만 그 아이디어는 우리가 강하게 원하는 것입니다 그게 디자이너와 함께, 우리는 정말로 당신의 인생을 더 쉽게 만들 수있는 좋은 기회를 얻었습니다 나는 당신이 그 도구들 중 일부를 볼 수 있다고 생각합니다 우리가 제시 한 XML에서 같은 일을 한 줄씩 분명히 할 수 있지만, 이러한 도구를 사용하면 훨씬 빠릅니다 따라서 도구의 특성은 이미 알고있는 것일 수 있습니다 권리? 일반적인 문제는 우리가 에디터에서 뭔가를 가지고 있지 않다

코드를 직접 실행하십시오 레이아웃에서 우리가 보여줄 때가 있습니다 편집자가 정확히 같은 사람이되지는 않습니다 당신은 당신의 장치에 있습니다 그래서, 예를 들어, 그것의 일부 귀하의 프로그램에 의해 결정됩니다

런타임에 완료되는 것들입니다 따라서 우리는 도구가 당신은 행동 만 지정할 수 있습니다 레이아웃 편집기에 적용됩니다 그래서 그 속성들은 가지 않습니다 신청서를 게시 할 때, 언제 그것을 장치에 밀어 넣습니다

그들은 단지 껍질을 벗겨 낸다 그러나 디자이너는 꽤 많은 유연성을 허용합니다 어떻게 당신이 물건을 렌더링하고 싶어하는지 예를 들어 showIn은 꽤 유용합니다 재활용 된보기에서 항목을 설정하는 Listitem, 그런 것들

이것은 단지 일반적인 문제 일뿐입니다 맞습니다 우리가 정말로하지 않을 때 어떻게 레이아웃을 보여주고 싶습니까? 코드를 실행하고 싶습니까? 그리고 재활용보기를 드래그하려고하면 이러한 모든보기, 레이아웃 편집기에서, 그것은 아마 당신이 본 것입니다 우리는 자동으로 기본 어댑터를 생성하기 때문에 꽤 제한적입니다 그리고 기본적으로, 그것은 당신이 보는 것입니다

아마도 응용 프로그램이 어떻게 보이는지는 아닙니다 그래서 당신이 어떤 내용을 가지고 있다면 – 행을 만들었다 고 가정 해 봅시다 – 당신은 그것을 지정할 수 있습니다 복제되는 것을 볼 수 있습니다 응용 프로그램이 무엇인지 명확하게 나타내지는 않지만 좋아 보이시겠습니까? 물론, 당신은 다른 데이터를 가지게 될 것입니다 이것이 바로 우리의 샘플 데이터가 들어오는 곳입니다

새로운 속성을 지정할 수 있습니다 이것은 30에서 사용할 수 있습니다 기본적으로 사전 예고가 이루어집니다 속성 (예 : 이름 또는 전화 번호)

그리고 그걸 참조 할 수있을거야 다른 속성 대신 그리고 그것은 디자이너에서 복제 될 것입니다 매우 빠르게 볼 수있는 방법이라고 생각하십시오 귀하의 레이아웃이 어떻게 보이지 않는지 보일 것입니다

무엇이든 프로그램 할 수 있습니다 우리는 실제로 그 이상을 수행합니다 프로젝트에 새 샘플 데이터 폴더가 있습니다 당신이 만들 수있을 겁니다 색상과 같은 것을 지정할 수 있습니다

그것은 사소한 일입니다 텍스트 파일을 만들고, 각 줄에 색상을 넣고, 그리고 그게 다야 당신이 그 요소를 참조 할 때마다, 우리는 다음 색상을 가져올 것이고 우리는 단지 반복 할 것입니다 그래서 당신은 아주 빨리 그것을 얻을 수 있습니다 또한 샘플 데이터 기능이 더 많습니다

Lorem Ipsum, 특정 형식의 날짜, 그림 물감 전체 JSON 파일을 지정할 수도 있습니다 더 많은 구조화 된 데이터를 사용하려는 경우 그래서 우리는 구워진 데이터 유형을 얻었습니다 죄송합니다, 리모콘 구워진 데이터 유형 내가 말했듯이 JSON 파일은 더 많은 구조를 원한다

그리고 샘플 폴더에 리소스가 있다면, 당신은 그것을 참조 할 수 있고, 우리는 그것들을 선택할 것입니다 그래서 당신이 이미지 모음을 원한다면, 예를 들어, 폴더에 넣으면, 그 폴더를 참조하면 다음 폴더를 선택합니다 그리고 좀 더 고급 예제를 살펴 보겠습니다 ConstraintLayouts에 그래서 당신은 당신의 연습에서 그런 프로그램을 보았을 것입니다

내 버튼 왼쪽에 텍스트가 있습니다 그 텍스트가 성장하기를 원하지만 더 이상 버튼이 허용하는 것보다 그리고 나는 모든 것을 왼쪽으로 중심에두기를 원합니다 그래서 당신이 ConstraintLayouts에서 그것을하는 방법 – 그리고 그것은 약간 – 조금 까다 롭지 만 근본적으로 우리는 체인을 만들고, 텍스트를 크기 조정 가능하게 만들고, 제약 조건이 자동으로 적용됩니다 그래서 더 이상 가지 않을 것입니다 그리고 이것은 단지 간단한 예입니다

어떻게 사슬을 사용할 수 있는지 그것은 단지 오, 나는 위젯을 분산시키고 싶지 않다 훨씬 더 복잡하고 강력한 조합을 할 수 있습니다 따라서 사라진 행동에 대한 또 다른 예가 있습니다 그래서 기본적으로 사라질 위젯을 설정할 때, 우리는 그것을 하나의 지점으로 해결합니다

그래서이 경우 내 중앙 버튼 기본적으로 단일 지점으로 축소됩니다 그리고 그 행동은 나에게 잘 보입니다 그게 아마 내가 원하는거야 때로는 같은 방식으로 작동하지 않을 수도 있습니다 첫 번째 요소에서 그렇게하면 모든 것이 무너집니다

다시 0으로, 마진은 포함 된 다음 나머지 버튼은 움직이고 있습니다 그래서 우리는 또 다른 속성을 갖습니다 연결하려는 객체가 사라지면 지정할 수 있습니다 이 경우 마진에 해당 값을 사용합니다 두 번째 단추, 원래 여백 0의 상단에, 그리고 지금은 32의 마진을 가지고, 첫 번째 요소가 사라짐으로 표시된 경우에만 자리 표시 자에 대해 조금 이야기 해 보겠습니다

이것은 ConstraintLayout 11에 새로 추가 된 것입니다 JOHN HOFORD : 예, 11에 새로운 내용입니다 본질적으로 가상 뷰를 만들 수 있습니다

제약 조건 내의 다른 뷰에 내용을 설정합니다 형세 따라서이 간단한 예에서는 어느 것이 든 당신을 움켜 쥐고 있습니다 클릭 한 상태, 클릭 한 상태의보기, 화면 상단까지 뒤틀려 있습니다 텍스트를 보면 약간 이상하게 보일 수 있습니다

니가 코 틀린에 익숙하지 않다면 내일 Kotlin을 확인하십시오 이것이 Kotlin 파일 내부의 코드 길이입니다 오른쪽에 보이는 애니메이션 왼쪽에있는 코드에서 완전히 생성됩니다 XML 파일에서 사용되는 것은 없습니다

보시다시피 무작위로 전환됩니다 그러나 실제로 당신이 자리 표시 자, 위젯을 이동할 수있는 장소, 같이 보일지도 몰라, 좋아, 그 외에 뭘 할 수있어? 글쎄, 내가 자리 표시 자 기반 UI를 디자인한다면 본질적으로 내가 정의한 병합 태그 ConstraintLayout에서는 부모를 사용해야합니다 태그를 사용하는 동안 UI를보고 싶다면 본질적으로 고정 된 레이아웃을 제공합니다 다른 파일에서 사용하십시오 따라서이 경우에는 하나의 자리 표시자를 사용하기로 결정했습니다

내 최고 이미지, 큰 이미지가 될 것입니다 내 액션 버튼이 될 두 번째 자리 표시 자입니다 하지만 실제로 두 번째 자리 표시자를 만들 수 있습니다 이제 가로 모드로 사용합니다 그리고이 하나, 나는 그것을 약간 다르게 배열했다

약간 다른 제약 조건 세트를 사용합니다 이제 기본 레이아웃에서 두 UI를 선언합니다 요소를 포함하고 템플릿을 포함합니다 기본적으로 템플릿을 생성합니다 레이아웃을 어떻게 결정할 지 결정합니다

사실,이 템플릿 중 두 가지가 있기 때문에 다른 것들에, 내가 화면을 회전하면, 실제로 다른 템플릿을 사용하게됩니다 이제 나는 내 견해를 정리하고 분리 할 수있다 그것으로부터 레이아웃 그러나 나는 실제로 그 이상을 할 수 있습니다 이 구조로 할 수있는 일 중 하나 두 번째 이미지 버튼 대신에, 전체 포함을 결정할 수 있습니다

그 안에 다른 파일이 있습니까? 그래서이 특별한 경우에 저는 – 왜 이런 특별한 경우에, 나는 다른 배치의 낱단을 가진 전체 포함이있다 집단 그리고 실제로 그 공간에 휘몰아 치고 있습니다 그래서 그것은 ConstraintLayout 내의 ConstraintLayout입니다 그래서 그 맥락에서 중첩됩니다 그러나 이것은 매우 간단하고 거의 바보 같은 예입니다

그러나 당신은 당신이 어디에서 결정했는지 상상할 수 있습니다 어떻게하면 위와 아래를 원하니? 그리고 왼쪽과 오른쪽, 그리고 행동, 레이아웃하고 템플릿으로 디자인하십시오 그리고 나서, 당신이 당신의 주요 재료를 생산할 준비가되면, 당신은 단지 완전히 별개의 파일로 가서 그것을합니다 디자이너가 템플릿을 디자인하도록 도울 수 있습니다 그런 것들

우리가 ConstraintSet으로하고 싶었던 것들 중 하나 – 제한 집합을 사용하는 방법에 대해 조금 이야기하겠습니다 뷰를 완전히 분리 할 수 ​​있습니다 당신이 레이아웃을하는 방법부터 근본적으로, 일을하는 또 다른 방법입니다 전체 레이아웃을 캡슐화하는 것입니다

별도의 ConstraintSet으로 설정 한 다음 레이아웃에 적용합니다 그래서 당신은 궁금해 할 것입니다 그걸로하고 싶니? 글쎄, 너는 사용할 수있어 너는 둘 사이를 바꿀 수있어 ConstraintSets on the fly

조회수가 다시로드되지 않습니다 그것은 레이아웃을 전환하는 것과는 다릅니다 실제로 위젯을 옮기는 것입니다 다른 제약 조건 세트를 적용하여 따라서이 예에서는 두 개의 ConstraintSets을 만듭니다 레이아웃 파일에서 ConstraintSet을 가져옵니다

setContentView를 사용하여 다른 레이아웃을 화면에 표시했습니다 그런 다음 실제로 그 하나를 얻고 ConstraintSet을 가져옵니다 이 ConstraintSet도 있습니다 이제 두 ConstraintSets 사이를 전환하려면 모두 나는 ConstraintSet을 호출해야만한다 ConstraintLayout에 적용합니다

그리고 그것은 내가 전환하도록 허락 할 것입니다 그래서 나는 그렇게 영리한 애니메이션을 많이 만들 수 있습니다 그래서 간단한 예가 있습니다, 대화가 있다면 – 이것은 일반적인 ConstraintSet입니다 내 사진이 그려져 있고 가로로 또 다른 사진을 찍을 수 있습니다 이제 두 개의 별도 레이아웃을 만드는 대신 회전시킬 때 팽창시켜 당신은 자신을 회전시킬 수 있습니다

ConstraintSet 스위치를 직접 수행 할 수 있습니다 그리고 그런 식으로, 당신은 회전하는 동안 훨씬 덜 진행됩니다 그래서 많은 양을 돌리는 것을 좋아하는 앱을 가지고 있다면, 당신은 그렇게 할 수 있고, 약간의 속도를 줄일 수 있습니다 니콜라스 로어 : 음, 다른 건 ConstraintSet을 염두에 두는 것이 중요합니다 이 회전 예제는 흥미 롭습니다

물론 안드로이드에서 정상적인 시스템을 사용할 수 있습니다 런타임시 자원이로드되도록하십시오 ConstraintSet을 사용하면 실제로 ConstraintSet을 작성할 때 완전히 제어 할 수 있습니다 모바일에서 종종 그렇게 많이 시도하는 것은 아닙니다 당신이해야 할 일을하지 않기 위해서, 당신이 그것을해야하기 때문에

때로는 작업 비용이 많이 듭니다 당신은 여전히 ​​그것을해야합니다 적절한시기를 찾는 것이 더 중요합니다 그것을하기 위해 그리고 저에게 그것은 ConstraintSet이 허락하는 것입니다

당신은 기본적으로 모든 제약 조건을 미리 구울 수 있습니다 전에 그들을 적재하십시오, 그래서 당신은하지 않습니다 말장난 등을 일으켜야한다 갑자기 당신이 당겨야하기 때문에 전체 리소스 집합 그래서 ConstraintSet은 매우 유용합니다

우리가 일반적으로 모션을하고 싶을 때 ConstraintLayout의 장점 중 하나 평면 계층을 유지하려고하는 데 중점을 둡니다 클리핑 문제가 없다는 것입니다 당신은 씬 그래프로 생각할 수 있습니다 그 너는 모든 다른 물건들을 가지고있다

너는 화면에 보여주고 싶다 귀하의 버튼, 귀하의 이미지 등등 ConstraintSet에 대해 생각할 수 있습니다 어떤면에서는 키 프레임처럼 그리고 당신이 그렇게한다면, 기억한다면 방금 본 슬라이드, 한 줄을 추가하면됩니다 그리고 그게 다야

그리고 그것은 단순히 Android 전환 프레임 워크를 사용하는 것입니다 또한 [? industrylib ?] 그러면 자동으로 애니메이션이 적용됩니다 모든 유형의 레이아웃이 변경됩니다

그것은 개인적인 관점에서도 적용될 것입니다, 그렇죠? 그래서 그 예에서 저는 – 죄송합니다 리모콘은 만족스럽지 않습니다 이 예에서는 레이아웃이 있습니다 그것은 일반적인 ConstraintLayout으로 설정됩니다 매개 변수를 변경할 수는 없습니다

개별보기의 레이아웃이 그에 따라 자동으로 크기가 조정됩니다 내가 설정 한 제약 조건에 그러면 TransitionManager가 그 모든 것을 애니메이션으로 나타냅니다 그래서 여러분은 아주 복잡한 행동을 할 수 있습니다 아주 쉽게 그리고 코드 자체는 정말 사소합니다

너는 그 이상으로 많은 것을 할 수있다 그리고 그것은 또 다른 예입니다 화면의 한 상태를 만들 수 있습니다 하나의 레이아웃에서, 변화 – 기본적으로 두 번째 상태를 만들고로드합니다 ConstraintSet에서

런타임에 적용하고 전환 프레임 워크 나머지는 그냥 할거야 정말 멋진 점은 당신이 그래픽으로 그렇게한다는 것입니다 얼마나 많은 일을해야하는지 알아 내려고하지 않아도됩니다 차원이 뭐지? 아니요, 화면에 즉시 결과가 표시됩니다 장치를 왕복하지 않아도됩니다

그리고 그것은 순전히 ConstraintLayout에있었습니다 그러나 ConstraintLayout을 사용할 수도 있습니다 기존 프레임 워크를 활용함으로써, 그리고 프레임 워크의 기존 위젯들 그래서 여기, 이것은 단지 [? 새로운 전망?] 그리기 레이아웃에 사용 된 것 중 하나입니다 하지만 여기에서 단순히 ConstraintLayout으로 재사용 할 수 있습니다

그래서 여기, 이것은 간단한 서브 클래스입니다 좋은 점은 알다시피, 나는 격려한다

당신은 링크에서 그것에 대해 생각할 것입니다 자리 표시 자 개념에 기본적으로 일련의 일반적인 규칙을 정의 할 수 있습니다 UI가 어떻게 작동하는지 그래서 ConstraintLayout은 뭔가가됩니다 간단히 말해서 버튼을 배치하고 싶습니다

어떻게 서로 상호 작용하는지에 대한 정보를 제공합니다 오히려 전체 UI가 돌아 다니기에 더 가까워 질 수 있습니다 물론 사용자 정의 위젯을 사용하여 적용 할 수 있습니다 네가 원한다면 그것은 간단합니다

여기 전체 ConstraintSet 슬래시의 또 다른 예가 있습니다 전환 애니메이션 그래서 이전 예제와 같이 두 가지 상태를 정의했습니다 그림자가 적용된 것을 보면 높이가 바뀝니다 그리고 모든 것은 그래픽으로 이루어집니다

이 애니메이션의 유일한 문제점 그것은 좀 오래 부끄럽다 내 말은, 특별한 일은하지 않는다는거야 움직임이 없습니다 하지만 우리는 그 이상을 할 수 있습니다 또한 사용자 정의 전환을 사용하면 원하는 것을 정의하십시오

최근에는 물리학 라이브러리가 출시되었습니다 자신 만의 사용자 지정 전환을 쉽게 만들 수 있습니다 그들을 시스템에 연결하고 원하는대로하십시오 이 특정 UI를 복제하는 것이 좋습니다 이것은 테스트 예입니다

그러나 당신에게 유연성의 유형을주는 것 이 방법이 당신에게 줄 수 있습니다 그리고 그 메모에, 우리는 끝난 것 같아요 Q & A에는 몇 분이 걸립니다 그리고 제발 파일 버그, 기능 요청 당신은 우리에게 꽤 쉽게 연락 할 수 있습니다

ConstraintLayout의 문서 온라인으로도 이용할 수 있습니다 그리고 제가 말씀 드렸듯이 우리는 방금 11을 발표했습니다 시도해주세요 [음악 재생]