如何制作气球形状的ImageView?

时间:2015-06-30 20:21:28

标签: android bitmap shape

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

  

但我得到了这个:

     

     

当我尝试这个时:

<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"/>
     

或者这个:

     

     

当我尝试这个时:

<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补丁,它与karaokyo说的有点不同。

1 个答案:

答案 0 :(得分:1)

如果您使用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);