可怕的ImageView位图质量?

时间:2013-04-04 11:28:45

标签: android android-imageview

我有一个闪屏,ImageView扮演背景的一部分。无论我是否允许我的位图缩放(我这样做),图像质量都很糟糕。我认为这会减少颜色深度。我已经环顾四周了,一个建议是将我的图片放在raw而不是drawable,但这也没有帮助。这是一个截图:

enter image description here

这里到底发生了什么,我该如何解决?

编辑:我没有以编程方式应用此位图,因此没有相关的Java代码。以下是此活动的XML代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/RelativeLayoutSplash"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:drawingCacheQuality="high"
    android:orientation="vertical"
    android:padding="@dimen/splash_padding"
    android:scrollbarAlwaysDrawVerticalTrack="true"
    tools:context=".SplashActivity" >

    <ImageView
        android:id="@+id/ImageViewBg"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:contentDescription="@string/logo_description"
        android:scaleType="centerCrop"
        android:src="@drawable/splash_bg_register" />

    <ImageView
        android:id="@+id/ImageViewLogo"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:contentDescription="@string/logo_description"
        android:maxHeight="@dimen/logo_maxheight"
        android:maxWidth="@dimen/logo_maxwidth"
        android:layout_centerVertical="true"
        android:src="@drawable/logo" />

    <TextView
        android:id="@+id/TextViewCopyright"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:text="@string/copyright"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:textColor="@color/white_50"
        android:textSize="@dimen/copyright_size" />

</RelativeLayout>

编辑:我按照建议尝试了getWindow().setFormat(PixelFormat.RGBA_8888);,这显示了明显的区别,但条带仍然存在。 This是我用作背景的图片。

8 个答案:

答案 0 :(得分:8)

当图像的纵横比受到干扰时,会出现条带。

您可以尝试以下任何一项:

  1. 制作图片.9.png。在这种情况下,它会自动修复任何延伸并照顾条带。

  2. 对图像应用表面抖动,这可能会阻止任何异常的条纹。

    <bitmap
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:src="@drawable/b1"
        android:tileMode="repeat"
        android:dither="true" />
    

答案 1 :(得分:2)

你的形象的尺寸是多少?什么是设备? 我怀疑的是图像大小与显示器的大小不匹配,并且它位于错误的资源可绘制文件夹中。图像看起来相当规模。这些文章可以帮助您挑选不同屏幕的图像分辨率和资源文件夹。

http://developer.android.com/guide/practices/screens_support.html

http://developer.android.com/training/multiscreen/index.html

答案 2 :(得分:2)

您必须设置窗口颜色格式。在你的活动中放了这样的东西:

getWindow().setFormat(PixelFormat.RGBA_8888);

答案 3 :(得分:1)

我猜图像的尺寸小于图像显示的区域。因此,可能是图像正在扩大和失去质量。

What you can try is:

1. Either put the image of similar dimension 
2. use 9 patch image ( good idea )

答案 4 :(得分:1)

您需要将图片调整为不同尺寸,并将其放入res/

下的相应可绘制文件夹中

答案 5 :(得分:0)

尝试抗锯齿,这可能会解决您的问题。

使用以下xml创建一个可绘制的位图。

<bitmap
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/background"
    android:antialias="true"
    android:dither="true"  />

答案 6 :(得分:0)

  

你正在做的是在xml中设置更多依赖的图像   关于图像分辨率支持的内容。

每个支持的多个设备密度都有多个文件夹,将您的图像放在一些合适的dpi文件夹中。

请参阅此链接http://developer.android.com/guide/practices/screens_support.html

查看相同的应用图标,如何在不同的文件夹中表现得很明显

不支持不同密度的示例应用,如低,中,高密度屏幕所示

Example application without support for different densities, as shown on low, medium, and high density screens.

enter image description here

示例应用,具有对不同密度的良好支持(与密度无关),如低,中,高密度屏幕所示。

答案 7 :(得分:0)

通过将图像设为背景图像来调整它。这是一个示例代码

   <ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/your_image"
    />