【问题标题】:Create Single Pixel Rectangle创建单像素矩形
【发布时间】:2015-03-06 05:34:24
【问题描述】:

我想创建一个单像素笔划矩形,但 android 正在渲染两个像素。

这是我的 xml 代码:

<item>
    <shape android:shape="rectangle">    
        <solid android:color="#FFF" />
        <stroke android:width="1px" android:color="#000" />
    </shape>
</item>

这里是渲染的左上角:

我唯一的猜测是这个背景与设备像素不一致。

【问题讨论】:

  • 嘿,你解决了吗?您能否接受答案或添加正确答案以关闭此问题并将其从未回答列表中删除,谢谢!
  • 这个还没解决。

标签: android


【解决方案1】:

所以,本质上是一条线?您可以尝试使用类似的东西

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line">
    <solid android:color="#FFF" />
    <stroke android:width="1px" android:color="#000"/>
</shape>

编辑:哎呀,我想我误解了。我猜你总是可以用线条画一个矩形。

【讨论】:

  • 如尼克所说,尝试使用 dp。
【解决方案2】:

px 在不同的屏幕尺寸上有不同的含义。我猜这是在更大的屏幕上?尝试将单位更改为 dp,抗锯齿效果应该会消失

edit:实际上,如果您只是希望屏幕上线条的物理粗细为当前大小的一半,这并不能解决您的问题。它让它在所有类型的屏幕上看起来都一样,并保持稳定的外观,如果这是你的抱怨的话

【讨论】:

  • 使用 dp 不起作用。这是有道理的,因为根据developer.android.com/guide/topics/resources/…,dp 可以根据屏幕密度改变像素高度。我想要像素,因为无论屏幕密度如何,我都想要 1 个像素。
  • 是的,虽然这意味着在更大的屏幕上像素可能甚至不会被注意到,这就是为什么 dp 更好。如果您对不排队的事情造成的影响是正确的,那么这种方法可以解决它。否则我能看到的唯一其他选择是精心设计的 9 补丁
【解决方案3】:

这是由蜂窝和后来引入的双线性过滤引起的。有两种解决方案:

  1. 使用此标签禁用清单中的所有硬件加速(坏主意)

    android:hardwareAccelerated="false"

  2. 在受影响的视图上使用 xml 属性仅通过软件进行渲染

    android:layerType="软件"

我在这里找到了解决方案:

Blurred 1dip shape lines (borders) on Android

【讨论】:

    猜你喜欢
    • 2014-05-13
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多