2

「タイル」の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>

スクロール可能なグリッドが最初にレンダリングされるとき、タイルは次のようになります。

ここに画像の説明を入力してください

リストが下にスクロールされた後、1ピクセルだけでも、すべてのタイルにこの新しいピクセル化された外観のグラデーションが表示されます。

ここに画像の説明を入力してください

グラデーションは相対レイアウト上にあり、そのように定義されています(星の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" />

これが壊れている特定の電話は、Android2.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 に答える