最低dpi drawable正在xxhdpi屏幕上使用

时间:2016-07-25 20:57:23

标签: android android-drawable

我有两个图像按钮,尺寸为256x256 dp和scaleType="centerCrop"。 当我在AS中看到预览或在我的nexus 5上启动应用程序时,图像模糊。图像具有相应文件夹的正确尺寸,最大为xxxhdpi(192x192)。

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@android:color/black">

    <ImageButton
        android:layout_marginTop="48dp"
        android:layout_width="256dp"
        android:layout_height="256dp"
        android:id="@+id/button"
        android:layout_gravity="center_horizontal"
        android:src="@mipmap/button_off"
        android:background="@android:color/black"
        android:scaleType="centerInside"
        />
    <ImageButton
        android:layout_width="256dp"
        android:layout_height="256dp"
        android:id="@+id/second_button"
        android:layout_gravity="center_horizontal"
        android:src="@mipmap/second_off"
        android:background="@android:color/black"
        android:scaleType="centerInside"
        />

</LinearLayout>

2 个答案:

答案 0 :(得分:0)

请先查看此文档

https://developer.android.com/guide/topics/resources/providing-resources.html

然后检查您的项目结构。你不太可能得到这个部分错误,并且首先匹配低分辨率资源。

答案 1 :(得分:0)

如果我理解正确 - 您在XML布局文件中设置了ImageButton width=256dpheight=256dp,以及src = drawable / your_drawable。 xxxhdpi drawable的宽度和高度192px(我假设比mdpi - 48,hdpi - 72,xhdpi - 96,xxhdpi - 144,xxxhdpi - 192)。

如果是这样,当然图像模糊了,因为你设置ImageButtons宽度/高度in mdpi(xml为256dp),但你使用了144x144(nexus 5是xxhdpi)Drawable拉伸(因为scaleType = centerCrop)。

如果你不想要拉伸图像,这里有一些选项(可能不是全部):

  1. 您需要将scaleType更改为centerInside(或不使用scaleType) - 您将获得更小的按钮 - 图像仅在需要时才是scaleDowned
  2. 你需要让ImageButton变小 - 48x48
  3. 你需要添加更大的可绘制资源 - 你的mdpi drawable应该与xml中的ImageButton一样大(mdpi - 256x 256,hdpi - 384x384,xhdpi - 512x512,xxhdpi - 768x768,xxxhdpi - 1024x1024)
  4. 您在问题中发布了一些布局代码(XML),并使用了您使用的详细可绘制资源解析,也许我们可以对您的问题进行进一步调查