android - 在android中支持多种屏幕尺寸和旋转

标签 android android-studio android-layout

首先我想说的是,我可能已经把互联网上关于这个话题的所有内容都刷红了。
我有点了解它,但我仍然不确定,我的大脑正在沸腾,试图思考它应该如何正常进行,所以我需要有人向我澄清这些事情,这可能比我在其他教程和主题中找到的更好。
还有很多问题和答案有点陈旧,我知道这些用于小、大和 xlarge 等布局的限定符有点被弃用,所以刷新会很好。
所以困扰我的是如何在 android 中支持多种屏幕尺寸和方向?
我知道我需要为不同的屏幕密度支持不同的可绘制资源,并且我需要为不同的屏幕尺寸使用最小宽度可用限定符。
问题所在,我不明白的是如何将两者结合在一起。
例如,对于第一个例子,我有一个标志,它应该覆盖整个手机屏幕。
我真的可以在所有方向上提供所有可能的解决方案和该 Logo 的所有可能尺寸,或者 android 会根据我给他的最接近的尺寸来调整它们的尺寸吗?
最小宽度限定符如何处理不同密度的可绘制资源?
他们只是根据屏幕 dpi 更改图片的大小,但不会更改布局外观。
我是否应该根据屏幕尺寸更改布局,并且图片会根据密度本身发生变化实际上是第二个示例,因为像按钮是不同的故事,如果它们在 mdpi 中为 50 x 50 像素,它们将是 100 x 100 像素在 xhdpi 中。
这就是我得到的。
更大的问题是如何将自己填满屏幕的图片单独放入,并考虑到屏幕旋转和宽度和高度的变化。
所以这是一个很长的问题,希望我告诉你你需要知道的,类似的问题已经被问过,但它们在某些部分有点陈旧和过时,即使在那里我仍然没有找到我正在寻找的所有答案所以我希望我能在这里找到它们。
期待您的帮助,并在此先感谢您!

最佳答案

我会说你把主题复杂化了,为了支持所有尺寸/布局,你只需要在设计布局时记住它们。您的绝大多数布局应该只需要构建一次,如果它们的构建方式可以很好地扩展,那么它就会成功。

例如,如果您尝试绘制一个中间带有 Logo 的启动画面,您可以这样做。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

        <ImageView
                android:layout_gravity="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/my_logo" />

</FrameLayout>

这适用于所有设备/尺寸/方向,因为它只是将 Logo 放在中心。

在构建布局时,只需关注当前现代手机的平均尺寸,但请记住,人们拥有更小的设备。将其用作 Assets 的基础,并尝试包括较小的 Assets 或使用矢量图像。

如果您要构建一个较长的 View ,请将其包装在 ScrollView 中,以便它可以在较小的设备上滚动。

我只会在非常特殊的情况下使用其他布局目录(用于调整大小或方向),例如当您想要完全更改布局的外观时。

希望对您有所帮助。

关于android - 在android中支持多种屏幕尺寸和旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54527141/

相关文章:

Android Studio 非常缓慢和滞后

android - 膨胀底部导航 View 时出错

android-studio - 如何使用实验性 gradle 插件定义多个 JNI 模块?

android - appComponentFactory 的 list 合并失败

android - 如何在android中构建键盘提示布局

android - 带有支持库的 Pre-Lollipop 上的无边框按钮

android - 如何分配要在 ScriptIntrinsic3DLUT 上使用的 LUT?

java - 当调用新的 Asynctask 时定义 onPostExecute

java - 如何读取 JSON 数组,Android Java

android - 文本在 TableLayout 中不居中