在android聊天气泡中插入imageview可调

时间:2013-04-25 06:58:17

标签: android android-arrayadapter android-imageview nine-patch

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

enter image description here

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

这就是我的形象

enter image description here

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

感谢。

更新日期:2013年4月28日

这是我的布局

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

但我仍然没有解决方案

1 个答案:

答案 0 :(得分: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;

  }

这可以解决您的问题吗?