0

私のアプリはデフォルトでハードウェアアクセラレーションされています(マニフェストでandroid:hardwareAccelerated = "true"が設定されています)。

ビューの背景として設定したドローアブルがあります。

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

    <stroke
        android:width="1px"
        android:color="#666666" />

    <solid android:color="@android:color/transparent" />

</shape>

また、私は別の見解を持っています:

 <View
        android:id="@+id/divider"
        android:layout_width="fill_parent"
        android:layout_height="1px"
        android:background="#666666" />

線の幅と色は両方で同じである必要があります。そして、私が設定した場合、それらは同じです

setLayerType(View.LAYER_TYPE_SOFTWARE, null);

だが!描画可能な背景を持つビューのソフトウェアレイヤータイプを設定しない場合、2つの異なる線が表示されます。

-背景色の線は大丈夫です、

-もう1つは幅2pxになり、#333333と#191919の2色で描画されます。

手伝ってくれませんか?なぜこのように動作するのですか?そして、ハードウェアアクセラレーションを無効にせずにこれを修正するにはどうすればよいですか?

4

2 に答える 2

0

代わりに密度に依存しないピクセル(dp)または通常のピクセル(px)を使用してください

    <stroke
        android:width="1dp"
        android:color="#666666" />

<View
        android:id="@+id/divider"
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="#666666" />
于 2013-03-06T12:57:24.987 に答える
0

1dpの線は私には広すぎます。可能な限り細い線が必要で、1pxが私の要件に適合します。

私は実際にこれを解決することができました。実際、ハードウェアアクセラレーションをオンにすると、1pxのシェイプラインが正しくレンダリングされません。これを使用してできることは何もありません。代わりに、nodpiディレクトリにある9patchドローアブルを使用しました。それは私が欲しいものを正確に表示します。

于 2013-03-07T08:47:57.647 に答える