Google I/O 2013 – Android Design for UI Developers

Roman Nurik : 좋습니다 우리는 좋다

나는 우리가 갈 준비가되어 있다고 생각한다 모두에게 감사드립니다 UI 개발자를위한 Android 디자인 오늘 우리는 이야기 할 것입니다 우리가 developerandroid

com/design에서 문서화 한 몇 가지 멋진 패턴을 구현하는 방법에 대해 알아보십시오 내 이름은 Roman Nurik입니다 나는 Android 개발자 관계 팀에 있습니다 >> Nick Butcher : 안녕하세요, 저는 Android 개발자 관계 팀의 Nick Butcher입니다 우리는 여러분이 멋진 응용 프로그램을 만들 수 있도록 UX와 디자인에 중점을 둡니다

당신 중 일부는 매주 화요일마다 YouTube에서 주간 YouTube 쇼를 진행하는 Android 디자인을 통해 우리를 알 수 있습니다 멋진 Android 애플리케이션을 디자인하는 방법에 대해 이야기합니다 그래서 오늘은 약간 다르다 우리는 코드에 훨씬 더 집중할 것입니다 이것은 개발자입니다

회의 멋진 애플리케이션을 설계하는 것뿐만 아니라 멋진 애플리케이션을 구축하는 방법에 대해서도 이야기 할 것입니다 >> Roman Nurik : 오늘 우리는 세 가지 주요 주제를 다룰 것입니다 첫 번째는 앱 탐색입니다 최신 패턴 중 일부와 기존 탐색 패턴 중 일부에 대해 이야기합니다

밖에있다 그럼 닉이 얘기 할거야 >> Nick Butcher : 너에게 모두 말해 줄께 반응 형 디자인에 대해 그것이 무엇인지, 왜 신경 써야하는지, 어떻게 건물에 갈 수 있는지 그것은 귀하의 애플 리케이션에

>> Roman Nurik :주의를 기울이면, 너희들이 랩탑에있어,이 세션의 한 섹션에 집중한다면, 제발 닉 그래서 그가 이야기 할 때마다 그 말을 들어라 >> Nick Butcher : 압력이 없습니다 >> Roman Nurik : 토론을 마치겠습니다 Holo 시각 언어의 시각적 특성을 구현하는 방법 Holo 스타일과 테마의 일부입니다

먼저 앱 탐색에 대해 이야기하고 우리? 그래서 우리가 네비게이션에 대해 이야기 할 때마다 당신은 두 가지 다른 방법에 대해 생각합니다 탐색 중요한 길 중 하나가 측면 내비게이션입니다 기본적으로이 방법 하나의 컬렉션에있는 형제 요소 또는 종류간에 전환 할 수 있습니다 또는 앱의 최상위 섹션

아마 당신 중 많은 사람들이 알고 있듯이 액션 바는 는 측면 탐색에 대한 액세스를 제공하는 하나의 메커니즘 또는 하나의 도구입니다 그래서 당신은 행동 모음의 탭이나 회 전자와 같은 항목을 사용하여 형제 섹션에 대한 액세스를 제공 할 수 있습니다 액션 바 구현 방법에 대해서는 언급하지 않을 것입니다 우리에게는 좋은 훈련 수업이 있습니다 developer

androidcom/training에서이 작업을 수행하는 방법에 대해 설명합니다 효과적인 구현 항해 측면 네비게이션 구현 제발, 정말 끝내 봐요

우리 작업 표시 줄에 대한 호환성에 대해 이야기하고 싶습니다 많은 사람들이 알고 있듯이 API 11 아래의 플랫폼 버전에서는 사용할 수 없습니다 그러나 Google에서는 ActionBarCompat라는 항목은 작업 표시 줄 및 모든 버전에 대한 액세스 권한을 제공합니다 21 이상

기본 API는 여기에 활동, 프래그먼트 활동, 조치 표시 줄 가져 오기가 있습니다 액션 바 compat에 대한 API는 유사합니다 코드의 전체 구조는 변화 다른 수입을 교환하고, 클래스와 사물의 다른 이름으로 바꾸고, 너 끝났어 그래서 이것은 현재 사용할 수 없습니다, 나는 언급해야합니다

이것은 여전히 ​​무언가이다 우리가 작업하고있는 그것은 곧 가능할 것입니다 I / O 앱을 올바르게 사용하고 있다면 지금 그것은 액션 바 compat 라이브러리를 사용하고 있습니다 그것은 나중에보다는 오히려 빨리오고있다

처럼 나는 안드로이드 21 이상에서 사용할 수있을 것이라고 말했다 당신은 그것들에 그것을 사용할 수있을 것입니다 기본적으로 모든 장치가있는 버전입니다 여기에 매우 중요한 메모가 있습니다

이미 ActionBarSherlock을 사용하고 있다면 Jake Wharton의 경이로운 라이브러리가 있습니다 호환성의이 버전으로 전환해야한다고 생각하지 않아야합니다 도서관 이것은 경이로운 도서관입니다 그것은 API 측면에서 매우 유사 할 것입니다

ActionBarCompat는 새로운 앱을 추천합니다 새 앱을 만드는 경우 ActionBarCompat 기본적으로 이것은 행동 바에 대해 생각하고있는 경우, 호환성 때문에 사용하지 않으면 더 이상 그 변명이 없습니다 >> Nick Butcher : 변명의 여지가 없습니다 그냥 사용하십시오

Roman Nurik : 맞아 다른 구성 요소 ViewPager입니다 우리는 측면 탐색에 대해 이야기합니다 또한 왼쪽 및 오른쪽으로 스 와이프하는 것에 대해 생각합니다 또는 스 와이프 뷰 패턴

이제 ViewPager는 원뿔 구현의 일종입니다 무늬 우리 교육 수업에서는 매우 잘 다루어 져서 우리는 들어 가지 않을 것입니다 거기에 많은 세부 사항 내가 여기서 언급하는 이유는, 만약 당신이 어떤 종류의 수평 페이징을 사용하거나 이런 종류의 원뿔 구현을 구축했습니다

>> Nick Butcher : 탭을 볼 때마다 슬쩍하게 생각하십시오 Roman Nurik : 맞아 우리는 어제 공식화 된 새로운 패턴을 다루고 싶습니다 탐색 서랍이라는 Android 디자인 가이드에 대한 업데이트에서 따라서 탐색 서랍 메인 네비게이션 용입니다 앱에 서로 다른 섹션이있는 경우 탐색 서랍은 다음과 같습니다

