在android中保存并调用占位符图像作为默认值的图像

时间:2014-01-30 19:28:26

标签: android image view bitmap camera

我目前有一份调查问卷,其中每个问题都是在数据库中动态添加的,然后应用程序会收到该问题以获取指示。当它使用相机时,它使用以下代码设置图像:

void setResponse(Bitmap image) {
    captureButton.setImageBitmap(image);
}

够简单吧?当我点击更新,将其保存到sqlite数据库时,我使用它将其保存为base64字符串:

String getResponse() {
    String response = "";
     try 
        {
           Bitmap bitmap = Bitmap.createBitmap(captureButton.getDrawingCache());
           ByteArrayOutputStream stream = new ByteArrayOutputStream();
           bitmap.compress(Bitmap.CompressFormat.PNG, 90, stream);
           byte[] image = stream.toByteArray();
           response = Base64.encodeToString(image, 0);
        } 
        catch (Exception e) 
        {   
           Log.e("Capture image error", e.getMessage());
           e.printStackTrace();
        }
     return response;
}

然后当我回到调查问卷中时,如果它已经有数据,那么只需将其加载:

void setResponse(String response) {
    byte[] decodedString = Base64.decode(response, Base64.DEFAULT);
    Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
    captureButton.setImageBitmap(decodedByte);
}

我目前使用gestureOverlayView的签名系统几乎相同。但为此,我在CameraQuestionView.xml文件中定义了占位符图像:

  <ImageView
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_margin="10dp"
   android:src="@drawable/placeholder"
   android:id="@+id/cameraQuestionCaptureButton"/>

但出于某种原因,在加载备份时,会显示占位符图像,而不是db中保存的图像。我尝试使视图无效,但这也无效。

谢谢!

1 个答案:

答案 0 :(得分:1)

忘了做

captureButton.setDrawingCacheEnabled(true);

保存我的回复时,首先没有保存位图。我花了一段时间追查,我怀疑这对其他人有帮助,因为这只是另一个问题的愚蠢错误。