当相机预览存在时,可绘制不可见

时间:2013-09-18 09:03:12

标签: android android-layout android-camera

我正在编写一款需要在相机预览上显示半透明PNG图层的应用。一切都很好,直到我想发布它并确保它也适用于Android 2.x.似乎在旧版本的Android上,相机预览会导致drawable(在我的情况下,是ImageView的子类)无法显示。当我摆脱预览时,它工作得很好 - drawable是可见的。它在仿真器和真实设备上都是这样的。

在Android 2.3上看起来如何:

Image 1

和4.2.2:

Image 2

我认为这里要粘贴太多代码,所以我将有问题的部分分离到一个小项目中:http://krzeminski.it/wp-content/uploads/2013/09/DrawableTest.zip。最有趣且可能有罪的课程是 CameraPreview

另外,我不确定为什么预览本身不起作用。我在Android 2.x仿真器上看过,仿真相机的测试图像就是这种纯白色,所以我认为没关系。但是,我的朋友用Android 2.3测试了手机上的应用程序,预览似乎是纯黑色。我想这是一个单独问题的主题,但也许你会在代码中注意到一些东西。

我现在花了2天时间来解决这两个问题,所以任何线索都会非常有用。谢谢!

2 个答案:

答案 0 :(得分:1)

我不久前遇到了这个问题。我记得有关SO的帖子建议您不要使用ImageView#getImageMatrix()。给出的推理是:

public Matrix getImageMatrix():

  

返回视图的可选矩阵。这适用于视图   绘制时绘制。如果没有矩阵,这种方法会   返回一个单位矩阵。不要改变这个矩阵,但要做   复印件。如果你想要一个不同的矩阵应用于drawable,be   一定要调用setImageMatrix()。

即使在阅读完这篇文章之后,我也无法理解它的不同之处。我使用以下方法对问题进行了排序:

Matrix matrix = new Matrix();

可能你正在处理同样的问题。试一试。

答案 1 :(得分:0)

我没有Android 2.3设备。但我想你可以尝试两种方法: 1.将FrameLayout更改为RelativeLayout 2.以编程方式添加视图:

mLayout.addView(mPreview);
mLayout.addView(mImageView);
mLayout.addView(mTextView);