네가 가지고있는 다른 도구 나는 모든 지침에 대해 이야기하지 않을 것이다 이리 모든 문서가 게시됩니다 탐색 서랍 섹션을 클릭하면, 당신은 모든 것들을 볼 수 있습니다

나는 말할 것입니다 – 여러분 중 많은 사람들이 Google Play 뮤직에서 본 것입니다 기조 연설의 일부인 탐색 서랍은 당신과 약간 다른 스타일을 가지고 있습니다 배고 있다 콘텐츠를 방해하지 않습니다 작업 표시 줄은 고정되어 있습니다

슬라이딩 안함 콘텐츠가 방해가되면이 콘텐츠가 실제로 앱의 크롬 콘텐츠 상단에있는 작업 표시 줄과 같은 크롬 조각입니다 그래서 내용은 안정적입니다 이것이하는 또 다른 일은 보존을 돕는 것입니다 수평 제스처 공간

따라서 콘텐츠에 스 와이프와 같은 것들이 포함되어있는 경우 그런 것들은 여전히이 패턴과 매우 잘 호환됩니다 >> Nick Butcher : 액션 바에 대해 당신이 말한 것과는 대조적으로, 밖에있는 다른 커뮤니티 라이브러리 중 일부는이 공식으로 이동하는 것을 고려할 수 있습니다 라이브러리는 권장 사항 인 모든 우수 사례 및 UX를 구현하기 때문에 용도 그래서 정말로 고려해야합니다 Roman Nurik : 맞아

너에게 보여주고 싶다 이게 어떻게 생겼는지에 대한 간단한 비디오 활동 내용은 왼쪽, 베젤, 그것은 조금 동안 최고점에 이른다 물론 상호 작용할 수 있습니다 그럼 너도 한 번 스 와이프 할 수있어 그것을 숨기기 위해서

작업 표시 줄의 왼쪽 상단 영역을 터치하여 표시하거나 숨길 수 있습니다 잘 그래서 이것에 관한 독특한 작은 것들이 많이 있습니다,이 패턴, 그리고 우리는 몇 가지 새로운 기능을 사용하여이 패턴을 구현하는 방법에 대해 이야기 할 것입니다 어제 발표 된 지원 라이브러리에 탐색 서랍을 구현하려면 가장 먼저해야 할 일은 최상위 레이어를 DrawerLayout으로 대체하는 액티비티 컨텐츠입니다 API 4 이상에서 작동합니다

기본적으로 모든 장치가 있습니다 이 DrawerLayout 두 명의 자녀가 포함되어 있어야합니다 두 명의 자녀가 있어야합니다 첫 번째는 실제 활동입니다 함유량

이전에 당신이 가진 모든 것들 그리고 두 번째 아이 DrawerLayout의 실제 서랍은 슬라이드 아웃해야하며 일반적으로 진행됩니다 ListView 또는 GridView 또는 무언가가 될 수 있습니다 일반적으로 ListView 자, 너 이 너비를 원하는 너비로 고칠 수 있습니다

어딘가에 추천합니다 너비는 240dp ~ 320dp입니다 물론 장치에 따라 차이가있을 수 있습니다 큰 화면 장치에서는 약간 큰 서랍이 필요합니다 이제, 그것은 당신을 얻습니다 – 단지 그것을하면 당신은 모든 닦는 물건을 얻을 수 있습니다

그것은 많이한다 너를위한 것들 그러나 서랍의 또 다른 중요한 부분은 서랍의 액션 바 그래서 우리는 지원 라이브러리 r13의 일부인 다른 구성 요소를 가지고 있습니다 ActionBarDrawerToggle

그것은 기본적으로 친절한 도우미 메서드 또는 도우미 클래스의 관계입니다 서랍과 함께 작업 표시 줄 그래서 당신은 단순히 새로운 것을 만들 수 있습니다 – ActionBarDrawerToggle을 구체화하십시오 그것에게 활동을주십시오 서랍 레이아웃 자체를 지정하십시오

아이콘에 표시 할 아이콘을 지정합니다 왼쪽 상단은 해당 아이콘이 탐색 서랍에 대한 맞춤이며 기본적으로이 동작을 설정하기 때문입니다 bar drawer는 DrawerLayout의 DrawerListener로 인스턴스를 토글합니다 자, 하나의 빠른 메모 아이콘에 대해서 다운로드가 가능합니다

우리는 Holo light와 Holo dark를 모두 가지고 있습니다 그리고 다운로드 할 수있는 모든 밀도 이것을 사용자 정의해야합니다 색상 변경하기 따라서 테마에 맞게 맞춤 설정해야합니다 중요한 다른 것 – 액션 바 서랍 토글의 매우 중요한 부분은 당신이 패스해야한다는 것입니다

활동의 onOptionsItemSelected 메소드를 통해 이것은 실제로 처리됩니다 작업 표시 줄의 왼쪽 상단 영역에서 버튼 누르기를 처리합니다 기본적으로 클릭하십시오 기본적으로 탐색 서랍 용입니다

그게 전부 야 필요한 주 코드 정말 쉽습니다 너희들은 절대적으로 사용을 시작해야한다 그것은 귀하의 애플 리케이션에 대한 이해가된다면

다시 말하지만, 이것은 모두 지원 라이브러리에서 사용할 수 있습니다 어제 밀린 r13 그래서 마지막 탐색 기록은 다음과 같습니다 위로 탐색 그래서 우리는 작년에 네비게이션에 대한 이야기를 전했습니다

작년에 Adam Powell과 Rich Fulcher로부터 올해 우리는 당신에게 조언과 요령을주고 싶었습니다 위로 구현하기 위해 가장 먼저해야 할 일은 작업 표시 줄에 위쪽 버튼을 표시하는 것입니다 여기에서이 방법을 사용하면됩니다

자, Jelly Bean, 안드로이드 41에서, 당신은 할 수 있습니다 자동으로 – 또는 시스템이 자동으로 프레스를 처리합니다 당신은 간단히 각 활동 및 시스템의 상위 액티비티 이름이 당신을 데려다 줄 것입니다 네가 누를 때 올바른 곳으로 이전 버전의 플랫폼의 경우 이 메타 데이터 요소를 사용하여 동일한 값을 제공하십시오

