Я настроил проект / android ZXing 1.7 как библиотеку, на которую ссылается мой основной проект приложения для Android.В качестве быстрого теста / подтверждения концепции, я использовал CaptureActivity так же, как описано здесь: http://damianflannery.wordpress.com/2011/06/13/integrate-zxing-barcod...
В основном все работает хорошо, я могу запустить CaptureActivity и получить отсканированныеданные в моей деятельности, которые запустили его.Тем не менее, я получаю довольно странное поведение, которое, я думаю, может быть связано с конфликтом идентификаторов ресурсов между моим проектом и проектом / 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"
на
android:drawableTop="@drawable/scan_btn_pressed"
Проблема исчезает и все работает отлично, но я хочу, чтобы она работала с селектором (и понимаю, почему проблема возникает).Как нарисованный из пользовательского интерфейса моей деятельности загадочным образом может отображаться в другой деятельности?Я новичок в разработке под Android, но я весь день гуглю и работаю над этой проблемой, и я не могу понять, почему это происходит, если не считать каких-то смутных ссылок на конфликты идентификаторов ресурсов в документах Android.
Примечание. Я использую CaptureActivity только в качестве быстрого прототипа / подтверждения концепции.Я буду реализовывать свою собственную деятельность, используя библиотеку ZXIng для финального приложения.