0

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

这是它在 Android 2.3 上的样子:

图 1

和 4.2.2:

图 2

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

另外,我不确定为什么预览本身不起作用。我在 Android 2.x 模拟器上读到过,来自模拟相机的测试图像就是这个纯白色,所以我认为没问题。然而,我的朋友在他的手机上用 Android 2.3 测试了这个应用程序,预览看起来是纯黑色的。我想这是一个单独问题的主题,但也许您会注意到代码中的某些内容。

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

4

2 回答 2

1

我不久前遇到了这个问题。我记得 SO 上的一篇文章建议您不要使用ImageView#getImageMatrix(). 给出的理由是:

公共矩阵 getImageMatrix():

返回视图的可选矩阵。这在绘制时应用于视图的可绘制对象。如果没有矩阵,此方法将返回一个单位矩阵。不要更改此矩阵,而是复制一份。如果您想将不同的矩阵应用于可绘制对象,请务必调用 setImageMatrix()。

即使在阅读完这篇文章后,我也无法/不明白这有什么不同。我使用以下方法解决了问题:

Matrix matrix = new Matrix();

可能是你正在处理同样的问题。试试这个。

于 2013-09-26T10:49:57.090 回答
0

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

mLayout.addView(mPreview);
mLayout.addView(mImageView);
mLayout.addView(mTextView);
于 2013-09-18T09:32:37.957 回答