그 점에 주목할만한 가치가 있습니다 사용자가 누를 때 어디로 가야하는지 사용자 지정해야합니다 오히려 취급보다는 모든 위로 물건, 자신의 두 가지 방법을 무시하십시오 getParentActivityIntent를 재정의합니다 메소드를 사용하여 플랫폼을 알리면 방문 할 활동을 알 수 있습니다

또한 맞춤 설정할 수 있습니다 당신이 그 활동에서 처리 할 수있는 엑스트라를 제공함으로써 어떤 일이 일어나는가? 그럼 너 너 onCreateNavigateUpTaskStack 메서드를 재정 의하여 기본적으로 사용자 정의 할 수 있습니다 핵심 업무 이외를 탐색 할 때 예를 들어 당신은 Gmail과 같은 것에서 앱을 얻습니다 누르는 것은 앱 내에 있어야합니다 이 무슨 일이 일어나는지 사용자 정의하자

전체 구조를 여전히 반영한다는 것을 알 수 있습니다 귀하의 앱에 대해 어떻게 그 활동에 참여했는지 알 수 있습니다 그래서 그것은 네비게이션을위한 것이라고 생각합니다 나는 갈거야 나는 닉에게 물건을 건네 주어 반응하는 디자인에 대해 이야기한다

>> Nick Butcher : 고마워, 로마 안드로이드의 기쁨과 힘의 부분은 다양합니다 장치의 작은 전화기, 큰 전화기, 태블릿, 그 사이의 모든 것 개발자가 어쩌면 당신의 UI가 다른 것에서 멋지게 보이는지 확인하기가 어려울 수 있습니다

크기가 큰 장치 운 좋게도 안드로이드는 처음부터 다루어졌습니다 이러한 종류의 차이는 크기가 큰 장치입니다 그래서 거기에 멋진 트릭이 많이 있습니다 RelativeLayout 레이아웃 가중치 등은 확장 가능한 UI를 구축하는 데 도움이됩니다

나는 네가 이미이 모든 것을 사용하고 있습니다 이 문제는 UI를 위아래로 확장한다는 것입니다 지금까지만 너를 잡을거야 나는 당신이 의지한다면 당신이 마주 칠지도 모르는 이슈를 개괄 할 것이다 스케일링 기법과 그 주변에서보다 효과적으로 작업 할 수있는 방법에 대해 설명합니다

따라서 규모를 조정하는 경우 발생할 수있는 문제 중 하나는 다음과 같습니다 지나치게 넓은 레이아웃이있는 곳 여기에서는 텍스트와 이미지를 전체적으로 실행합니다 장치의 너비와 그것은 상당히 불편한 독서 경험을 만들어 낸다 스캔하기가 어렵다

45 ~ 75 자의 선 길이를 목표로하는 것이 이상적입니다 더 이상은 없습니다 매우 불편하고 사용하기 쉽지 않을 것입니다 우리는 자동으로 훌륭한 툴링을 가지고 있지 않습니다 선로 길이를 감지

하지만 멀티 구성 편집기를 사용하면 아이디어를 얻고 레이아웃이 다양하게 보이는지 육안으로 검사하십시오 다른 장치의 이번 호에 실린 당신이 찾아야 할 힌트는 layout_width = "match_parent"와 같이 자신이 타이핑 할 때마다 멈추고 생각하십시오 어떻게하면 더 큰 장치로 확장 할 수 있을까요? 이것이 과도하게 이어질 것인가? 긴 줄 길이 문제? 다른 도전 과제는 다음과 같습니다 당신은 매우 불균형 한 UI로 끝납니다

이 예제 애플리케이션에서는 여기에 있습니다 우리 모든 콘텐츠가 일종의 것임을 알 수 있습니다 왼쪽 상단에 단단히 묶여 있습니다 코너는 거대한 공간을 떠난다 당신이 사용하는 경우이 문제가 발생할 수 있습니다 목록 기반 응용 프로그램

그리고 당신은이 거대한 양의 공백을 다른 것에 갖게됩니다 측면에서 볼 수 있습니다 당신이 정말로 이상적으로 가고 싶은 것은 균형 잡힌 모습입니다 당신은 당신의 어플리케이션에서 뒤로 물러 설 수 있고 전체적인 균형을 원할 것입니다 귀하의 콘텐츠 배포

놓친 기회가 마지막 것입니다 앱이 실행 중일 때 더 큰 장치에서는이 여분의 공간과 여분의 공간을 활용하는 것이 좋습니다 콘텐츠를 먼저 넣어보고 실제로 즐기십시오 다음은 응용 프로그램의 예입니다 많은 이미지를 보여줍니다

이미지가 매우 작아서 보이지 않습니다 잘 사용 가능한 공간의 양에 실제로 반응하지 않는 그런 수치 장치에 표시하고이를 보여줍니다 그래서 그것들은 당신이 겪을 수있는 몇 가지 도전들입니다 확장 방식으로 접근하십시오

여기에 전략이 있습니다 첫 번째 전략은 조합입니다 이것은 기기에서 사용할 수있는 공간이 더 많습니다 다른 콘텐츠를 결합합니다 휴대 전화 나 작은 기기의 경우 레이아웃이 두 ​​개인 경우 충분한 공간을 확보하십시오

이미 수용하고 있다면 이런 종류의 레이아웃을 만드는 것이 더 쉽습니다 조각 파편들은 꽤 잘 덮여있었습니다 나는 너를 데려 가지 않을거야 그들은 당신의 앱을 줄이기 위해 빌딩 블록을 사용하고 있기 때문에 개인을 쉽게 정의 할 수 있습니다

블록을 만들고 다르게 배치하십시오 코드를 한 번만 코딩하고 이동해야합니다 약 이런 종류의 세부 사항을 구성하려면 다음을 수행 할 수 있습니다 이 트릭 대체 레이아웃을 사용하십시오

이러한 모든 작업에는 단일 조각 채우기가 포함됩니다 전체 화면을 규모가 큰 기기의 경우 동일한 작업을 무시하고 둘 다 포함합니다 즉시 파편 layout-w 리소스 한정자를 사용하고 있습니다

600dps의 기기 의 너비 대신에이 구성을 선택하십시오 모든 것을 쓰는 것보다 쉽고, 이것을 사용하고 있습니다 주형 이 코드를 사용하여 마스터 세부 흐름을 만듭니다 마법사를 통해 작업하십시오

