我正在编写一款需要在相机预览上显示半透明PNG图层的应用。一切都很好,直到我想发布它并确保它也适用于Android 2.x.似乎在旧版本的Android上,相机预览会导致drawable(在我的情况下,是ImageView的子类)无法显示。当我摆脱预览时,它工作得很好 - drawable是可见的。它在仿真器和真实设备上都是这样的。
在Android 2.3上看起来如何:
和4.2.2:
我认为这里要粘贴太多代码,所以我将有问题的部分分离到一个小项目中:http://krzeminski.it/wp-content/uploads/2013/09/DrawableTest.zip。最有趣且可能有罪的课程是 CameraPreview 。
另外,我不确定为什么预览本身不起作用。我在Android 2.x仿真器上看过,仿真相机的测试图像就是这种纯白色,所以我认为没关系。但是,我的朋友用Android 2.3测试了手机上的应用程序,预览似乎是纯黑色。我想这是一个单独问题的主题,但也许你会在代码中注意到一些东西。
我现在花了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);