在 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 可调的主要内容,如果未能解决你的问题,请参考以下文章