【问题标题】:Why is Android picking wrong density images?为什么 Android 会选择错误的密度图像?
【发布时间】:2017-09-17 12:06:44
【问题描述】:

我有一个 Coordinator 布局和一个 ImageView 用于配置文件图片,应该从 ActionBar“挂起”。问题是 Android 从不同密度的可绘制文件夹中选择了错误的图像。这是布局的外观:

您可以在此处看到图像几乎覆盖了整个屏幕(不应该如此)。以下是我在各个文件夹中提供的各种可绘制尺寸:

  • drawable-mdpi/avatar.png | 310x310 像素
  • drawable-hdpi/avatar.png | 465x465像素
  • drawable-xhdpi/avatar.png | 621x621像素
  • drawable-xxhdpi/avatar.png | 931x931 像素

现在,为什么 Android 不能像覆盖一个小区域那样显示图像(就像 mdpi 那样)?

(以上测试画面为xxhdpi)

注意:该图像是在 Photoshop Artboard 中创建的,我们假设桌面的密度为 mdpi,而移动设备中的其他密度则按比例放大/缩小。


参考代码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/main.appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.design.widget.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <android.support.v7.widget.Toolbar
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

            </android.support.v7.widget.Toolbar>
        </android.support.design.widget.CollapsingToolbarLayout>

    </android.support.design.widget.AppBarLayout>

    <de.hdodenhof.circleimageview.CircleImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_anchor="@id/main.appbar"
        app:layout_anchorGravity="bottom|center"
        android:src="@drawable/avatar"/>



</android.support.design.widget.CoordinatorLayout>

【问题讨论】:

  • 以文本模式(不是设计模式)打开您的 XML 并执行ctrl+0,在预览顶部尝试更改默认设备。
  • @Enzokie:我尝试过更换各种设备。它在所有这些上都显示相同。我在真机上测试过也没什么区别。

标签: android android-drawable


【解决方案1】:

为什么你认为头像应该很小?您的标准现代手机的水平 dp 约为 360-400;如果您的 mdpi 图像是 310x310(并且您的其余图像会相应缩放),那么我希望图像几乎与普通手机一样宽。

根据您发布的尺寸,一切似乎都正常工作。

【讨论】:

  • 考虑一下:典型的设备是 720x1280 或 1080x1920px。现在,如果图像在 mdpi 上是 300 左右,它将占据不到屏幕宽度的一半。在这里,它占了 80-90%。
  • 一个典型的设备在 xhdpi 上是 720x1280,这意味着它是 360 dp。你的 xhdpi 图像是 621px 宽; 621 是 720 的大部分。
  • TY。有时,这些 dp 计算会影响您。这是其中之一。再也不会...*希望*!
猜你喜欢
  • 2017-01-26
  • 1970-01-01
  • 2013-01-03
  • 2019-04-17
  • 2022-01-18
  • 2019-05-25
  • 1970-01-01
  • 1970-01-01
  • 2016-11-09
相关资源
最近更新 更多