3

有什么办法吗?我遵循了本教程(http://marakana.com/forums/android/examples/39.html),效果很好。此外,我将 FrameLayout(包含相机预览)放入带有 ImageView 的 RelativeLayout。

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >



    <FrameLayout
        android:id="@+id/preview"
        android:layout_width="330dp"
        android:layout_height="233dp"
        android:layout_marginTop="22dp"
        android:layout_alignBottom="@+id/imageView1"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" >
    </FrameLayout>

<ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/image_on_preview" />

</RelativeLayout>

所以现在启动应用程序,我有相机和图像视图。如果我将图片保存到 SD 卡中,我只会得到用相机拍摄的图片,但不会出现 imageview(当然,为什么会出现)。现在我的问题是如何保存它?为了更好地理解,我在使用我的应用程序时捕获了一个屏幕截图。

在此处输入图像描述

所以我想将相机预览和图像视图都保存在一张图片中。我不确定这是否可能,但如果我不必将照片保存到 SD 卡上,那将是最好的。稍后我将添加一个“保存到 SD 卡”按钮来保存它。

**更新

现在我想出了一个办法。我将图片保存在 SD 卡上,然后在创建文件时更改为另一个意图。它包含两个图像视图,一个是“image_on_preview”,另一个是我之前保存图片的来源。好的,现在我只需要以某种方式变得棘手并结合两个图像视图:)

***更新2

好的,我做到了。在第二个活动中,我将两个图像视图都转换为位图。然后我画了一个画布并将它们放在一起,然后我可以直接将它保存到 SD 卡中。

4

1 回答 1

3

由于没有人回答并且我解决了问题(并且有一票赞成)我展示了我自己的方法。

  1. 在第一个活动中,有一个带有 FrameLayout 和 Imageview 的 RelativeLayout。就像在附图中一样。
  2. 我创建了一个按钮,用于捕获图像。当我按下该按钮时,我将拍摄的照片保存到 SD 卡中并更改为 activity2。
  3. 在活动 2 中,我将保存的图像读入位图(我立即针对 OutOfMemory 错误对其进行缩放),然后将其添加到图像视图中。就像在activity1中一样,我将另一个imageview(封面)和保存的照片放在相对布局中。
  4. 为了将它保存到 SD 卡,我需要创建一个画布,并使用canvas.drawBitmap(). 我首先绘制了捕获的照片而不是图像视图(封面),然后将它们放置/缩放以看起来就像在活动中一样。画布将绘制位图,您可以将其保存到 sd 卡。5*(可以跳过)删除第一张照片。

希望这对某人有用:)

于 2012-07-28T22:07:47.713 回答