주기 그것은 당신의 물건에 달려있다 활동을 생성합니다 이 종류를 만드는 것이 훨씬 쉬워졌습니다 의 레이아웃 Roman Nurik : 주목할만한 가치가 있습니다

현재 Android 스튜디오에서 사용 가능하며 Tor는 우리에게 말할 수 있습니다 사용할 수 없습니다 그러나 우리가 거기에서 그것을 얻기 위해 노력할 무언가입니다 이것은 중요한 도구입니다 >> Nick Butcher : 그리고 이러한 조합 접근법을 구축하는 또 다른 도구는 또 다른 관습입니다 어제 지원 라이브러리의 r13에서 시작된 레이아웃이 방금 나갔습니다

그것은 SlidingPaneLayout입니다 이러한 2 열보기를 작성하는 데 사용하는 SlidingPaneLayout입니다 너는 이것이 내 주인 인 것을 본다 이것은 나의 상세한 창이다 충분한 공간이 있다면, 놓을 것입니다

서로 옆에있어 오른쪽의 경우와 같이 그렇지 않은 경우 겹칠 것입니다 그래서 하나는 서로 위에 있습니다 손가락을 가로 질러 미끄러지 듯 움직이면 마스터가 나타납니다 창을 다시 클릭하고 뒤로 또는 뒤로 슬라이드하여 겹쳐진보기로 이동할 수 있습니다

그것은 가치가있다 이것이 DrawLayout과 다른 점에 대한 차이점을 설명합니다 이 두 개의 창은 실제로 같은 비행기에서 그래서 크롬이 정상을 가로 질러 오는 항해 끌기와 달리, 이것들은 콘텐츠 창이 있습니다 그들은 함께 움직여 매우 단단히 연결되어 있다고 생각할 수 있습니다

>> Roman Nurik : 요약하면 서랍 레이아웃은 기본 앱 탐색을위한 것입니다 Chrome과 콘텐츠의 종류가 다릅니다 이것은 내용에 관한 모든 것입니다 이것은 효과적으로 마스터 세부 정보 흐름을 처리하고 다양한 방향 및 태블릿에서 단순화하는 도구입니다 >> Nick Butcher : 굉장해

이 SlidingPaneLayout을 구현하려면 루트 레이아웃으로 정의하십시오 두 아이를 줘 첫 번째 아이는 그 주인 또는 왼손을 형성 할 것입니다 두 번째 자식이 내용 창으로 사용됩니다 레이아웃 너비를 정의합니다 그 두 가지 너비의 합계가 사용 가능한 공간의 양을 초과하는 경우 장치에, 그들은 겹쳐서 당신은이 슬라이딩 동작을합니다

장치가 충분하면 방, 그것을 나란히 보여줄 것입니다 또한 레이아웃 가중치를 1로 설정할 수 있습니다 콘텐츠 창은 표시 될 때와 같이 추가 공간을 채우기 위해 확장됩니다 그 자체로 콘텐츠 창의 layout_width를 최소 크기라고 생각하면됩니다

이 반응 형 레이아웃을 구축하는 쉬운 방법입니다 이것이 조합형 전략을위한 것이 었습니다 계속 진행할 다음 전략은 매크로 리플 로우 (macro reflow)라고 부르는 것입니다 이 리플 로우의 아이디어는 콘텐츠의 주요 블록을 재정렬하십시오 그래서 여기에 우리가 볼 수있는 예가 있습니다

가로 방향으로 더 큰 장치에 표시하면 콘텐츠 블록을 실제로 과도한 회선 차선이나 불균형 한 컨텐츠를 갖는 문제를 피하십시오 너 여기있어 조각을 사용하여 볼 수 있습니다 우리는 단지 한 번만 내용을 정의했으며 매우 간단하게 다른 레이아웃은 방위를 지정합니다 가로 일 때 그들은 쌓일 것입니다

서로 옆에 그들이 초상화에있을 때, 그들은 서로의 위에 쌓일 것이다 정말 간단하지만 큰 차이를 만듭니다 그래서 알기위한 다음 전략은 우리가하는 것입니다 마이크로 리플 로우 호출

따라서 이러한 주요 블록을 사용하고 이동하는 것보다, 실제로는 개별 블록을 살펴보고 그에 따라 표현을 변경하려고합니다 얼마나 많은 공간을 레이아웃해야하는지 이러한 종류의 미세 리플 로우는 우리가 차원 파일이라고 부르는 것 바라건대 많은 사람들이 이미 이것을 사용하고 있습니다 내가 원하는 누군가가 그렇지 않은 경우를 대비하여 강조하기

이 접근 방식은 차원 파일을 엄청나게 사용하므로 많은 사람들이 이것을 사용하고 있습니다 레이아웃에서와 마찬가지로, 누구도 열심히 노력하지 않기를 바랍니다 문자열을 레이아웃에 코딩 할 수 있습니다 레이아웃 구성과 당신의 크기와 치수 등등 너는 정말로 그 모든 것들을 넣고 싶다

두 가지 이유로 치수 파일이나 스타일에 저장하십시오 첫째로, 이것들을 재사용 해 보겠습니다 일관성있는 마진을 가질 수 있도록 앱 전체에서 서로 다른 화면에서 동일한 크기 응용 프로그램 전체에 일관된 텍스트 사이징이 가능합니다 둘째로, 당신은 재정의 서로 다른 크기의 장치에 대체 크기와 치수를 제공하십시오 이 예에서 우리는 텍스트 크기와 여백 및 줄 간격에 대한 표준 치수를 정의했습니다

이 치수 파일에서 정의하고 응용 프로그램의 '다른 화면 더 큰 장치를 사용하면 다양한 크기를 제공 할 수 있으므로 실제로 동일한 레이아웃을 사용하기 쉽지만 텍스트 사이징 및 기타 여백 크기를 늘리거나 줄 간격을 조정하여 더 큰 장치에서 더 나은 환경을 경험할 수 있습니다 >> Roman Nurik :이 기능을 사용하면 더 큰 장치에서 화면을 재구성하여 재조정 할 수 있습니다 네가 나아갈 때 떨어져서 당신은 곁눈질하고 당신은 화면을 보며, 당신은 모든 것을 볼 수 있습니다 왼쪽 상단

