显示位图图像(ImageView)

时间:2018-06-20 09:43:43

标签: java android xml

第一次问这里。 我是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" />    

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

3 个答案:

答案 0 :(得分:1)

您在XML中的ImageView具有与您要设置的ID不同的ID。如下所示将findViewById更改为x2

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

动态设置ImageView 的图像是通过以编程方式进行的,这意味着它不是通过XML而是通过Java代码完成的。

因此,在您的情况下,XML部分用于安排您的内容,包括<ImageView>。要将其访问您的Activity类,请为此<ImageView>提供一个ID。 (在您的情况下,可以通过设置android:id=@+id/x2属性来完成。您猜对了,因此<ImageView>的ID为x2

要设置此<ImageView>的图像,您需要首先访问它。这就是为什么您需要findViewById()。因此,要设置图片,请通过

进行访问
ImageView image = (ImageView) findViewById(R.id.x2);

现在有了它,然后只需设置图像

image.setImageBitmap(decodedByte);