android - 如何制作气球状的 ImageView?

标签 android bitmap shapes

我试图制作一个 ImageView,它遵循另一个 ImageView 源的形状,甚至是它自己的背景。我想要这样的东西:

But I'm getting this:

When I try this:

<ImageView
    android:id="@+id/mimage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:maxHeight="80dp"
    android:src="@drawable/ic_chat_conteudo_balao"
    android:background="@mipmap/pomba"
    android:maxWidth="80dp"/>

Or this:

When I try this:

<ImageView
    android:id="@+id/mimage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:maxHeight="80dp"
    android:src="@mipmap/pomba"
    android:background="@drawable/ic_chat_conteudo_balao"
    android:maxWidth="80dp"/>

我也试过关注 this回答,但这不是我想要的:

好吧,我不知道该怎么办了。有没有办法将一个位图按照其形状放入另一个位图中?

这是我正在处理的图像

我认为这不是重复的,因为我正在使用 9-patch,它与 karaokyo 所说的有点不同。

最佳答案

我想如果你使用 9 片面膜会有点不同。

ImageView imageView = (ImageView) findViewById(R.id.mimage);

NinePatchDrawable mask = (NinePatchDrawable) getResources().getDrawable(R.drawable.balloon);
Bitmap original = BitmapFactory.decodeResource(getResources(), R.drawable.pomba);
Bitmap result = Bitmap.createBitmap(original.getWidth(), original.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(result);
canvas.drawBitmap(original, 0, 0, null);
mask.getPaint().setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
mask.setBounds(new Rect(0, 0, original.getWidth(), original.getHeight()));
mask.draw(canvas);

imageView.setImageBitmap(result);

关于android - 如何制作气球状的 ImageView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31147803/

相关文章:

html - 如何使用CSS3绘制如下形状

android - 自定义 ArrayAdapter onLongClickListener

android - java.lang.OutOfMemoryError 即使在 try-catch block 中?

Android imageview 支持 png 、 jpeg 等图像类型

android - 使用函数参数按名称检索可绘制资源

java - 如何使用以下 Pen 类和 canvas 类在 Java 中绘制螺旋和多边形

animation - 为在 drawRect() Swift 中绘制的贝塞尔曲线路径设置动画

android - 在不同操作系统之上使用编程语言

android - 更改通知的默认操作

java - 新的 Jetpack 数据存储仅适用于 Kotlin 吗?