如何为我在 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 中用作背景的可绘制对象添加圆角?的主要内容,如果未能解决你的问题,请参考以下文章