수십억 사용자를 위한 UI 및 콘텐츠
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
앱이 사용자 입력에 빠르게 반응하고 느린 실행을 보완하는(필요한 경우) 대화형 UI를 제공하도록 합니다.
언어 간의 차이점을 고려하여 현지화가 용이하도록 앱을 설계합니다. 공백, 밀도, 순서, 강조 및 단어 사용의 차이점을 고려합니다. 또한 전화의 설정에 따라 날짜, 시간 및 기타 단위가 국제화되어 표시되는지 확인합니다.
빠르고 반응성 높은 사용자 인터페이스
앱 성능에 관한 사용자의 인식은 대체로 앱의 반응성에 따라 형성됩니다. 예를 들어 사용자와의 상호작용이나 선명한 디스플레이는 고성능 앱의 두 가지 중요한 특성입니다. 이 도움말에서는 이러한 두 특성과 앱 속도 및 반응성을 구성하는 다른 측면을 최적화하는 방법을 설명합니다.
터치 가능한 모든 항목에서 터치 피드백
- 터치 피드백은 사용자 인터페이스에 질감을 더해줍니다. 인지되는 앱 지연 시간을 최대한 줄이기 위해서는 터치 가능한 모든 항목에서 앱이 터치 피드백을 제공하도록 해야 합니다.
- 반응형 상호작용은 사용자의 입력에 따라 즉각적이고 논리적이며 매력적인 화면 반응을 제공함으로써 앱을 더 자세히 탐색해볼 수 있도록 합니다.
반응형 상호작용을 바탕으로 앱은 정보 전달 서비스에 그치지 않고 다양한 시각 및 촉각 반응을 사용해 소통할 수 있는 환경을 제공합니다.
- 자세한 내용은 Android 교육 과정에서 터치 피드백 맞춤설정을 참고하세요.
UI는 항상 상호작용이 필요합니다
- 백그라운드 작업을 실행할 때 반응이 없는 앱은 느리게 느껴지며 사용자의 만족도를 떨어뜨립니다. 백그라운드 활동과 상관없이 앱이 항상 반응형 UI를 갖도록 하세요. 그러기 위해서는 네트워크 작업이나 복잡한 작업은 백그라운드 스레드에서 실행하고 UI 스레드는 가급적 유휴 상태로 유지하세요.
- 머티리얼 디자인 앱은 콘텐츠를 로드할 때 단일 활동 표시기로 각 작업을 나타내는 방식으로 시각적 변화를 최소화합니다.
로드 표시기로 대화상자를 차단하지 않도록 하세요.
- 빈 상태는 뷰에 표시할 콘텐츠가 없을 때 발생합니다. 이는 항목이 없는 목록이거나 반환 결과가 없는 검색일 수 있습니다. 빈 상태를 피하려면 스타터, 교육적인 콘텐츠 또는 최선의 일치 콘텐츠를 사용합니다.
이러한 옵션이 해당되지 않는 경우 비대화형 이미지와 텍스트 태그라인을 표시합니다. 이렇게 하면 사용자에게 표시할 것이 생기면 무엇이 표시되는지 알려줄 수 있습니다.
- 자세한 내용은 Android 교육 과정에서 앱 반응성 유지를 참고하세요.
저가 기기에서 초당 60프레임 타겟팅
- 저가 기기에서도 앱이 항상 빠르고 부드럽게 실행되도록 보장합니다.
- 오버드로는 앱의 속도를 상당히 저하시킬 수 있으며 패스당 두 번 이상 픽셀을 그리는 경우에 발생합니다. 이러한 예 중 하나는 이미지 위에 버튼이 놓여 있는 경우입니다. 오버드로가 불가피한 경우도 있지만 이를 최소화하여 부드러운 프레임 속도를 보장해야 합니다. 최소화를 보장하려면 앱에서 GPU 오버드로 디버그를 실행합니다.
- Android 기기는 초당 60프레임의 속도로 화면을 새로 고치므로, 약 16밀리초 이내에 앱의 화면이 업데이트되어야 합니다. 앱이 이러한 16ms의 평균에 부합하지 않는 경우 그 시점을 알아보려면 온디바이스 도구를 사용하여 앱을 프로파일링하면 됩니다.
- 기기의 CPU와 GPU에 미치는 부담을 완화하려면 저가 기기에서 애니메이션을 줄이거나 제거합니다. 자세한 내용은 레이아웃 성능 개선을 참고하세요.
- 효율적인 뷰 계층 구조로 앱의 메모리 크기를 늘리지 않고도 앱 속도를 향상시킬 수 있습니다. 자세한 내용은 성능 및 뷰 계층 구조를 참고하세요.
시작 화면을 느리게 사용하여 앱 시작
- 시작 화면은 사용자가 애플리케이션을 처음 실행할 때 표시되는 화면입니다.
앱을 시작할 때 빈 캔버스가 표시되어 있으면 인지되는 로드 시간이 늘어납니다. 따라서 인지되는 로드 시간을 줄이려면 자리표시자 UI 또는 브랜드 시작 화면을 사용해 보세요.
- 자리표시자 UI는 가장 원활한 실행 전환 방식으로 앱 실행과 인앱 활동 전환 모두에 적합합니다.
- 브랜드 시작 화면은 순간적으로 브랜드를 노출하여 UI가 콘텐츠에 초점을 둘 수 있는 여유를 제공합니다.
- 느린 시작 속도를 해결하는 최선의 방법은 이를 없애는 것입니다. 시작 시간 성능에서는 앱 시작 시간을 향상시킬 수 있는 정보를 제공합니다.
사용자 인터페이스 권장사항
- 머티리얼 디자인은 훌륭한 디자인의 원칙에 과학과 기술의 혁신과 가능성을 접목한 시각적 언어입니다. 머티리얼 디자인은 다양한 크기의 기기와 플랫폼에서 통합 환경을 허용하는 기본 단일 시스템을 제공합니다. 사용자들이 앱 사용 방법을 직관적으로 알 수 있도록 주요 머티리얼 디자인 구성요소를 사용해 보세요.
- 즉시 사용 가능한 머티리얼 디자인 구성요소는 머티리얼 디자인 지원 라이브러리에서 이용할 수 있습니다. 이들 구성요소는 Android 2.1(API 수준 7) 이상에서 지원됩니다.
현지화
- 사용자가 다른 나라 사람일 수 있으며 모국어가 개발자의 언어와 다를 수도 있습니다. 사용자가 읽을 수 있는 언어로 앱을 표시하지 않는다면 기회를 놓치게 됩니다. 따라서 지역의 주요 언어로 앱을 현지화해야 합니다.
- 자세한 내용은 다양한 언어 지원에 관한 Android 교육 과정 및 현지화 체크리스트를 참고하세요.
- Android 7.0(API 수준 24)부터 Android 프레임워크에서 ICU4J API의 하위 세트를 사용할 수 있으므로 앱을 여러 언어로 현지화하는 데 도움이 됩니다. 자세한 내용은 ICU4J Android 프레임워크 API를 참고하세요.
추가 리소스
이 주제에 관해 자세히 알아보려면 다음 추가 리소스를 참고하세요.
추가적인 주제
블로그 게시물
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# UI and content for billions\n\nMake sure that your app offers an interactive UI that responds quickly to user input and, if necessary, compensates for a slow launch.\nEnsure that your app is designed to be easily localized by\naccommodating the variations between languages: allow for spacing, density,\norder, emphasis, and wording variations. Also make sure that date, time, and\nother units are internationalized and displayed according to the phone's\nsettings.\n\nFast and responsive user interface\n----------------------------------\n\n\u003cbr /\u003e\n\n\nThe user's perception of app performance is formed in large part by the app's\nresponsiveness. For example, interaction with the user and a crisp display are two important\ncharacteristics of a performant app. Here you can find tips on how to optimize these and\nother aspects of an app's speed and responsiveness.\n\n### Touch feedback on all touchable items\n\n- Touch feedback adds a tactile feeling to the user interface. You should ensure your app provides touch feedback on all touchable elements to reduce the perceived app latency as much as possible.\n- [Responsive interaction](https://material.io/guidelines/motion/material-motion.html) encourages deeper exploration of an app by creating timely, logical, and delightful screen reactions to user input. Responsive interaction elevates an app from an information-delivery service to an experience that communicates using multiple visual and tactile responses.\n- For more information, see the Android training on [Customizing Touch\n Feedback](/training/material/animations#Touch).\n\n### UI should always be interactive\n\n- Apps that are unresponsive when performing background activity feel slow and reduce user satisfaction. Ensure your app always has a responsive UI regardless of any background activity. Achieve this by performing network operations or any heavy-duty operations in a background thread---keep the UI thread as idle as you can.\n- Material Design apps use minimal visual changes when loading content by representing each operation with a single activity indicator. Avoid blocking dialogs with [loading indicators](https://material.io/guidelines/components/progress-activity.html).\n- [Empty\n states](https://material.io/guidelines/patterns/empty-states.html) occur when a view has no content to show. It might be a list that has no items or a search that returns no results. Avoid empty states using starter, educational, or best match content. When these options aren't applicable display a non-interactive image and a text tagline that tell the user what they'll see when there is something to display.\n- For more information, see the Android training on [Keeping Your App\n Responsive](/training/articles/perf-anr).\n\n### Target 60 frames per second on low-cost devices\n\n- Ensure that your app always runs fast and smoothly, even on low-cost devices.\n- Overdraw can significantly slow down your app---it occurs when the pixels are being drawn more than once per pass. An example of this is when you have an image with a button placed on top of it. While some overdraw is unavoidable, it should be minimized to ensure a smooth frame rate. Perform [Debug\n GPU overdraw](/tools/performance/debug-gpu-overdraw) on your app to ensure it's minimized.\n- Android devices refresh the screen at 60 frames per second (fps), meaning your app has to update the screen within roughly 16 milliseconds. [Profile\n your app](/studio/profile/dev-options-rendering) using on-device tools to see if and when your app is not meeting this 16 ms average.\n- Reduce or remove animations on low-cost devices to lessen the burden on the device's CPU and GPU. For more information, see [Improve\n layout performance](/develop/ui/views/layout/improving-layouts).\n- An efficient view hierarchy can speed up your app without increasing the app's memory footprint. For more information, see [Performance\n and View Hierarchies.](/topic/performance/optimizing-view-hierarchies)\n\n### Use a launch screen on slow to start apps\n\n- The launch screen is a user's first experience of your application. Displaying a blank canvas while launching your app increases the perception of its loading time, so consider using a placeholder UI or a branded launch screen to reduce the perceived loading time.\n- A[placeholder UI](https://material.io/design/communication/launch-screen.html#placeholder-ui) is the most seamless launch transition, appropriate for both app launches and in-app activity transitions.\n- [Branded launch screens](/guide/topics/ui/splash-screen) provide momentary brand exposure, freeing the UI to focus on content.\n- The best way to deal with slow start speeds is not to have them. [Launch-Time Performance](/topic/performance/launch-time) provides information that may help you speed up your app's launch time.\n\nUser interface best practices\n-----------------------------\n\n- [Material Design](https://material.io/guidelines/material-design/introduction.html) is a visual language that synthesizes the classic principles of good design with the innovation and possibility of technology and science. Material Design provides a single underlying system that allows for a unified experience across platforms and device sizes. Consider using key Material Design components so that users intuitively know how to use your app.\n- Ready-to-use Material Design components are available in the [Material Design Support\n library](/topic/libraries/support-library/features#material-design). These components are supported in Android 2.1 (API level 7) and above.\n\nLocalization\n------------\n\n- Your users could be from any part of the world and their first language may not be yours. If you don't present your app in a language that your users can read, it is a missed opportunity. You should therefore localize your app for key regional languages.\n- To learn more, visit the Android training on [Supporting\n Different Languages](/training/basics/supporting-devices/languages) and see the [localization checklist](/distribute/tools/localization-checklist).\n- Starting from Android 7.0 (API level 24), the Android framework makes available a subset of the [ICU4J APIs](http://userguide.icu-project.org/), which can help you localize your app into multiple languages. For more information, see [ICU4J Android Framework APIs.](/guide/topics/resources/icu4j-framework)\n\n\u003cbr /\u003e\n\nAdditional resources\n--------------------\n\nTo learn more about this topic, view the following additional resources:\n\n### Further topics\n\n- [Keeping your app responsive](/training/articles/perf-anr)\n- [Improving layout performance](/training/improving-layouts)\n- [Introduction to animations](/training/animation/overview)\n\n### Blog posts\n\n- [Writing for global audiences](https://medium.com/google-design/writing-for-global-audiences-d339d23e9612)"]]