이러한 유형의 접근 방식은 실제로 재조정에 도움이됩니다 매우 중요합니다 특히 태블릿 UI의 경우이 기술을 사용하십시오 >> Nick Butcher : 특히 Nick Butcher가 여기서 부르는 한 가지 점이 있습니다 이 예에서는 SW를 사용하고 있습니다

또는 가장 작은 너비 한정자 이것이하는 것은 장치의 가장 작은 너비를 봅니다 세로 방향의 너비입니다 단지 그것을 사용합니다 그래서 그것은 방향 불가지론 자입니다

여기에 이것을 사용하기로 선택한 이유는 이러한 차원 중 일부입니다 당신이 장치를 회전 시켰기 때문에 바뀌 었습니다 텍스트 크기를 바꾸기 위해 다시 레이아웃 할 때 장치를 회전 시키면 텍스트 크기를 변경하면 혼동을 일으킬 수 있습니다 SW, orientation agnostic 한정자와 같은 것을 사용하면 치수를 안정적으로 유지할 수 있습니다 일부 측정 기준은 변경됩니다

그래서 이런 종류의 마이크로를하는 몇 가지 예가 있습니다 리플 로우는 마진 포인트입니다 때로는 조합이나 리플 로우를 사용하여 이동할 수 없거나 외설물에 더 많은 내용을 표시하지만 여전히 불균형 또는 지나치게 길게 피하고 싶다 선 길이 대신 페이지 여백을 도입 할 수 있습니다

이렇게하기위한 기술 MarginPoint라는 콘텐츠 컨테이너에 스타일을 설정하고 있습니다 우리는 그것을 사용할 것입니다 스타일을 사용하여 내용 컨테이너의 레이아웃 너비를 제공합니다 더 작은 장치에서 스타일 여기에 부모와 일치하는 말을하려고합니다 너가 최대 다량까지 도달 할 때까지 자랄 것이다 크기에 도달하려면 여기에서 600dps를 사용합니다

그 크기에 도달하면 클램프하고 결코 커질 수 없습니다 또한 레이아웃 중력을 센터에서는 콘텐츠를 가운데에 배치하고 이러한 여백 포인트를 사용하므로 과도하게 넓거나 불균형 한 느낌을 받으십시오 Roman Nurik : 2 개의 빠른 포인트 w600dp 수식어, 한정어를 사용하는 것이므로 그 너비가 화면의 너비가 아니라 콘텐츠의 너비 콘텐츠에 여분의 여백 또는 여백이있는 경우 또는 전환을 결정하기 위해 수학을 수행 할 때이를 고려해야합니다

포인트 내가 원했던 또 다른 요점은 모든 시나리오에서 이것이 작동하지 않을 수도 있다는 것입니다 그 경우에 따라 휴대 전화에서 태블릿 및 전체 화면 활동에 대한 대화 상자를 사용하는 것은 물론, 전화 크기 UI 그 방법은 ThemeHolo

DialogWhenLarge 테마를 사용하는 것입니다 사용자 정의 유사한 자원 규정 자 기반 접근법을 사용하는 것 >> Nick Butcher : 이런 종류의 미세 리플 로우 접근법을 제공 할 마지막 지점입니다 목록에서 그리드로 전환 중입니다 따라서 앞서 언급 한 것처럼 ListView는 불균형을 느낄 수 있습니다

대형 장치로 성장할 때 그리드 표시로 전환하는 것이 좋습니다 당신은 그것을 위해 작동하는 내용을 가지고 있습니다 일관된 키가 있거나 매우 큰 것이 있습니다 당신이 포함 할 수있는 그래픽의 시각적 인 종류, 이것은 정말로, 정말로 잘 작동 할 수 있습니다 이렇게 건축하기 위하여 이런 종류의 접근 방식은 ListView를 사용하는 대신 GridView를 형세

그런 다음 열 수에 대해 정수 리소스를 사용합니다 그런 다음 장치의 크기에 따라 표시 할 열 수를 정의하십시오 기본적으로, ListView 표현을 제공하는 단일 열로 이동합니다 대형 장치의 경우, 두 개 이상의 열까지 단계별로 조정하십시오 어댑터의 변경 사항을 존중하기 만하면됩니다

그래서 어댑터에서, 당신은 매우 동일한 정수 리소스를 쿼리하고 얼마나 많은 GridView가 개별 항목에 대해 다른 레이아웃을 사용하고 팽창하기를 원하는 열 그래서 그것은 하나의 열 또는 여러 열의 격자 스타일 레이아웃의 목록 스타일 항목이 될 수 있습니다 전망 >> Roman Nurik : GridView 및 ListView는 매우 유용합니다 API 측면에서 유사합니다 둘 다 상속됩니다 둘 다 AbsListView 클래스의 하위 클래스입니다

따라서 ListView와 GridView를 서로 다른 경우로 전환하면 잘 앱에서 자유롭게 그렇게 할 수 있습니다 >> Nick Butcher : 멋지다 그것들은 당신이 확장 가능한 접근 방식과 어떻게 반응 형 디자인이 당신을 도울 수 있습니다 그리고 내가 원했던 한 점 우리가 방금 말했던 그런 종류의 전략들 모두에 대해 휴대 전화 레이아웃 및 태블릿 레이아웃에 대해 이야기합니다

그들 각각은 내용에 기초를 두었습니다 그것 콘텐츠 우선 접근 방식을 취했습니다 따라서 콘텐츠를 정의함으로써, 이러한 전환점은 엄격한 장치 용어처럼 미래를 생각하지 않고 자기 자신을 조금 증거 해 크기와 모양 또는 방향의 종횡비가 누구인지 아는 사람 장치가 곧 돌아올 것이며 응용 프로그램에서 그들과 대처해라 콘텐츠를 먼저 배치하고 콘텐츠 크기에 대해 생각함으로써, 어떤 장치가 함께 제공 되든간에 가장 적합한 장치를 선택하게됩니다

그것을 위해 이제 로마로 돌려 주겠다 Holo 시각적 언어 구현에 관한 프로 팁 Roman Nurik : 너무나 시각적 인 말로, 몇 가지 다른 것을 의미합니다 그냥 정말 빠른 박람회 나 배경을 추측합니다

Android 30, Honeycomb, 안드로이드에 대한 UI를 재 설계하거나 다시 생각해 보았습니다 언어 그리고 내가 할 수있는 두 가지 주요 교리가있다 Holo 시각적 언어에 대해 지금 당장 생각해보십시오

