【问题标题】:android unable to round the corners of imageview?android无法绕过imageview的角落?
【发布时间】:2014-05-30 15:02:28
【问题描述】:

我正在制作一个应用程序,我想在其中将 ImageView 的角四舍五入。但它并没有从它的角落变圆,我使用了以下代码:

<?xml version="1.0" encoding="utf-8"?>

 <shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:padding="8dp"
    android:shape="rectangle" >

<solid android:color="#6BC1F8" />

<corners
    android:bottomLeftRadius="5dp"
    android:bottomRightRadius="5dp"
    android:topLeftRadius="5dp"
    android:topRightRadius="5dp" />

</shape>

用于圆角图像..,但我越来越喜欢这个图像:

我想像下面这样:

我不知道我哪里做错了,请指导我:)

【问题讨论】:

标签: android


【解决方案1】:

在android中使用Shape来制作圆角

在drawable中创建一个名为roundcorner.xml的xml文件

<?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android">
        <solid android:color="#33DDFF" />
        <corners android:radius="4dp" />
    </shape>

在您的 ImageButton 中添加此属性 android:background="@drawable/roundcorner"

并使用android:src 设置图像按钮的图像

使用图像视图集android:src = "your image"android:background= "your shape "android:clickable="true"

【讨论】:

  • 背景如何为图片制作圆角
  • 我使用 xml 文件作为背景,该 xml 文件指定角应该是圆的..@thealeksandr
  • 背景将被四舍五入。但是图像呢?
  • android:src 属性中,指定您想要的图像... @thealeksandr
  • 是的,但您的圆形背景将位于图像下方。而且它不会被四舍五入
【解决方案2】:

有一种非常好的方法可以通过编程方式创建圆角ImageView。您可以尝试一下,

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Bitmap.Config;
import android.graphics.PorterDuff.Mode;

public class ImageHelper {
    public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, int pixels) {
        Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap
                .getHeight(), Config.ARGB_8888);
        Canvas canvas = new Canvas(output);

        final int color = 0xff424242;
        final Paint paint = new Paint();
        final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
        final RectF rectF = new RectF(rect);
        final float roundPx = pixels;

        paint.setAntiAlias(true);
        canvas.drawARGB(0, 0, 0, 0);
        paint.setColor(color);
        canvas.drawRoundRect(rectF, roundPx, roundPx, paint);

        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
        canvas.drawBitmap(bitmap, rect, rect, paint);

        return output;
    }
}

您也可以参考由 Google 工程师 Romain Guy 创建的示例应用

https://docs.google.com/a/impressol.com/file/d/0B3dxhm5xm1sia2NfM3VKTXNjUnc/edit?pli=1

参考,

http://www.curious-creature.org/2012/12/11/android-recipe-1-image-with-rounded-corners/

How to make an ImageView with rounded corners?

【讨论】:

    【解决方案3】:

    试试这个

        <?xml version="1.0" encoding="utf-8"?>
     <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle" >
    
        <gradient
            android:angle="270"
            android:endColor="#cccccc"
            android:startColor="#cccccc" />
    
        <corners android:radius="9dp" />
    
        <stroke
            android:width="1px"
            android:color="#000000" />
    
    
    </shape> 
    

    将其用作您的图像视图的android:background="@drawable/custom,您将获得以下输出。

    EDIT :如果你想要更多圆角,增加android:radius 的值。如果您不想要黑色边框,请删除&lt;stroke ..... /&gt;

    希望这有帮助。

    【讨论】:

      【解决方案4】:

      据我所知,您不能只添加属性。您只能为形状执行此操作。但你可以这样做: 添加两个图像视图。第一张图像,内部带有圆角透明字段。其次,您的图片放在第一张图片下方。

      【讨论】:

        猜你喜欢
        • 2018-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-05
        • 2020-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多