【问题标题】:Displaying a Bitmap image (ImageView)显示位图图像 (ImageView)
【发布时间】:2018-06-20 09:43:42
【问题描述】:

第一次在这里提问。 我是 Android Studio 的新手,我正忙于在其中创建一个应用程序,该应用程序将扫描包含 Base64 编码图像(以 Base64 字符串的形式)的 QR 码。然后需要对该字符串进行解码,并且必须显示生成的图像。我想我已经设法使用以下方法正确解码:

 byte[] imageBytes = Base64.decode(result.getContents(), Base64.DEFAULT);
 Bitmap decodedByte = BitmapFactory.decodeByteArray(imageBytes, 0,imageBytes.length);        

其中“result.getContents()”返回要转换的Base64字符串。

让我感到困惑的部分是使用 ImageView 和 XML 显示它。我目前有这个:

ImageView image = (ImageView) findViewById(R.id.image);
image.setImageBitmap(decodedByte);    

我对如何使用 XML 显示此图像感到有些困惑,因为我了解“findViewById(R.id.image);”中的“图像”是 XML 图像 ID。我见过的所有示例都涉及显示可绘制的静态图像,但我想显示一个图像,该图像会根据我正在解码的 Base64 字符串而改变。我刚开始学习 XML,我知道用于可绘制图片的常用 ImageView 代码块看起来像这样:

<ImageView 
android:id="@+id/x2"
android:src="@drawable/book"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />    

我的问题是如何更改它以显示我已解码的图像。

【问题讨论】:

  • 你测试过你的代码吗?它表现如何?对我来说看起来不错,或者我错过了一些东西。检查codeChimp的答案
  • 每次解码不同的 base64 图像字符串时,都会创建不同的位图,并将该位图加载到 ImageView。所以无需担心任何事情。代码看起来很可靠。一定要获取同一个 ImageView 的引用。检查 CodeChimp 的答案。

标签: java android xml


【解决方案1】:

您在 XML 中的 ImageView 与您尝试设置的 ID 不同。如下将您的 findViewById 更改为 x2

ImageView image = (ImageView) findViewById(R.id.x2);
image.setImageBitmap(decodedByte);    

【讨论】:

    【解决方案2】:

    加载时的 XML 基本上会创建 java 视图对象,因此您的 imageview 基本上是图像的容器。当您将字符串解码为位图并将位图设置为图像视图时,您是在告诉您的 JVM 反映对图像所做的任何更改以反映在图像视图中。所以你不需要向 XML 添加任何代码来做到这一点。

    【讨论】:

      【解决方案3】:

      动态地设置ImageView的图像是通过程序化这意味着它不是通过XML,而是通过Java代码。 p>

      因此,在您的情况下,XML 部分用于排列您的内容,包括&lt;ImageView&gt;。要访问你的Activity 类,你给这个&lt;ImageView&gt; 一个id。 (在您的情况下,它是通过设置 android:id=@+id/x2 属性来完成的。您猜对了,所以您的 &lt;ImageView&gt; 的 id 是 x2

      要设置此&lt;ImageView&gt; 的图像,您需要先访问它。这就是您需要findViewById() 的原因。因此,要设置图像,请通过

      ImageView image = (ImageView) findViewById(R.id.x2);
      

      现在你有了,然后设置图像

      image.setImageBitmap(decodedByte);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-24
        相关资源
        最近更新 更多