0

我有一些,使用或类似的技术 ImageView's绕过角落似乎太麻烦了。ImageLoader

我可以简单地制作一个LinearLayout来覆盖图像吗?(或将图像设置为其背景?)例如,如果布局有圆角,它会隐藏下面的图像部分以创建圆角效果吗?

我一直在尝试使用它(特别是使用图像作为背景)并且似乎无法隐藏图像的角落。

4

3 回答 3

1

好吧,使用 FrameLayout 或 RelativeLayout,您可以轻松地在 imageview 上堆叠第二层,例如:

<FrameLayout
    android:layout_width="60dp"
    android:layout_width="60dp">
    <ImageView android:id="@+id/myimage"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:src="@drawable/myrealimage" />
    <ImageView android:id="@+id/my_roundedcorner_overlay"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:src="@drawable/myoverlaywithroundedcornersandtransparentcenter" />
</FrameLayout>

但是,请注意这会导致过度绘制并使您的布局更加复杂。

您还可以将真实图像设置为 ImageView 的背景,并将叠加层设置为 ImageViews src,但是在这种情况下不要设置填充(也可能不再使用库从 Web 加载图像)

最干净的解决方案是创建一个扩展 ImageView 的自定义小部件并覆盖其 onDraw 方法,使用位图着色器绘制到画布上,类似于http://www.curious-creature.org/2012/12/11/android-recipe-1- image-with-rounded-corners/几乎相同,但只做一次,然后根据需要多次重复使用。

于 2013-05-02T20:18:27.480 回答
0

我曾经遇到过同样的问题,只是我想创建一个圆角的谷歌地图,检查这个问题:

有没有办法为 Mapfragment 实现圆角?

诀窍是创建一个FrameLayout并在其中放置您的内容,然后在其顶部放置另一个9-patch具有圆角图像背景的布局。

于 2013-05-02T20:25:43.463 回答
0

如果您使用通用图像加载器,您可以将图像的角变圆。

DisplayImageOptions options = new DisplayImageOptions.Builder()            
        .displayer(new RoundedBitmapDisplayer())
        .build();
ImageLoader.getInstance().displayImage(imageUrl, imageView, options);
于 2013-05-02T20:35:07.307 回答