Android - Gradient Weirdness

时间:2012-11-20 16:54:04

标签: android drawable gradient

我有一个“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>

当可滚动网格最初渲染时,图块看起来像这样:

enter image description here

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

enter image description here

渐变位于相对布局上,定义如此(其中包含一个用于星形的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" />

正在推出的特定手机是Experia,运行Android 2.3.4。 Galaxy S3似乎渲染得很好,但任何基于4.x的x86仿真器也会产生相同的伪像问题。

2 个答案:

答案 0 :(得分:6)

请尝试在onCreate()之前使用setContentView()方法进行设置:

getWindow().setFormat(PixelFormat.RGBA_8888);

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

答案 1 :(得分:2)

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

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

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