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

Posted

技术标签:

【中文标题】在 android 聊天气泡中插入 imageview 可调【英文标题】:insert imageview in android chat bubble adjustable 【发布时间】:2013-04-25 06:58:16 【问题描述】:

我想在我的安卓聊天中这样做

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

这就是我的形象

能否告诉我如何做到这一点?

谢谢。

更新:28/04/2013

这是我的布局

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

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

        <RelativeLayout
            android:layout_
            android:layout_ >

            <ImageView
                android:id="@+id/imgImagenMio"
                android:layout_
                android:layout_
                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_
                android:layout_
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:src="@drawable/play" />
        </RelativeLayout>

        <LinearLayout
            android:layout_
            android:layout_
            android:layout_marginTop="5dp" >

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

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

        </LinearLayout>

    </LinearLayout>

</RelativeLayout>

但我仍然没有解决办法

【问题讨论】:

你能发布你使用的布局xml吗?也许您设置了边距? 【参考方案1】:

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

  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;

  

这能解决您的问题吗?

【讨论】:

如果位图很大很容易出现内存不足的异常,有没有办法在压缩文件上获得类似的效果?

以上是关于在 android 聊天气泡中插入 imageview 可调的主要内容,如果未能解决你的问题,请参考以下文章

Android:制作聊天气泡点9图

模仿QQ气泡聊天

聊天气泡图片的动态拉伸适配与镜像

聊天气泡图片的动态拉伸适配与镜像

如何在 React JS 中使用聊天气泡制作像 UI 一样的聊天

React Native 中的聊天气泡