1

我在 Android 2.2 中开发我的应用程序已经有一段时间了,我对它非常满意。然而,技术进步,是时候升级老女孩以使用 Honeycomb 和 ICS...

看起来不正确的一件事是我屏幕上的按钮。这很令人沮丧,但我似乎无法找到一种方法让它们看起来像以前那样。我的按钮使用自定义可绘制对象,它是一个 XML 文件,而不是实际的图形。它看起来像这样:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <gradient
                android:startColor="#444444"
                android:endColor="#444444" />

            <stroke
                android:width="1dip"
                android:antialias="true" 
                android:color="@android:color/white" />

            <corners
                android:radius="8dip" />

            <padding
                android:left="2dip"
                android:top="2dip"
                android:right="2dip"
                android:bottom="2dip" />
        </shape>
    </item>
</selector>

按钮在 layout.xml 文件中抓取此代码,如下所示:

<Button
    android:id="@+id/button1"
    android:layout_weight="1"
    android:layout_width="1dp"
    android:layout_margin="2dp"
    android:longClickable="true"
    android:visibility="invisible"
    android:layout_height="fill_parent"
    android:background="@drawable/def_gray"
    android:layout_gravity="center_vertical"
    android:textColor="@android:color/white"
    android:gravity="center_horizontal|center_vertical" />

这用于生成一个漂亮、专业的圆角矩形按钮,带有白色边框和灰色中心。但是,现在我在三星 Galaxy Tab 2(运行 ICS)上运行我的代码,边框的圆形部分不是白色的——它们是灰色的,而且看起来很糟糕。我发现如果我将笔画增厚到 2dip,边角会变白,但我真的更愿意保留该软件的早期版本外观。

我从经验中了解到,如果我用 Paint & Canvas 绘制带有曲线的东西,这个问题的答案是确保开启抗锯齿。但是,即使 XML 有一个 android:antialias 键(您可以在该部分中看到它——但它不起作用),我还是不知道如何使用它。

有没有人有什么建议??

谢谢,R。

4

3 回答 3

0

这可能只是屏幕质量。或者,它可能是边界和中心之间的混叠。

此代码可能会绕过别名:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape>
            <gradient
                android:endColor="#444444"
                android:startColor="#444444" />

            <corners android:radius="8dip" />
        </shape>
    </item>
    <item>
        <shape>
            <solid android:color="#00000000"/>

            <stroke
                android:antialias="true"
                android:width="1dip"
                android:color="@android:color/white" />

            <corners android:radius="8dip" />
        </shape>
    </item>
</layer-list>
于 2012-06-27T14:45:07.113 回答
0

You could create a 9 patch drawable which won't have this anti-aliased look to it.

于 2015-03-05T20:58:44.117 回答
0

我能找到的唯一答案是将白色轮廓的大小从 1dp 增加到 2dp。我能想到这会起作用的原因是曲线的颜色混叠,但我没有直接解决这个问题。起初,这真的不是我想要的样子,但它在我身上长大了。

于 2012-09-12T15:09:25.923 回答