Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

수십억 사용자를 위한 UI 및 콘텐츠

앱이 사용자 입력에 빠르게 반응하고 느린 실행을 보완하는(필요한 경우) 대화형 UI를 제공하도록 합니다. 언어 간의 차이점을 고려하여 현지화가 용이하도록 앱을 설계합니다. 공백, 밀도, 순서, 강조 및 단어 사용의 차이점을 고려합니다. 또한 전화의 설정에 따라 날짜, 시간 및 기타 단위가 국제화되어 표시되는지 확인합니다.

빠르고 반응성 높은 사용자 인터페이스

앱 성능에 대한 사용자의 인식은 대체로 앱의 반응성에 따라 형성됩니다. 예를 들어 사용자와의 상호작용이나 깔끔한 디스플레이 같은 것이 성능 수준에 맞는 앱을 이루는 두 가지 중요한 특성이라 할 수 있습니다. 여기에서는 이와 같은 요소를 비롯해 앱의 속도와 반응성을 구성하는 여타 측면을 최적화하는 법에 대한 유용한 팁을 소개합니다.

터치 가능한 모든 항목에서 터치 피드백

  • 터치 피드백은 사용자 인터페이스에 질감을 더해줍니다. 인지되는 앱 지연 시간을 최대한 줄이기 위해서는, 터치 가능한 모든 항목에서 앱이 터치 피드백을 제공하도록 해야 합니다.
  • 반응형 상호작용은 사용자의 입력에 대해 논리적이고 매력적인 화면 반응을 적시에 제공하여 앱을 더욱 깊이 탐색하게 해줍니다. 반응형 상호작용을 통해 앱이 단순한 정보 전달 서비스가 아니라 다양한 시각적 반응과 질감을 사용하여 소통하는 경험을 제공합니다.
  • 자세한 내용은 Android 교육 과정에서 터치 피드백 사용자 지정을 참조하세요.

UI는 항상 상호작용이 필요합니다

  • 백그라운드 작업을 수행할 때 반응이 없는 앱은 느리게 느껴지며 사용자의 만족도를 떨어뜨립니다. 백그라운드 작업에 상관없이 앱이 항상 반응형 UI를 갖도록 하세요. 그러기 위해서는 네트워크 작업이나 복잡한 작업들은 백그라운드 스레드에서 수행하고, UI 스레드는 가급적 유휴 상태로 유지하세요.
  • 머티리얼 디자인 앱은 콘텐츠를 로드할 때 단일 액티비티 표시기로 각 작업을 나타내는 방식으로 시각적 변화를 최소화합니다. 로딩 표시기로 대화상자를 차단하지 않도록 하세요.
  • 빈 상태는 뷰에 표시할 콘텐츠가 없을 때 발생합니다. 이는 항목이 없는 목록이거나 반환 결과가 없는 검색일 수 있습니다. 빈 상태를 피하려면 스타터, 교육적인 콘텐츠 또는 최선의 일치 콘텐츠를 사용합니다. 이러한 옵션이 해당되지 않는 경우 비대화형 이미지와 텍스트 태그라인을 표시합니다. 이렇게 하면 사용자에게 표시할 것이 생기면 무엇이 표시되는지 알려줄 수 있습니다.
  • 자세한 내용은 앱 반응성 유지에 대한 Android 교육 과정을 참조하세요.

저가 기기에서 초당 60프레임 목표

  • 저비용 기기에서도 앱이 항상 빠르고 부드럽게 실행되도록 보장합니다.
  • 오버드로는 앱의 속도를 상당히 저하시킬 수 있으며, 패스당 두 번 이상 픽셀을 그리는 경우에 발생합니다. 이러한 예 중 하나는 이미지 위에 버튼이 놓여 있는 경우입니다. 오버드로가 불가피한 경우도 있지만 이를 최소화하여 부드러운 프레임 속도를 보장해야 합니다. 최소화를 보장하려면 앱에서 GPU 오버드로 디버그를 수행합니다.
  • Android 기기는 초당 60프레임의 속도로 화면을 새로 고치므로, 약 16밀리 초 이내에 앱의 화면이 업데이트되어야 합니다. 앱이 이러한 16ms의 평균에 부합하지 않는 경우 그 시점을 알아보려면 온디바이스 도구를 사용하여 앱을 프로파일링하면 됩니다.
  • 기기의 CPU와 GPU에 미치는 부담을 완화하려면 저가 기기에서 애니메이션을 줄이거나 제거합니다. 자세한 내용은 Android 교육 과정에서 레이아웃 성능 개선을 참조하세요.
  • 효율적인 뷰 계층 구조로 앱의 메모리 크기를 늘리지 않고도 앱 속도를 향상시킬 수 있습니다. 자세한 내용은 성능 및 뷰 계층 구조를 참조하세요.

시작 화면을 느리게 사용하여 앱 시작

  • 시작 화면은 사용자가 여러분의 애플리케이션을 처음 만나는 곳입니다. 앱을 시작할 때 빈 캔버스가 표시되어 있으면 인지되는 로드 시간이 늘어납니다. 따라서 인지되는 로드 시간을 줄이려면 자리표시자 UI 또는 브랜드 시작 화면을 사용해 보세요.
  • 자리표시자 UI는 가장 매끄러운 시작 전환 방식이며, 앱 시작 및 인앱 액티비티 전환에 모두 적합합니다.
  • 브랜드 시작 화면은 일시적인 브랜드 노출을 제공하며, UI에서 벗어나 콘텐츠에 집중할 수 있습니다.
  • 스플래시 화면 구현에 대한 자세한 내용은, 머티리얼 디자인 사양의 시작 화면 섹션을 참조하세요.
  • 느린 시작 속도를 해결하는 최선의 방법은 이를 없애는 것입니다. 시작 시간 성능에서는 앱 시작 시간을 향상시킬 수 있는 정보를 제공합니다.

사용자 인터페이스 모범 사례

  • 머티리얼 디자인은 훌륭한 디자인의 원칙에 과학과 기술의 혁신과 가능성을 접목한 시각적 언어입니다. 머티리얼 디자인은 다양한 크기의 기기와 플랫폼에서 통합 환경을 허용하는 기본 단일 시스템을 제공합니다. 사용자들이 앱 사용 방법을 직관적으로 알 수 있도록 주요 머티리얼 디자인 구성 요소를 사용해 보세요.
  • 즉시 사용 가능한 머티리얼 디자인 구성 요소는 머티리얼 디자인 지원 라이브러리에서 이용할 수 있습니다. 이들 구성 요소는 Android 2.1(API 레벨 7) 이상에서 지원됩니다.

현지화

  • 여러분의 사용자가 다른 나라 사람일 수 있으며 그들의 모국어가 여러분의 언어와 다를 수도 있습니다. 사용자가 읽을 수 있는 언어로 앱을 표시하지 않는다면 기회를 놓치게 됩니다. 따라서 지역의 주요 언어로 앱을 현지화해야 합니다.
  • 자세한 내용을 보려면 Android 교육 과정에서 다양한 언어 지원을 참조하세요.
  • Android 7.0(API 레벨 24)부터 Android 프레임워크에서 ICU4J API의 하위 세트를 사용할 수 있으므로, 여러분의 앱을 여러 언어로 현지화하는 데 도움이 됩니다. 자세한 내용은 ICU4J Android 프레임워크 API를 참조하세요.