그것을 구현하는 과정 첫 번째는 콘텐츠 대 크롬에 초점을 맞추고, 그래서 우리는 콘텐츠에 대해 우리가 사용할 수있는만큼 많은 픽셀을 사용하고자합니다 상자와 경계선과 크롬 같은 것을 보여주는 것보다 뒤에있는 기계가 아닌 정보를 보여주는 것에 초점을 맞춘 것과 같습니다 그것은 모든 것을 작동하게 만듭니다 두 번째 신조, 나는 그것이 하위 신조라고 생각한다

처음에는 공간과 타이포그래피에 중점을두고 계층 구조를 전달합니다 테두리와 상자 같은 것들보다 그래서 우리가이 과정을 진행할 때, 그것이 영향을 끼치기 때문에 염두에 두십시오 이 결정의 일부 그래서 당신이해야 할 첫 번째 일은 Holo를 구현하고 Holo 시각적 언어를 응용 프로그램에서 사용하고 Theme

Holo를 상속받습니다 테마 또는 그 자손 중 하나 한 가지주의해야 할 점은 이것이 사용할 수 있다는 것입니다 API 11 이상에서는 Android 30 이상이므로이를 완화하기 위해 할 수있는 한 가지 방법은 기본 테마에 대해 이러한 종류의 전환 동작이 있어야합니다

너는 주제를 물려받을 수있어 홀로 라이트, 예를 들어, API 11 이상에서 사용할 수 있고 그 다음에 ThemeLight 만 있으면 어디서나 사용할 수 있습니다 플랫폼의 다른 버전에서

>> Nick Butcher :이 트릭은 실제로 기본 테마 기본 테마의 상속 된 테마와 서로 다른 전환점을 사용하는 것이 편리합니다 일부 플랫폼 비헤이비어 다른 API 수준에서 도입 된 것일 수 있습니다 이 기본 테마 비헤이비어를 사용하면이를 계층 구조에 삽입 할 수 있습니다 정말 편리합니다

>> Roman Nurik : 우리는 I / O 응용 프로그램에서 이것을 많이 사용합니다이 응용 프로그램은 어느 시점에 공개 될 것입니다 아주 빨리 우리는 이것을 어떻게 활용하는지 볼 수 있습니다 우리가 ActionBarCompat 라이브러리를 릴리스 할 때 처리 할 것이라고 언급하고 싶습니다 귀하의 활동 테마 또는 귀하의 응용 프로그램 테마에 대한 당신을 위해이 많은 것들

단순히 ThemeAppcompatLight를 상속하지만 파일 이름이 변경 될 수 있습니다 오히려 이 스위치를 켜면 이걸 상속받을 수 있습니다 이것은 곧 다시 올 것이다

일단 ThemeHolo 주제를 물려 받았다면 우리는 더 나은 방법을 알아 내야합니다 그 일단 당신이 그 주제를 물려 받았다면, 그 자원을 사용할 때입니다 프레임 워크는 무료로 제공합니다

네가 좋아하는 가장 좋아하는 것 중 하나 인 Nick, 프레임 워크에 기대다 무료로 제공하는 것을 사용하여 재 구현할 필요가 없습니다 이 모든 것을 처음부터 >> Nick Butcher : 닉 부처님 약간의 세부 사항을 간과 할 수 있기 때문에 재고 UI가 보이는 방식을 모방하려고합니다

실제로 작성한 스타일과 동일한 스타일을 재사용 할 수 있습니다 똑같은 일관된 행동을 취하십시오 나는 Rich Fulcher로부터 그 말을 훔쳤다 고 생각한다! Roman Nurik : 맞아 그래서 한 가지주의 할 점은 다음 몇 개의 화면에서, 다음 슬라이드 몇 장, 우리는이 물음표 android 콜론 구문을 사용할 것입니다 기본적으로 테마 속성 참조입니다

우리는 기본적으로 테마에 저장되며, listPreferredItemHeightSmall과 같은 차원 파일이든, 작은 목록 항목의 표준 항목 높이 또는로드와 같은 스타일 리소스 스피너 예를 들어, 큰로드 스피너 또는 불확정 – 불확정 진행률보기에서는 진행률 막대를 만들고 그 스타일을 물음표로 설정하기 만하면됩니다 Android 진행률 표시 줄 스타일 큰 특성, 테마 특성 예를 들어 드로어 블을 사용하려는 경우 드로잉을 모두 내장합니다 예를 들어 drawableTop과 같이 listChoiceIndicatorSingle 드로잉을 사용할 수 있도록 테마 TextView 또는 drawableLeft 등의 속성 그래서 정말로 당신은 무료로 많은 물건을 얻습니다 나는 너를보기 위해 확실히 조언한다

androidRAttr 자바 클래스에 대한 문서에서, 나는 생각한다 여기에는이 모든 것이 포함되어 있습니다 당신은 당신의 애플 리케이션에서 사용할 수 있습니다

그래서 저는 그것에 대해 조금 이야기하고 싶습니다 공간 및 활판 인쇄용 자료 첫 번째는 공간입니다 이 화면을보십시오 그래서 저는이 스크린의 근본적인 문제가 시각적으로 부족하다는 점에서 생각합니다

계층 구조, 시각적 구조 그냥 떠 다니는 요소가 있습니다 이 거대한 공간에는 어떤 종류의 계층 구조도 없습니다 그래서 한 가지 방법으로 우리는 이것이 분배기를 도입하는 것을 고칠 수 있습니다 그래서이 분배기들은 기본적으로 그것뿐입니다, 그들은 화면의 다른 부분을 나눕니다

정말 최소한의 금액을 사용하는 종류의 상자와 경계선을 사용하는 대신 계층 구조를 도입 할 수있는 픽셀 수 이러한 분배기를 구현하는 것은 매우 간단합니다 show dividers 속성을 설정하기 만하면됩니다 선형 레이아웃에서 중간에이 구분선을 다른 어린이들 사이에 그립니다 그런 다음 그 공간에 그릴 드로어 블을 제공합니다 여기에서 볼 수 있듯이 시스템은 표준 드로어 블을 제공합니다

