如何为我在 Android 中用作背景的可绘制对象添加圆角?

Posted

技术标签:

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

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

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

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

【问题讨论】:

您能否提供一张图片来说明您要完成的工作? @GauravArora 答案对我有用。我希望它有效。 How to make layout with 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: 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);

【讨论】:

这个工具太棒了!!

以上是关于如何为我在 Android 中用作背景的可绘制对象添加圆角?的主要内容,如果未能解决你的问题,请参考以下文章

Android Button 背景无法识别/使用可绘制对象

为 TextView 的一部分设置可绘制背景

Android可绘制背景角不删除

具有不同角半径的可绘制形状背景的布局上的标高

如何为所有 Android 分辨率准备图像?

如何为以编程方式存储在变量中的按钮添加 android 可绘制文件的值?