Android 上模糊的 1dip 形状线(边框)

3
这是我的应用程序截图: enter image description here 这张截图来自三星Galaxy Note 10.1(mdpi 149 ppi)。
我的客户认为底部按钮周围的边框线和上方的圆角矩形模糊不清。
我使用的是类似于以下背景的形状:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"
    >
    <corners
        android:radius="8dp" />

    <stroke android:width="1dp" android:color="@color/dark_gray" />

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

</shape>

当我使用高度为1dp的简单视图作为线条时,如下所示:
<View
    android:background="@color/bright_gray"
    android:layout_width="match_parent"
    android:layout_height="1dp" />

如下截图所示,它非常清晰:

enter image description here

简单的水平线是可以的,但是图形周围的矩形又模糊了。

我做错了什么?

感谢任何帮助。

1个回答

5
我的第一个猜测是这可能与双线性过滤有关(http://en.wikipedia.org/wiki/Bilinear_filtering)。
要解决这个问题,请参考View#setLayerType方法。
我在自定义视图中遇到了这个问题。在我的视图的初始化方法中,我有以下代码:
    if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB){
        this.setLayerType(View.LAYER_TYPE_SOFTWARE, null);          
    }

这个方法解决了我的问题,但你也可以使用android:layerType xml属性或在视图上的代码中使用setLayerType方法来实现相同的效果。

是的,谢谢!这完全解决了线条问题。看起来更加暴力的解决方法是在AndroidManifest.xml文件中的<application>标签中设置android:hardwareAccelerated="false"。 但我仍然有一个圆角问题,它们看起来仍然很糟糕,但我不知道是否可以改善。 - Semanticer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接