공간 그것도 주목할 가치가 있습니다 계층 구조를 도입하기 위해 구분선을 사용하는 것 외에 표준을 여전히 사용해야합니다 16 dp 여백 및 디자인 가이드에서 언급 한 표준 48 dp 시각적 리듬과 그것은 정말로 당신의 스크린에 리듬과 같은 구조와 종류를 확립하는데 도움이 될 것입니다 그래서 디바이더에 대해 이야기하고 싶었던 또 다른 사항은 디바이더 패딩입니다 그래서 당신이 제공한다면 구분선 패딩 속성은 여기에 8dp입니다

실제로는 위에 약간의 공간을 그립니다 그리고 분배 자의 아래쪽이나 왼쪽과 오른쪽에 위치하게됩니다 계층 그래서이 경우 우리가 설정하지 않은 것을 상상해보십시오 텍스트와 삭제 아이콘 사이의 구분선에 채우는 구분선 그것은 단지 테이블처럼 보입니다

그것은 단지 사물의 격자처럼 보일 것이고 명확하지 않을 것입니다 진짜 계층 구조가 무엇인지 그러나 패딩을 도입하자 마자 즉시 이것들이 일련의 목록 항목이고 각 목록 항목 내에 두 개의 분리 된 터치 대상 리 포커싱이라는 주제와 함께 크롬이 아닌 콘텐츠에서, 우리는 버튼을 위해서도 그렇게하기를 원합니다 우리는하지 않는다

단추 주위에 테두리와 상자를 그리기를 원한다 방법 이 테두리없는 버튼 스타일은 매우 일반적으로 디바이더와 함께 사용되므로 UI를 단순화하는 데 정말로 도움이됩니다 정말 크롬을 통해 콘텐츠에 집중하는 데 도움이됩니다 그래서주의해야 할 것은 경계가 없다는 것입니다

따라서 경계선을 설정하는 데 디바이더가 필요하지만 버튼을 터치 할 때, 당신이 터치 영역임을 나타 내기 위해 불이 켜집니다 너가하는 일이야 에 연기 그래서 그것들을 사용하기 위해서 간단하게 이미지를 만듭니다 버튼 또는 버튼을 클릭하고 해당 스타일을 borderlessButtonStyle 테마 속성으로 설정합니다

이것은 무료로 모든 것을 제공합니다 또 다른 유형 – 테두리없는 변형 버튼은 버튼 막대이므로 대화 하단이나 화면 하단에있는 경우 두 가지 작업, 선형 레이아웃에서이 버튼 막대 스타일을 사용할 수 있으며 자동으로 분배기를 만들고 가중치를 올바르게 적용하십시오 실제로, 그것은 가중치를 적용하지 않습니다 신경 쓰지 마 따라서 자동으로 이러한 구분선이 추가되고 버튼 막대를 사용할 때는 버튼 순서를 올바르게하십시오

기본 버튼은 항상 오른쪽에 있어야하며, 따라서 삭제 대 삭제 또는 삭제 대 취소 비록 그것이 부정적인 행동 (예 : 삭제)이라 할지라도, 선호하는 항목이 실제로 오른쪽에 있어야합니다 Android 40부터 매우 중요합니다 이상

그래서 그 버튼 모음 스타일을 사용하고 각각 그 버튼의 – 나는 그 버튼의 길을 너무 많이 말하고 있었다 >> Nick Butcher : 모든 의미를 잃어 버렸습니다 Roman Nurik : 네 각 단추 buttonBarButtonStyle을 적용해야합니다 누군가 내가 방금 몇 번이나 말했는지 계산할 필요가 있습니다

단어 버튼 20 대입니다 어쨌든, 매우 간단합니다 다시, 이것은 아주 적은 코드입니다 너 정말 많이 하는게 아니야

너는 단지 스타일을 설정하는거야 >> Nick Butcher : 프레임 워크에 기대어 프레임 워크에 기대어 놓습니다 Roman Nurik : 네, 가져 가세요 다시 말하지만 터치 강조가 있습니다 생각해 볼 또 다른 사항은이 터치 피드백을 버튼이 아니며 레이아웃의 종류 또는 뷰 계층 구조를 가질 수 있습니다

Reto는 오늘 아침 일찍이 세션에서이 점을 언급했습니다 나는 그것을 포함시키지 않을거야 하지만 실제로 drawable 인 selectableItemBackground를 사용하면 드로어 블 (drawable)로 해석되며, 이를 전경이나 배경의 배경으로 사용하는 것은 정말 좋은 방법입니다 그렇게 또한 목록을 사용하는 경우 list selector 속성을 사용하여 거기에 사용할 올바른 드로어 블을 제공합니다

>> Nick Butcher :이 터치 피드백이 얼마나 중요한지 강조하고 싶지 않습니다 목발과 크롬을 뒤로 젖히면, 사용자는 무엇이 상호 작용하고 무엇을합니다 상호 작용이 필요한 것은 무엇이든 정말로 필요합니다 당신이 만질 때마다 반응합니다 이런 것들을 사용하면 실제로 의사 소통을 할 수 있습니다

그 또한, 당신은 상호 작용할 수 있습니다 경계 상자를 사용하지 않고 경계선없는 단추를 사용할 때, 터치하면 전체 대화식 범위가 강조 표시되므로 다음에 사용자가 다시 방문 할 때 요소에 이미 상호 작용할 수있는 모델과 캔트 Roman Nurik : 맞아 그래서 또 다른 중요한 holo 시각적 언어의 시각적 요소는 목록 제목입니다

목록 제목은 기본적으로 목록 항목의 다른 그룹을 분리하는 것들, 그리고 그들은 정말로 14sp이어야합니다, 대담한, 모든 대문자, 예를 들어 작업 표시 줄 탭처럼, 그리고 그들은 2 dp 구분 기호가 있어야합니다 아래에 따라서이 모든 것을 실제로 파악할 필요는 없습니다 밖으로 물건을, 당신은 실제로 그냥 ListSeparatorTextViewStyle을 사용할 수 있습니다 TextView에 설정하고 자동으로 스타일링을 얻으십시오 이 작업을 사용자 정의하여 브랜드의 액센트 색상, 그런 다음 꼭 그 값을 사용하십시오 이것은 훌륭한 도구의 일종이다

공개를 위해 사용하려면 목록의 공간, 목록의 콘텐츠 자체가 필요합니다 그래서 우리는 공간에 대해 많이 이야기했습니다 나는 잠시 이야기를 나누고 싶다 타이포 그라피는 홀로 시각 언어에서 매우 중요합니다 안드로이드 4

