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 条不同的线:

- 有颜色背景的线没问题,

- 另一个变成 2px 宽,用 2 种颜色绘制:#333333 和 #191919。

你能帮我么?为什么它会这样?我怎样才能在不禁用硬件加速的情况下解决这个问题?

4

2 回答 2

0

1dp 线对我来说太宽了。我需要尽可能窄的线,1px 符合我的要求。

我实际上设法解决了这个问题。确实 1px 形状线在硬件加速开启的情况下渲染不正确,你无能为力。相反,我在 nodpi 目录中使用了 9patch drawable。它准确地显示了我想要的。

于 2013-03-07T08:47:57.647 回答
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 回答