FrameLayout onClick для перекрывающихся изображений на Android - PullRequest
0 голосов
/ 22 февраля 2011

Сначала я подумал, что проблему будет очень легко решить, но это оказалось проблемой.

Сценарий Один FrameLayout и два ImageView, один поверх другого.Первые изображения имеют анимацию Translate и событие onClick.Давайте переведем это в нечто практичное: у Framelayout есть одно изображение Кролика и изображение Буша.Кролик имеет анимацию перевода, поэтому он выходит из куста.Как только кролик становится видимым, пользователь может нажать на него.К сожалению, это не работает так, как задумано.Даже если кролик не виден (находится за кустом), если пользователь нажимает на куст, событие щелчка кролика срабатывает.Я попытался добавить событие onClick (которое ничего не делает) для изображения куста, но теперь срабатывает только одно, а кроликов нет.

Код

Анимация

<?xml version="1.0" encoding="utf-8"?>
<translate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0%"
    android:toXDelta="100%"
    android:fromYDelta="0%"
    android:toYDelta="0%"
    android:duration="25000"
    android:zAdjustment="top" />

Макет

 <?xml version="1.0" encoding="utf-8"?>
<FrameLayout  xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/layBackground"
              android:orientation="horizontal"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:layout_weight="1"
              android:background="@drawable/someimage">

                       <ImageView android:id="@+id/imgAfterBush"
                                 android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
                                 android:layout_gravity="bottom|left"
                                 android:layout_marginLeft="50dip"
                                 android:onClick="imgAfterBushOnClick"/>

                      <ImageView android:id="@+id/imgBush"
                                 android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
                                 android:src="@drawable/bush"
                                 android:layout_gravity="bottom|left"
                                />
</FrameLayout>

Я хочу, чтобы событие onClick изображения Rabbit запускалось только тогда, когда оно видно.Любые решения?Спасибо.

Ответы [ 2 ]

2 голосов
/ 22 февраля 2011

Анимации на Android <3.0 влияют только на рендеринг вида: анимируемый вид остается в исходном положении.Вам нужно переместить представление (например, изменив его параметры макета) самостоятельно, когда анимация закончится. </p>

1 голос
/ 22 февраля 2011

Это не так уж сложно, но сначала вам нужно выучить:

  • создание пользовательских представлений

  • рисунок на холсте

  • анимация изображения на холсте

  • обнаружение на ощупь событий

Вот простой для начала, который я сделал для аналогичного вопроса: Как я могу использовать рамки анимации внутри холста?

...