Android官方入门文档[10]支持不同的屏幕

简介: Android官方入门文档[10]支持不同的屏幕 Supporting Different Screens支持不同的屏幕 This lesson teaches you to1.

Android官方入门文档[10]支持不同的屏幕

 

Supporting Different Screens
支持不同的屏幕

 

This lesson teaches you to
1.Create Different Layouts
2.Create Different Bitmaps

You should also read
•Designing for Multiple Screens
•Providing Resources
•Iconography design guide

这节课教你
1.创建不同的布局
2.创建不同的位图

你也应该阅读
•设计为多屏幕
•提供资源
•影像学设计指南

Android categorizes device screens using two general properties: size and density. You should expect that your app will be installed on devices with screens that range in both size and density. As such, you should include some alternative resources that optimize your app’s appearance for different screen sizes and densities.
•There are four generalized sizes: small, normal, large, xlarge
•And four generalized densities: low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi)
Android的分类使用两个常规属性设备屏幕:大小和密度。你应该预料到你的应用程序将与屏幕,范围在规模和密度的设备安装。因此,你应该包括优化您的应用程序的外观不同的屏幕大小和密度的一些替代资源。
•有四种通用尺寸:small, normal, large, xlarge(小,正常,大,超大)
•与4广义密度:低(ldpi),中(mdpi),高(hdpi),特高(xhdpi)

To declare different layouts and bitmaps you'd like to use for different screens, you must place these alternative resources in separate directories, similar to how you do for different language strings.
声明不同的布局和位图,你想用不同的屏幕上,你必须将这些替代资源,在不同的目录,类似于你如何做不同的语言字符串。

Also be aware that the screens orientation (landscape or portrait) is considered a variation of screen size, so many apps should revise the layout to optimize the user experience in each orientation.
另外要注意,屏幕方向(横向或纵向)被认为是屏幕尺寸的变化,因此许多应用程序应该修改的布局,以优化每个方向的用户体验。

 

Create Different Layouts
创建不同的布局


--------------------------------------------------------------------------------

To optimize your user experience on different screen sizes, you should create a unique layout XML file for each screen size you want to support. Each layout should be saved into the appropriate resources directory, named with a -<screen_size> suffix. For example, a unique layout for large screens should be saved under res/layout-large/.
为了优化在不同屏幕尺寸的用户体验,你应该创建为要支持的每个屏幕尺寸独特的布局XML文件。每个布局应保存到相应的资源目录,命名了 - <screen_size>后缀。例如,对于大屏幕独特的布局应保存在res/layout-large/。

Note: Android automatically scales your layout in order to properly fit the screen. Thus, your layouts for different screen sizes don't need to worry about the absolute size of UI elements but instead focus on the layout structure that affects the user experience (such as the size or position of important views relative to sibling views).
注:Android的自动缩放你的布局,以妥善适应屏幕。因此,你的布局不同的屏幕尺寸不必担心UI元素的绝对规模,而是着眼于布局结构,影响了用户的体验(如大小或重要意见位置相对于同级的意见)。

For example, this project includes a default layout and an alternative layout for large screens:
例如,该项目包括一个默认布局以及用于大屏幕的替代布局:

MyProject/
    res/
        layout/
            main.xml
        layout-large/
            main.xml

The file names must be exactly the same, but their contents are different in order to provide an optimized UI for the corresponding screen size.
文件名必须是完全一样的,但它们的内容是为了提供用于相应的屏幕尺寸优化的用户界面不同。

Simply reference the layout file in your app as usual:
像往常一样,在您的应用程序中简单的引用布局文件:

@Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
}

The system loads the layout file from the appropriate layout directory based on screen size of the device on which your app is running. More information about how Android selects the appropriate resource is available in the Providing Resources guide.
该系统从加载基于其上的应用程序正在运行的设备的屏幕大小适当布局的目录布局文件。关于Android如何选择合适的资源的更多信息,请在提供资源指南。

As another example, here's a project with an alternative layout for landscape orientation:
再举一个例子,这里是与横向的替代布局的项目:

MyProject/
    res/
        layout/
            main.xml
        layout-land/
            main.xml

By default, the layout/main.xml file is used for portrait orientation.
缺省情况下,layout/main.xml中文件用于纵向。

