android:用于表示文本中的可绘制图像以进行发送

时间:2015-09-25 12:07:44

标签: android android-layout google-cloud-messaging android-imageview

在我的应用中,我在drawable文件夹中有一些小的png图像,可以在edittext和textviews中显示。

现在,我可以在edittext和textview中显示这些图像。

我有以下情况: 在User1,他可以选择图像并在edittext中显示。单击发送按钮时,edittext中的文本需要发送给User2。

我正在使用GCM在用户之间发送普通文本。

那么,我怎样才能以文本格式表示图像。 我应该使用什么编码?我应该只有一些特殊字符前面的可绘制图像文件名吗?

例如:如果图像名称是e205,那么可以执行以下操作: “这是普通文字,## e205以前是图片”

就像我在这种情况下使用##一样,可以用来识别后面的单词实际上是图像文件名而不是普通文本?

当User2收到此消息时,只有文本的编码部分才会转换回图像,并以文本视图显示。

2 个答案:

答案 0 :(得分:0)

您可以按照此处的说明使用此功能:Drawable to byte[]

Drawable d; // the drawable (Captain Obvious, to the rescue!!!)
Bitmap bitmap = ((BitmapDrawable)d).getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] bitmapdata = stream.toByteArray();

完成后,您可以将其设为字符串:

new String(bitmapdata);

然后你可以通过套接字,gcm或任何你想要的东西发送它。

由您决定制定协议,以便应用程序可以在编码图像和文本之间进行区分。

如果两个客户端都有可绘制的本地存储空间,您只需要告诉他们可绘制的名称,这样他们就可以加载并显示它。

您应该定义一个分隔符,以帮助将字符串拆分为图像/文本

这样的东西可以是你的字符串" IMAGENAME | USERTEXT",只是确保你不要使用任何可以在用户输入的文本中使用的字符。

然后,在另一方面,您可以用

拆分它
split("|")

在这种情况下,它将返回一个大小为2的String数组,位置0的IMAGENAME,位置1的USERTEXT。

希望这有帮助。

答案 1 :(得分:0)

您可以简单地转换/构建消息json并使用此json字符串来传递GCM。例如,请参阅下面的user1发送给用户的消息。

{
  "message": {
    "id": 12345,
    "from_name": "John",
    "to_name": "Steave,
    "body": "\"Hello\"",
    "image_id": "\"1.png\""
  }
}

现在在user2的一边。当user2收到消息[GCM]时,您将获得上面的json字符串。将json字符串转换为对象或简单地解析它。提取你想要的内容。例如在你的情况下image_id。匹配本地目录或资产中的图像ID,并将其用于显示user2。

如果您需要更多信息,请与我们联系。

谢谢。

相关问题