4

我想在我的 android 聊天中执行此操作

在此处输入图像描述

但我无法让我的照片适合我的泡泡。-我有一个LinearLayout,他的背景是一个气泡9patch -在这个里面,我有一个imageview,在这里插入图像, 但不知道如何使它适合我们在屏幕上看到的背景。

这就是我的形象

在此处输入图像描述

可以让我知道如何做到这一点吗?

感谢。

更新:28/04/2013

这是我的布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rtlImganen"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginRight="25dp"
    android:gravity="center_vertical" >

    <LinearLayout
        android:id="@+id/lnyGenImagenMio"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:background="@drawable/bocadilloazulmio"
        android:gravity="right"
        android:orientation="vertical" >

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <ImageView
                android:id="@+id/imgImagenMio"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:adjustViewBounds="true"
                android:maxHeight="@dimen/maximagen"
                android:maxWidth="@dimen/maximagen"
                android:scaleType="centerCrop" />

            <ImageView
                android:id="@+id/imgPlayMio"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:src="@drawable/play" />
        </RelativeLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp" >

            <ImageView
                android:id="@+id/imgImagenEnvioRecibidoMio"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom"
                android:src="@drawable/enviadorecibido" />

            <TextView
                android:id="@+id/txtFechaImagenVideoMio"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:textColor="#0000FF"
                android:textSize="8sp" />

        </LinearLayout>

    </LinearLayout>

</RelativeLayout>

但我仍然没有解决方案

4

1 回答 1

3

这只能通过自定义视图来完成。我有同样的问题。查找自定义 ImageView 和路径以及剪切位图。我写了这个片段来从给定的位图中剪下一个语音气泡形状:

  public static Bitmap clipit(Bitmap bitmapimg,int direct) {

    //1 = direction right
    //0 = direction left

      Bitmap output = Bitmap.createBitmap(bitmapimg.getWidth(),
                bitmapimg.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, bitmapimg.getWidth(),
                bitmapimg.getHeight());

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

        if(direct == 0) {
        canvas.drawRect(0, 0, bitmapimg.getWidth()-15, bitmapimg.getHeight(), paint);
        Path path = new Path();
        path.moveTo(bitmapimg.getWidth()-15, 10);
        path.lineTo(bitmapimg.getWidth(), 20);
        path.lineTo(bitmapimg.getWidth()-15, 30);
        path.lineTo(bitmapimg.getWidth()-15, 10);
        canvas.drawPath(path,paint);
        }
        if(direct == 1) {
            canvas.drawRect(15, 0, bitmapimg.getWidth(), bitmapimg.getHeight(), paint);             
            Path path = new Path();
            path.moveTo(15, 10);
            path.lineTo(0, 20);
            path.lineTo(15, 30);
            path.lineTo(15, 10);
            canvas.drawPath(path,paint);    
        }


        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
        canvas.drawBitmap(bitmapimg, rect, rect, paint);
        return output;

  }

这能解决你的问题吗?

于 2013-05-15T17:58:31.373 回答