2

我有一个“Tiles”的 GridView,每个都具有以下android:background属性:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <gradient
        android:endColor="#00FFFFFF"
        android:gradientRadius="180"
        android:startColor="#55FFFFFF"
        android:type="radial" />

</shape>

当可滚动网格最初呈现时,图块如下所示:

在此处输入图像描述

列表向下滚动后,即使只是一个像素,所有的图块都会有这个新的、像素化的渐变:

在此处输入图像描述

渐变位于相对布局上,定义如下(其中有一个用于星形的 ImageView、一个 TextView 等):

<RelativeLayout
    android:id="@+id/tile_image_layout_gradient"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/radialbg"
    android:orientation="vertical"
    android:paddingBottom="10dp"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingTop="20dp" />

这是一款运行 Android 2.3.4 的 Experia 手机。Galaxy S3 似乎可以很好地渲染它,但任何基于 4.x 的 x86 仿真器也有同样的伪影问题。

4

2 回答 2

6

请尝试在您的onCreate()方法中设置它,之前setContentView()

getWindow().setFormat(PixelFormat.RGBA_8888);

在这种情况下,您可能还需要以编程方式设置背景,而不是通过 xml。

于 2012-11-20T17:01:12.703 回答
2

将以下覆盖添加到您的活动中,这应该通过将窗口格式设置为支持更多颜色来解决您看到的色带问题。

@Override
public void onAttachedToWindow() {
    getWindow().setFormat(PixelFormat.RGBA_8888);
}

更多信息: http: //developer.android.com/reference/android/view/Window.html#setFormat(int)

于 2012-11-20T17:01:17.373 回答