If you want to provide a special layout for landscape, including while on large screens, then you need to use both the large and land qualifier:
如果您想为景观特殊的布局,包括同时在大屏幕上,那么你需要同时使用large和land限定符:

MyProject/
    res/
        layout/              # default (portrait)
            main.xml
        layout-land/         # landscape
            main.xml
        layout-large/        # large (portrait)
            main.xml
        layout-large-land/   # large landscape
            main.xml

Note: Android 3.2 and above supports an advanced method of defining screen sizes that allows you to specify resources for screen sizes based on the minimum width and height in terms of density-independent pixels. This lesson does not cover this new technique. For more information, read Designing for Multiple Screens.
注:Android的3.2及以上支持定义屏幕尺寸的先进方法,它允许您根据密度无关像素方面的最小宽度和高度,以指定的屏幕大小的资源。这节课不包括这种新技术。欲了解更多信息,请阅读设计的多个屏幕。

 

Create Different Bitmaps
创建不同的位图


--------------------------------------------------------------------------------

You should always provide bitmap resources that are properly scaled to each of the generalized density buckets: low, medium, high and extra-high density. This helps you achieve good graphical quality and performance on all screen densities.
你应该总是提供适当缩放到每个广义密度桶位图资源:低,中,高,超高密度。这将帮助你实现良好的图形质量和性能上的所有的屏幕密度。

To generate these images, you should start with your raw resource in vector format and generate the images for each density using the following size scale:
•xhdpi: 2.0
•hdpi: 1.5
•mdpi: 1.0 (baseline)
•ldpi: 0.75
产生这些图像,你应该从你的矢量格式的原始资源,产生了使用以下尺寸的规模每次密度图像:
•xhdpi:2.0
•hdpi:1.5
•mdpi:1.0(基线)
•ldpi:0.75

This means that if you generate a 200x200 image for xhdpi devices, you should generate the same resource in 150x150 for hdpi, 100x100 for mdpi, and 75x75 for ldpi devices.
这意味着,如果你生成一个200x200的图像xhdpi设备,你应该生成ldpi设备同一资源在150×150的hdpi,100×100的mdpi和75x75。

Then, place the files in the appropriate drawable resource directory:
然后,将在适当的绘制资源目录中的文件:

MyProject/
    res/
        drawable-xhdpi/
            awesomeimage.png
        drawable-hdpi/
            awesomeimage.png
        drawable-mdpi/
            awesomeimage.png
        drawable-ldpi/
            awesomeimage.png

Any time you reference @drawable/awesomeimage, the system selects the appropriate bitmap based on the screen's density.
您引用@drawable/ awesomeimage任何时候,系统会选择基于屏幕的密度适当的位图。

Note: Low-density (ldpi) resources aren’t always necessary. When you provide hdpi assets, the system scales them down by one half to properly fit ldpi screens.
注意:低密度(ldpi)资源并非总是必要的。当您向hdpi资源,该系统由一个半到正确合适ldpi屏幕缩放下来。

For more tips and guidelines about creating icon assets for your app, see the Iconography design guide.
对于更多的技巧和有关您的应用程序创建的图标资产的指引,看到影像学设计指南。

本文翻译自:https://developer.android.com/training/basics/supporting-devices/screens.html

