【问题标题】:Blurred 1dip shape lines (borders) on AndroidAndroid 上模糊的 1dip 形状线(边框)
【发布时间】:2014-05-03 17:17:25
【问题描述】:

这是我的应用程序的屏幕截图:

取自Samsung 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" />

正如您在下一个屏幕截图中看到的那样,它非常清晰:

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

我做错了什么?

感谢您的帮助。

【问题讨论】:

    标签: android android-shapedrawable


    【解决方案1】:

    我的第一个猜测是这是双线性过滤的问题 (http://en.wikipedia.org/wiki/Bilinear_filtering)。

    要修复它,请参阅View#setLayerType 方法。

    我在自定义视图中遇到了这个问题。在我的视图的 init 方法中,我有以下代码:

        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 的 中设置 android:hardwareAccelerated="false" 但我仍然有圆角的问题,它们看起来仍然很糟糕,但我不知道是否可能会更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 2014-03-13
    • 2015-12-17
    • 1970-01-01
    • 2014-01-19
    相关资源
    最近更新 更多