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

9

我有一个在我的应用中用作背景的具体drawable,它不是纯色。
现在我想给这个drawable添加圆角。

我只找到了带有渐变或纯色背景的形状中可用的圆角,但没有其他的drawable。

是否还有其他简单的方法可以向drawable添加圆角呢?


你能提供一张图片来说明你想要实现的目标吗? - mbafford
@GauravArora的答案对我有用。希望它能起作用。如何制作带圆角的布局..? - Nelson Katale
4个回答

3
使用AQuery可以将Drawable或下载的图像制作成圆角。 http://code.google.com/p/android-query/wiki/ImageLoading 注意:这对于使用图片执行异步任务非常有效,并提供了许多功能。
从这里下载API
以下是将图像制作成圆角的代码:
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);

这个工具非常棒!! - AdamM

0
你可以使用“layer-list”可绘制对象来实现你想要的效果吗?它允许你将形状和图形可绘制对象组合在一起,像这样:
<?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>

我正在使用这个方法在图像上实现"选中"效果。尽管对于我来说它起作用,因为问题中的图标和背景颜色都与包含视图的背景颜色相同(都是白色)。

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


1
这是一个好主意,但对我来说不起作用。我需要角落是纯色的,可绘制对象的内部颜色必须完全透明,我还没有想出如何做到这一点。 - Janusz

0

对于我需要的情况,我使用了一个填充有渐变和圆角的形状,并使其正常工作。这看起来有点像我想要实现的效果。

如果你有一个纹理或其他无法用形状构建的复杂可绘制对象,似乎需要将具有圆角的可绘制对象添加到你的项目中。或者自己构建圆角,就像在这个 问题 中解释的那样。


0
你可以使用drawable创建一个Nine-patch文件。将中心与当前背景匹配,并根据需要将边缘和角落进行圆角处理。Android文档展示了如何创建Nine-patch文件,你也可以使用Draw nine-patch工具来构建它。
这就是SDK用于创建弹出框等带有圆角渐变背景样式的方法。

这是可以实现的,但我必须将圆角创建为图形,并且如果分辨率发生变化,则圆角可能看起来更小或更大,因为它们不会改变大小。使用形状,我可以以DIP指定角落的角度。 - Janusz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接