目录
相关文章
|
21天前
|
存储 前端开发 测试技术
Android kotlin MVVM 架构简单示例入门
Android kotlin MVVM 架构简单示例入门
26 1
|
17天前
|
XML IDE Java
安卓应用开发入门:从零开始的旅程
【10月更文挑战第23天】本文将带领读者开启一段安卓应用开发的奇妙之旅。我们将从最基础的概念讲起,逐步深入到开发实践,最后通过一个简易的代码示例,展示如何将理论知识转化为实际的应用。无论你是编程新手,还是希望扩展技能的软件工程师,这篇文章都将为你提供有价值的指导和启发。
25 0
|
1月前
|
开发框架 移动开发 Android开发
安卓与iOS开发中的跨平台解决方案:Flutter入门
【9月更文挑战第30天】在移动应用开发的广阔舞台上,安卓和iOS两大操作系统各自占据半壁江山。开发者们常常面临着选择:是专注于单一平台深耕细作,还是寻找一种能够横跨两大系统的开发方案?Flutter,作为一种新兴的跨平台UI工具包,正以其现代、响应式的特点赢得开发者的青睐。本文将带你一探究竟,从Flutter的基础概念到实战应用,深入浅出地介绍这一技术的魅力所在。
74 7
|
2月前
|
Android开发 开发者
安卓开发中的自定义视图:从入门到精通
【9月更文挑战第19天】在安卓开发的广阔天地中,自定义视图是一块充满魔力的土地。它不仅仅是代码的堆砌,更是艺术与科技的完美结合。通过掌握自定义视图,开发者能够打破常规,创造出独一无二的用户界面。本文将带你走进自定义视图的世界,从基础概念到实战应用,一步步展示如何用代码绘出心中的蓝图。无论你是初学者还是有经验的开发者,这篇文章都将为你打开一扇通往创意和效率的大门。让我们一起探索自定义视图的秘密,将你的应用打造成一件艺术品吧!
60 10
|
1月前
|
Web App开发 编解码 视频直播
视频直播技术干货(十二):从入门到放弃,快速学习Android端直播技术
本文详细介绍了Android端直播技术的全貌,涵盖了从实时音视频采集、编码、传输到解码与播放的各个环节。文章还探讨了直播中音视频同步、编解码器选择、传输协议以及直播延迟优化等关键问题。希望本文能为你提供有关Andriod端直播技术的深入理解和实践指导。
41 0
|
2月前
|
IDE Java 程序员
安卓应用开发入门:打造你的第一个“Hello World”
【9月更文挑战第11天】在编程的世界里,每一个初学者的旅程都从一个简单的“Hello World”开始。本文将带领安卓开发的新手们,通过简单直观的方式,一步步构建出自己的第一个安卓应用。我们将探索安卓工作室(Android Studio)的安装、项目的创建,以及如何运行和调试你的应用。无论你是编程新手还是想扩展技能的老手,这篇文章都将为你打开一扇通往安卓世界的大门。
169 7
|
2月前
|
IDE Java API
安卓应用开发入门:打造你的第一个"Hello World"
【9月更文挑战第11天】在探索安卓开发的海洋中,每个开发者的航行都从简单的"Hello World"开始。本文将作为你的航标,引导你驶向安卓应用开发的精彩世界。我们将一起启航,通过浅显易懂的语言和步骤,学习如何构建并运行你的第一个安卓应用。无论你是编程新手还是希望扩展技能的老手,这篇文章都将为你提供所需的知识和信心。准备好了吗?让我们揭开安卓开发的神秘面纱,一起创造些令人兴奋的东西吧!
|
2月前
|
编解码 开发工具 Android开发
Android平台实现屏幕录制(屏幕投影)|音频播放采集|麦克风采集并推送RTMP或轻量级RTSP服务
Android平台屏幕采集、音频播放声音采集、麦克风采集编码打包推送到RTMP和轻量级RTSP服务的相关技术实现,做成高稳定低延迟的同屏系统,还需要有配套好的RTMP、RTSP直播播放器
|
3月前
|
开发者 iOS开发 C#
Uno Platform 入门超详细指南:从零开始教你打造兼容 Web、Windows、iOS 和 Android 的跨平台应用,轻松掌握 XAML 与 C# 开发技巧,快速上手示例代码助你迈出第一步
【8月更文挑战第31天】Uno Platform 是一个基于 Microsoft .NET 的开源框架,支持使用 C# 和 XAML 构建跨平台应用,适用于 Web(WebAssembly)、Windows、Linux、macOS、iOS 和 Android。它允许开发者共享几乎全部的业务逻辑和 UI 代码,同时保持原生性能。选择 Uno Platform 可以统一开发体验,减少代码重复,降低开发成本。安装时需先配置好 Visual Studio 或 Visual Studio for Mac,并通过 NuGet 或官网下载工具包。
263 0
|
3月前
|
XML IDE Java
安卓应用开发入门:打造你的第一个“Hello World”
【8月更文挑战第31天】 在安卓的浩瀚宇宙中,每一个新星都从一句简单的问候开始闪耀。本文将作为你的航标,引导你探索安卓开发的银河系。无论你是初心者还是资深开发者,构建第一个“Hello World”应用总是令人兴奋的里程碑。通过这篇文章,我们将一起搭建起通往安卓开发世界的桥梁。让我们摒弃复杂的术语,用最简单直白的语言,一步步地走过这段旅程。准备好了吗?让我们一起开启这段冒险吧!