我已经将ZXing 1.7的/android项目设置为引用的库
由我的主要 Android 应用程序项目。作为快速测试/概念验证,我
已使用 CaptureActivity,其方式与此处描述的方式相同:http://damianflannery.wordpress.com/2011/06/13/integrate-zxing-barcod...
大多数情况下,一切正常,我可以启动 CaptureActivity 并接收
我启动它的活动中的扫描数据。不过,我得到一些
非常奇怪的行为,我认为这可能与资源 ID 有关
我的项目和 /android ZXing 项目之间存在冲突。这
需要一些解释,所以请耐心等待......
我使用以下代码启动 CaptureActivity:
Button scanBtn = (Button)findViewById(R.id.mainmenu_btn_scan);
scanBtn.setOnClickListener(
new View.OnClickListener()
{
public void onClick(View v)
{
Intent i = new Intent("com.google.zxing.client.android.SCAN");
i.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(i, SCAN_CODE);
}
});
mainmenu_btn_scan
在menu.xml中定义:
<LinearLayout android:id="@+id/mainmenu_view" style="@style/MainMenu" xmlns:android="http://schemas.android.com/apk/res/android">
...
<Button android:id="@+id/mainmenu_btn_scan"
android:drawableTop="@drawable/btn_scan_drawable"
style="@style/MainMenuButton"
android:text="Scan"/>
...
</LinearLayout>
btn_scan_drawable.xml 位于 /drawable 中,是一个可绘制选择器:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/scan_btn_pressed" android:state_focused="true" android:state_pressed="true" />
...
</selector>
奇怪的问题是:当我将手机放在lanscape方向并启动 CaptureActivity,我看到 scan_btn_pressed
图像在显示屏上拉伸,并且它的另一个副本也
拉伸穿过“将条形码放在取景器矩形内
文本...”。只有当我按住按钮启动活动时才会发生这种情况
电话在景观方向。
我发现如果我更换
android:drawableTop="@drawable/btn_scan_drawable"
with
android:drawableTop="@drawable/scan_btn_pressed"
问题消失了,一切正常,但我想让它与选择器一起工作(并理解问题发生的原因)。如何从我的
Activity 的 UI 神秘地出现在另一个 Activity 中?我是 Android 开发新手,但我整天都在谷歌搜索并处理这个问题,除了 android 文档中对资源 ID 冲突的一些模糊引用之外,我似乎无法找出为什么会发生这种情况。
注意:我仅使用 CaptureActivity 作为快速原型/概念验证。我将利用 ZXIng 库为最终应用程序实施我自己的活动。