diff options
Diffstat (limited to 'docs/html-intl/intl/ko/design/patterns/navigation.jd')
-rw-r--r-- | docs/html-intl/intl/ko/design/patterns/navigation.jd | 213 |
1 files changed, 213 insertions, 0 deletions
diff --git a/docs/html-intl/intl/ko/design/patterns/navigation.jd b/docs/html-intl/intl/ko/design/patterns/navigation.jd new file mode 100644 index 0000000..8e5c30b --- /dev/null +++ b/docs/html-intl/intl/ko/design/patterns/navigation.jd @@ -0,0 +1,213 @@ +page.title=뒤로 및 위로 탐색 기능이 포함된 탐색 +page.tags="navigation","activity","task","up navigation","back navigation" +page.image=/design/media/navigation_between_siblings_gmail.png +@jd:body + +<a class="notice-developers" href="{@docRoot}training/implementing-navigation/index.html"> + <div> + <h3>개발자 문서</h3> + <p>효과적인 탐색 구현하기</p> + </div> +</a> + +<p itemprop="description">일관적인 탐색 기능은 전반적인 사용자 환경에 필수적인 요소입니다. 일관성 없고 예상대로 진행되지 않는 기본 탐색은 +사용자에게 많은 실망을 줍니다. Android 3.0에서는 +글로벌 탐색 동작에 중요한 변경 사항을 도입했습니다. 뒤로 및 위로 탐색에 대한 +가이드라인을 꼼꼼히 따르면 사용자가 예상 가능하고 신뢰할 수 있는 탐색 기능이 탑재된 앱을 만들 수 있습니다.</p> +<p>Android 2.3 이하 버전에서는 +앱 내 탐색 기능을 지원하기 위해 시스템의 <em>뒤로</em> 버튼에 의존했습니다. Android 3.0에서는 작업 모음을 도입함으로써 앱 아이콘 및 왼쪽 방향 캐럿으로 이루어진 2차 탐색 메커니즘인 +<em>위로</em> 버튼이 추가되었습니다.</p> + +<img src="{@docRoot}design/media/navigation_with_back_and_up.png"> + +<h2 id="up-vs-back">위로 및 뒤로 비교</h2> + +<p>위로 버튼은 화면 +간의 계층적 관계를 기반으로 앱 내에서 탐색할 때 사용됩니다. 예를 들어, 화면 A에 표시된 항목 목록에서 항목을 선택하면 항목에 대한 세부 정보를 표시하는 화면 B로 이동하게 되는데, 이때 +화면 B는 화면 A로 +돌아가는 위로 버튼을 제공해야 합니다.</p> +<p>화면이 앱의 최상단에 있는 경우(즉, 앱의 홈인 경우), 위로 +버튼이 표시되지 않아야 합니다.</p> + +<p>시스템의 뒤로 버튼은 사용자가 최근에 작업한 화면 +기록을 역순으로 탐색할 때 사용됩니다. 일반적으로 이 버튼은 앱의 계층 구조가 아닌 화면 +간의 일시적인 관계를 기반으로 합니다.</p> + +<p>또한, 앞서 본 화면이 현재 화면의 계층적 상위 화면일 경우 +뒤로 버튼을 누르는 것과 위로 버튼을 누르는 것의 결과가 동일하며, 이는 흔하게 +발생하는 동작입니다. 하지만 사용자가 앱 내에 머무는 위로 버튼과 달리, 뒤로 +버튼을 누르면 홈 화면 또는 다른 앱으로 돌아갈 수 있습니다.</p> + +<img src="{@docRoot}design/media/navigation_up_vs_back_gmail.png"> + +<p>뒤로 버튼은 화면 간 탐색과 직접적으로 관련 없는 몇 가지 동작도 지원합니다. +</p> +<ul> +<li>부동 창 해제(대화 상자, 팝업)</li> +<li>상황에 맞는 작업 모음 해제 및 선택한 항목에서 강조 표시 제거</li> +<li>화상 키보드(IME) 감추기</li> +</ul> +<h2 id="within-app">앱 내 탐색</h2> + +<h4>진입 지점이 여러 개인 화면으로 이동하기</h4> +<p>일부 화면은 앱의 계층 구조 내에서 엄격한 위치를 가지고 있지 않는 경우가 있으며, 이 경우 여러 진입 지점을 +통해서 접근할 수 있습니다. 예를 들어 설정 화면은 앱 +내의 다른 어떤 화면에서도 접근이 가능합니다. 이러한 경우, 위로 버튼을 누르면 뒤로 버튼과 +동일하게 참조하는 화면으로 돌아가게 됩니다.</p> +<h4>화면 내에서 뷰 변경하기</h4> +<p>화면의 뷰 옵션 변경은 위로 또는 뒤로 버튼의 동작을 변경하지 않습니다. 이는 화면이 앱 계층 구조 내에서 여전히 동일한 위치에 +있고, 어떠한 탐색 기록도 새로 생성되지 않기 때문입니다.</p> +<p>이러한 뷰 변경의 예는 다음과 같습니다.</p> +<ul> +<li>탭 및/또는 좌우 스와이프를 사용하여 뷰 전환하기</li> +<li>드롭다운(겹쳐진 탭이라고도 함)을 사용하여 뷰 전환하기</li> +<li>목록 필터링하기</li> +<li>목록 정렬하기</li> +<li>표시 문자 변경하기(예: 확대/축소)</li> +</ul> +<h4>형제 화면 간 탐색하기</h4> +<p>항목 목록에서 개별 항목의 상세 뷰로의 이동을 앱에서 지원하는 경우, 해당 항목에서 목록의 이전/이후 +항목으로 직접 이동할 수 있도록 지원하는 것이 바람직한 +경우도 있습니다. 예를 들어 Gmail의 대화에서 왼쪽 또는 오른쪽으로 간단하게 스와이프하여 동일한 받은 편지함에 있는 신규 또는 이전 메일을 +볼 수 있습니다. 화면 내에서 뷰를 변경하는 것과 마찬가지로, +탐색은 위로 또는 뒤로 버튼의 동작을 바꾸지 않습니다.</p> + +<img src="{@docRoot}design/media/navigation_between_siblings_gmail.png"> + +<p>하지만 참조 목록으로 같이 +묶여 있지 않은 연관된 상세 뷰 사이를 탐색할 때는 주목할 만한 예외적인 상황이 발생합니다. 예를 들어, Play Store에서 +동일한 개발자가 만든 여러 앱 또는 동일한 아티스트의 여러 앨범을 탐색하는 경우가 그렇습니다. 이러한 경우, 링크를 따라갈 때마다 +기록이 생성되므로, 뒤로 버튼을 누르면 이전에 본 화면으로 이동합니다. 위로 버튼을 누르면 계속해서 이러한 연관된 화면을 +거치지 않고 가장 최근에 본 컨테이너 화면으로 이동합니다.</p> + +<img src="{@docRoot}design/media/navigation_between_siblings_market1.png"> + +<p>상세 +뷰에 대한 지식을 바탕으로 더욱 스마트한 위로 버튼 동작을 구현할 수 있습니다. 위에서 설명한 Play Store 예를 확장하여 사용자가 +마지막으로 본 도서에서 해당 도서를 각색한 영화의 세부 정보 화면으로 이동했다고 가정해 봅니다. 그러한 경우, 위로 버튼을 누르면 사용자가 이전에 탐색한 적이 없는 +컨테이너(영화)로 이동할 수 있습니다.</p> + +<img src="{@docRoot}design/media/navigation_between_siblings_market2.png"> + +<h2 id="into-your-app">홈 화면 위젯 및 알림을 통한 앱 탐색</h2> + +<p>홈 화면 위젯이나 알림을 사용하여 사용자가 앱 계층 구조 내에 +있는 화면으로 바로 이동할 수 있게 할 수 있습니다. 예를 들어, Gmail의 받은 편지함 위젯과 새 메시지 알림은 +모두 받은 편지함 화면을 건너뛰고 사용자가 해당 메일로 바로 이동할 수 있게 해줍니다.</p> + +<p>이러한 두 경우 모두 위로 버튼을 다음과 같이 처리합니다.</p> + +<ul> +<li><em>일반적으로 목적지 화면이 +앱 내의 특정 화면에서 출발한 경우</em>, 위로 버튼은 해당 화면으로 이동해야 합니다.</li> +<li><em>그 외의 경우</em>, 위로 버튼은 앱의 최상위("홈") 화면으로 이동해야 합니다.</li> +</ul> + +<p>뒤로 버튼의 경우, +앱의 최상위 화면으로 이동하는 완전한 상위 탐색 경로를 태스크의 백 스택에 삽입하여 탐색을 더욱 예측 가능하게 만들어야 합니다. 이는 앱에 어떻게 진입했는지 잊어버린 +사용자가 앱에서 나가기 +전에 앱의 최상위 화면으로 이동할 수 있게 해줍니다.</p> + +<p>예를 들어 Gmail의 홈 화면 위젯은 메일 작성 +화면으로 바로 진입할 수 있는 버튼을 제공합니다. 메일 작성 화면에서 위로 또는 +뒤로 버튼을 누르면 받은 편지함으로 이동하게 되고, 받은 편지함에서 뒤로 버튼을 누르면 홈으로 돌아가게 됩니다.</p> + +<img src="{@docRoot}design/media/navigation_from_outside_back.png"> + +<h4>간접 알림</h4> + +<p>앱이 동시에 다양한 이벤트 정보를 제공해야 하는 경우, 사용자를 틈새 화면(interstitial screen)으로 이동하게 하는 +단일 알림을 사용할 수 있습니다. 이 화면은 +이러한 이벤트를 요약하고, 사용자가 앱을 세부적으로 탐색할 수 있는 경로를 제공합니다. 이러한 스타일의 알림을 <em>간접 알림</em>이라고 +합니다.</p> + +<p>기본(직접) 알림과 달리, 간접 알림의 +틈새 화면에서 뒤로 버튼을 누르면 백 스택에 다른 화면이 +추가되지 않고 알림이 트리거된 지점으로 사용자를 이동시킵니다. 사용자가 +틈새 화면에서 앱으로 들어가면, 위로 버튼 및 뒤로 버튼은 위에서 설명한 바와 같이 틈새 화면으로 돌아가지 않고, 기본 알림과 마찬가지로 앱 내에서 +탐색을 수행합니다.</p> + +<p>예를 들어 Gmail을 사용 중인 사용자가 캘린더로부터 간접 알림을 받았다고 가정해 봅니다. 해당 +알림을 터치하면 틈새 화면이 열립니다. 이 화면에는 다른 +여러 이벤트에 대한 알림도 표시됩니다. 틈새 화면에서 뒤로 버튼을 터치하면 Gmail로 돌아갑니다. 특정 +이벤트를 터치하면 사용자를 틈새 화면에서 나오게 하여 +해당 이벤트의 세부 정보를 보여주는 완전한 캘린더 앱으로 이동하게 됩니다. 이벤트 세부 정보 화면에서 위로 버튼과 뒤로 버튼을 누르면 캘린더의 최상위 뷰로 이동하게 됩니다.</p> + +<img src="{@docRoot}design/media/navigation_indirect_notification.png"> + +<h4>팝업 알림</h4> + +<p><em>팝업 알림</em>은 알림 창을 거치지 않고 바로 사용자에게 +표시되는 알림입니다. <strong>팝업 알림은 시기적절한 +응답이 요구되는 경우와 사용자의 컨텍스트를 중단하는 것이 필요한 경우에 한하여</strong> 드물게 사용됩니다. 예를 들어 +Talk는 친구가 화상 채팅에 참여하도록 보낸 +초대를 사용자에게 알리기 위해 이러한 스타일의 알림을 사용하며, 이 초대는 몇 초 후에 자동으로 만료됩니다.</p> + +<p>탐색 동작 측면에서, 팝업 알림은 간접 +알림의 틈새 화면 동작을 상당히 많이 따릅니다. 뒤로 버튼을 누르면 팝업 알림이 해제됩니다. 사용자가 팝업을 +통해 앱으로 이동하면, 위로 및 뒤로 버튼은 기본 알림의 규칙에 따라 앱 내에서 +탐색합니다.</p> + +<img src="{@docRoot}design/media/navigation_popup_notification.png"> + +<h2 id="between-apps">앱 간 탐색</h2> + +<p>Android 시스템의 기본이 되는 강점 중 하나는 앱이 +다른 앱을 실행할 수 있다는 점이며, 이로 인해 사용자는 한 앱에서 다른 앱으로 직접 이동할 수 있습니다. 예를 들어, 사진을 캡처해야 하는 +앱은 카메라 앱을 작동시킬 수 있으며, 카메라 앱은 사진을 해당 앱으로 +돌려줍니다. 이러한 기능은 개발자와 사용자 모두에게 매우 유용합니다. 왜냐하면 개발자는 쉽게 다른 앱의 +코드를 활용할 수 있고, 사용자는 흔히 수행하는 +작업을 일관된 환경으로 즐길 수 있기 때문입니다.</p> + +<p>앱 간 탐색을 이해하려면 아래에서 +설명하는 Android 프레임워크 동작을 알아야 합니다.</p> + +<h4>액티비티, 태스크 및 인텐트</h4> + +<p>Android에서 <strong>액티비티</strong>는 +정보 및 사용자가 수행할 수 있는 모든 관련 작업이 포함된 화면을 정의하는 애플리케이션 구성 요소입니다. 앱은 본인이 직접 생성하는 +액티비티와 다른 앱에서 재활용하는 액티비티로 구성되어 있는 액티비티 컬렉션입니다.</p> + +<p><strong>태스크</strong>는 사용자가 목적을 달성하기 위해서 따르는 일련의 액티비티입니다. 단일 +태스크는 단 한 가지 앱의 액티비티만 사용할 수도 있고, +여러 앱의 액티비티를 사용할 수도 있습니다.</p> + +<p><strong>인텐트</strong>는 어떤 앱이 작업을 수행하는 데 다른 +앱의 도움을 받고자 한다는 신호를 보내는 메커니즘입니다. 앱의 액티비티는 +어떠한 인텐트에 응답을 보낼 수 있는지 알려줄 수 있습니다. "공유하기"와 같이 일반적인 인텐트의 경우, 사용자는 해당 요청을 수행할 수 있는 여러 앱을 +설치했을 수도 있습니다.</p> + +<h4>예: "공유하기"를 지원하는 앱 간에 탐색하기</h4> + +<p>액티비티, 태스크, 인텐트가 어떻게 같이 동작하는지 이해하려면 한 앱이 다른 앱을 사용하여 콘텐츠 +공유를 어떻게 가능하게 하는지 생각해 보세요. 예를 들어, 홈에서 Play Store 앱을 실행하면 +새로운 태스크 A가 시작됩니다(아래 그림 참조). Play Store에서 탐색하다가 홍보 도서의 세부 정보를 +보기 위해 터치하면, 다른 액티비티를 추가하여 태스크를 연장하는 방식으로 사용자는 동일한 태스크에 머물게 됩니다. 공유하기 +작업을 트리거하면 공유하기 인텐트를 처리하도록 +등록된 액티비티(다양한 앱에서 제공)가 나열된 목록을 보여주는 대화 상자가 표시됩니다.</p> + +<img src="{@docRoot}design/media/navigation_between_apps_inward.png"> + +<p>사용자가 Gmail을 통해 공유하기를 선택할 경우, 새로운 태스크가 생성되는 것이 아니라 +태스크 A의 연장으로 Gmail의 메일 작성 액티비티가 추가됩니다. Gmail의 백그라운드에서 실행되는 자체적인 태스크가 있을 경우, 해당 태스크는 아무런 +영향도 받지 않습니다.</p> + +<p>메일 작성 액티비티에서 메시지를 보내거나 뒤로 버튼을 터치하면, 사용자는 +도서 세부 정보 액티비티로 돌아가게 됩니다. 뒤로 버튼을 연이어 터치하면 Play +Store에서 탐색한 페이지로 되돌아가게 되어 결국에는 홈 화면에 이르게 됩니다.</p> + +<img src="{@docRoot}design/media/navigation_between_apps_back.png"> + +<p>하지만 사용자가 메일 작성 액티비티에서 위로 버튼을 터치하는 것은 +Gmail에 남아 있고자 하는 의지를 보이는 것입니다. 따라서, 이 경우 Gmail의 대화 목록 액티비티가 표시되고, 새로운 태스크 B가 생성됩니다. 새로운 태스크는 +항상 홈에 기반을 두고 있기 때문에, 대화 목록에서 뒤로 버튼을 터치하면 홈으로 되돌아가게 됩니다.</p> + +<img src="{@docRoot}design/media/navigation_between_apps_up.png"> + +<p>태스크 A는 백그라운드에 남아 있기 때문에 나중에 돌아올 수 있습니다(예를 들어, +최근 앱 화면을 통해). Gmail에 이미 백그라운드에서 실행 중인 자체적인 태스크가 있을 경우, +해당 태스크는 태스크 B로 대체됩니다. 이전 컨텍스트는 사용자의 새로운 목적에 따라 제거됩니다.</p> + +<p>앱 계층 구조 내의 액티비티에서 인텐트를 처리하도록 앱에서 등록하는 경우, 위로 탐색을 지정하는 방법에 대한 지침을 확인하려면 +<a href="#into-your-app">홈 화면 위젯 및 +알림을 통한 앱 탐색</a>을 참조하세요.</p> |