【问题标题】:How to add rounded corner to a drawable I'm using as a background in Android?如何为我在 Android 中用作背景的可绘制对象添加圆角?
【发布时间】:2011-03-10 04:40:29
【问题描述】:

我有一个特定的可绘制对象,我在我的应用程序中用作背景。它不是纯色。
现在我想给这个drawable添加圆角。

我只发现圆角在具有渐变或纯色作为背景的形状中可用,但不是另一个可绘制对象。

是否有另一种简单的方法可以为可绘制对象添加圆角?

【问题讨论】:

标签: android layout rounded-corners


【解决方案1】:

你能用“图层列表”drawable 完成你想要的吗?它允许您像这样组合形状和可绘制图形:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@drawable/icon_home_button_img"/>
        <item android:drawable="@drawable/icon_home_shape_overlay"/>
</layer-list>

在这种情况下,shape_overlay 是:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#60000000"/>
    <stroke android:width="3dp" color="#ff000000"/>
    <corners android:radius="10dp" />
</shape>

我正在使用它在图像上获得“选定”效果。不过,它对我有用,因为有问题的图像是一个图标,背景与包含视图的背景颜色相同(都是白色)。

我看到的另一个选项是修改可绘制对象,使其具有圆角。

【讨论】:

  • 这是个好主意,但对我不起作用。我需要角落是纯色,并且drawable的内部颜色必须是完全透明的,我还没有弄清楚如何做到这一点。
【解决方案2】:

在我需要它的情况下,我使用了一个填充了渐变并具有圆角的形状。这看起来有点像我想要达到的效果。

如果您有无法使用形状构建的纹理或其他复杂的可绘制对象,您似乎需要在项目中添加带有圆角的可绘制对象。或者按照question 中的说明自行构建圆角。

【讨论】:

    【解决方案3】:

    你可以用你的drawable创建一个Nine-patch file。中心与您当前的背景相匹配,边缘和角落根据需要圆润。 Android 文档显示how to create Nine-patch files,您也许可以使用Draw nine-patch tool 来构建它。

    这就是 SDK 如何为弹出框等制作圆边、渐变背景样式。

    【讨论】:

    • 这是可能的,但是我必须将圆角创建为图形,如果分辨率发生变化,这些角看起来会变小或变大,因为它们不会改变它们的大小。使用形状,我可以在 DIP 中指定角的角度。
    【解决方案4】:

    使用 AQuery 使可绘制或下载的图像圆角。

    http://code.google.com/p/android-query/wiki/ImageLoading

    注意:这在使用图像执行异步任务时非常有效,并且提供了很多功能。

    从这里下载 API: http://code.google.com/p/android-query/downloads/list

    代码对图像进行圆角处理:

    AQuery aq = new AQuery(this);
    
    // Image URL to download
    String url = "http://www.vikispot.com/z/images/vikispot/android-w.png";
    
    ImageOptions options = new ImageOptions();
    options.round = 15;
    
    aq.id(R.id.image).image(url, options);
    

    【讨论】:

    • 这个工具太棒了!!
    猜你喜欢
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-24
    相关资源
    最近更新 更多