1 우리는이 강력한 견고한 타이포그래피 팔레트를 제공했을 것입니다 그래서 Roboto의 새로운 가중치와 분산을 사용하여 실제로 의사 소통을 돕습니다 텍스트 크기를 사용하여 구조와 계층 구조를 전달하는 대신 가중치를 사용하여 그걸 할 수있는 좋은 방법 이죠 따라서 두 가지 간단한 노트는 얇은 것을 사용하지 않습니다 정말 작은 텍스트

큰 표제에 가장 좋습니다 또한 빛은 머리글에 가장 적합합니다 응축 된 물은 정말 좋아요 뉴스 기사 제목 라이트는 본문 텍스트에서 잘 작동하지만 당신이 사용해야하는 최소 크기의 종류를 알고있을 필요가있다

>> Nick Butcher : 규칙에 따라 규칙적으로 또는 약간만 켜고 싶을 것입니다 더 큰 타입의 크기는 당신이 서고 싶은 것들을 위해 얇고 어쩌면 더 큰 빛을 예비합니다 본질적으로 더 큰 크기를 가지고 있음에도 불구하고 더 가벼운 유형은 정말 좋아 보인다 >> Roman Nurik : 빠른 메모입니다 Android 4

1 이상입니다 이걸 사용하고 싶다면 이전 버전의 플랫폼에서는 Google 글꼴에서 이러한 글꼴을 다운로드 할 수 있으며 가져올 수 있습니다 프로젝트에 추가하십시오 하나의 마지막 빠른 메모, 또 다른 중요한 부분 Holo 시각 언어의 또 다른 장점은 당신만큼 공간을 많이 차지하는 풀 블리드 이미지입니다 콘텐츠 전용으로 사용할 수 있습니다 당신이 가끔 실행하는 것들 중 하나는 모든 사진이 동일한 가로 세로 비율로 표시되는 것은 아니므로 이미지를 사용할 수 있습니다

전망 일관된 종횡비로 이미지보기를 사용하고 이미지에 놓을 수 있습니다 크기를 이미지보기에 입력하여 자르기를 가운데로 맞춰 실제로 이미지가 맞는지 확인하십시오 멋지게 이미지보기에서 귀하의 레이아웃과 엉망의 일종하지 않습니다 여기서 주목해야 할 것은 이것이 어떤 경우에 자르기를 끝내는 것입니다

당신 그건 정말 좋은거야 베이컨 사진이나 고기 같은 것들은 괜찮아 풍경 눈이 잘리는 사람들의 사진에는 좋지 않습니다 그 소름 끼치는 종류

따라서 센터 작물 기술은 UI가 잘 정렬되고 잘 맞는지 확인하는 데 매우 좋습니다 이러한 풀 블리드 이미지를 사용하는 경우 이미지 사이에 구분 기호를 사용하는 것이 가장 좋습니다 매우 가벼운 구분 기호, 아마도 하나의 dp 또는 너무, 정말 다른 색 이미지가 서로 섞이지 않습니다 그래서 전에 – 그것은 많은 것들을 덮을 것이 었습니다 그리고 분명히 훨씬 더 많습니다

우리는 모든 것을 다 커버 할 수는 없지만, 내가 원하는 마지막 것 덮개는 홀로 자산을 생산하는 것입니다 그래서 우리가 보았 듯이 XML을 사용할 수 있습니다 앱에 많은 애셋을 실제로 제공하는 일부 스타일링 도구 하나, 당신은 아이콘과 PNG 파일 등등을 여전히 필요로합니다 그걸위한 세 가지 도구가 정말 좋습니다 첫 번째는 Android 저작물 스튜디오입니다

작업 표시 줄 및 알림 아이콘에 대한 아이콘을 생성합니다 적절한 크기 조정, 착색 불투명도 등 두 번째는 액션 바 스타일 생성기입니다 귀하의 앱에 브랜드의 액센트 색상을 지정한다고 가정하면 그렇게하면이 악센트 색상을이 도구에 넣으면 자동으로 생성됩니다 작업 표시 줄, 탭 표시기 및 선택 가능한 항목 배경 물건

자동으로 이러한 종류의 악센트 부호가있는, 누르고 집중된 상태 >> Nick Butcher : 그리고 오른쪽 계층 구조는 당신은 당신의 프로젝트에 들어가기 만하면됩니다 슈퍼 간단합니다 Roman Nurik : 네 그리고 마지막으로 같은 확인란과 버튼에 대해 똑같은 작업을 수행하는 Android 홀로그램 색상 도구 그런 것들

자, 저는 제프와 이 두 가지 도구를 작성한 Jerome은 개발자 샌드 박스에 있으므로 버그가있는 경우 보고하고 괴롭히지 그들은 정말 멋진 사람들입니다 네가 원하면 데모,이 모습의 라이브 데모, 확실히 그들을 확인하십시오 >> Nick Butcher : 그들은 훌륭한 도구입니다 그냥 사용하십시오

>> Roman Nurik : 현저한 버그는 없습니다 나는 그것이 우리의 대화를위한 것이라고 생각한다 고맙습니다 다시 한번 오기를 바랍니다 나는 우리가 할 수없는 빠른 shoutout을하고 싶다 지금 당장 질문을 해보지 만, Nick과 나는 둘 다 Android 플랫폼 업무 시간 내에있을 것입니다

여기서 우리는 질문을 할 수있을 것입니다 나는 또한 우리가 안드로이드를 가지고 있다고 언급하고 싶다 디자인 실천 라이브 디자인 실습 내일 오후 2시에 뭐야? 원하는 경우 컴퓨터 도구를 사용하지 않고 처음부터 앱을 디자인하는 방법을 배우려면 그냥 스케치하고 와이어 프레임, 분명히 오후 2시에 그것을 확인해 보러 갈거야 >> Nick Butcher : 그리고 라이브 스트림을 원격으로 시청하는 사람들에게, Google+에서 실제로 활발히 활동하고 있으므로 Google+를 팔로우하거나 Android에 가입하세요

디자이너 커뮤니티 Developers 커뮤니티도 좋습니다 그리고 대화에 참여하십시오 해시 태그 #ADiA 및 #AndroidDesign 태그에 Android 디자인 실천에 동참하십시오 매주

매우 감사합니다 [박수]