Использование 3D просмотра изображений на Android - нет onClick после переворачивания - PullRequest
1 голос
/ 20 марта 2012

Я нашел несколько руководств о том, как заставить 3D-анимацию переворачивать виды в ViewFlipper.Все они используют камеру и вращение для достижения эффекта.Я использовал это: http://code.google.com/p/android-3d-flip-view-transition/ - обертка для достижения результатов - и все работает просто отлично.То есть, что касается визуального переворачивания.

Что не работает, хотя кнопка после завершения переворота.Такое ощущение, что все события onClick либо не получены, либо просто игнорируются после завершения переворота.Вот мой очень простой пример.

XML:

<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
             android:id="@+id/selector_flipper">
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:id="@+id/playing_field"
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
                  android:orientation="vertical">

            <Button android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:text="Flip"
                    android:onClick="flipView" />
    </LinearLayout>

    <ListView xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/tag_list"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:background="@android:color/white"/>
</ViewFlipper>

Упражнение:

public class SelectorActivity extends Activity {
    private ViewFlipper flipper;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.selector);
        flipper = (ViewFlipper)this.findViewById(R.id.selector_flipper);
    }

    /**
     * @see android.app.Activity#onKeyDown(int, android.view.KeyEvent)
     */
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && tagList.getVisibility() == View.VISIBLE)
            flipView(null);
        else
            return super.onKeyDown(keyCode, event);
    }

    public void flipView(View v) {
        AnimationFactory.flipTransition(flipper, FlipDirection.RIGHT_LEFT);
    }
}

Когда действие будет создано, я могу нажать кнопку «Перевернуть» - ивид меняется так, как я хочу.Затем я могу нажать кнопку «назад» на телефонной трубке - и она откидывается, как я хочу.Однако теперь я больше не могу нажимать кнопку - все щелчки просто игнорируются.

Кто-нибудь может мне помочь разобраться в этой проблеме?Очень признателен!

PS Я пробовал другие обёртки и даже сам кодировал ту же анимацию - но результат всегда был одинаковым!Щелчки не работают после переворота!

1 Ответ

3 голосов
/ 26 марта 2012

спасибо за использование моей трехмерной анимации при просмотре .

Проблема заключается в ошибке в Android, когда ViewGroup пересекает, кто получает фокус.Я попробовал несколько исправлений (некоторые сработали, а некоторые нет, но ни один не был очень элегантным).Но в конце концов, используя AnimationSet вместо Animation, получилось.Я пробовал исправить ваш код (который вы мне написали), а также более сложный код 1009 *.Отображаемый вид после перехода получает сенсорный фокус.

Итак, последнее обновление android-3d-flip-view-transition в проекте googlecode имеет исправление.Или вы можете перейти непосредственно к ревизии, нажав , щелкнув здесь .

Спасибо и отметьте этот вопрос как ответивший, если вы удовлетворены исправлением.

...