Чувствительная область щелчка -не меняется после анимации и интерактивного просмотра в Android

Какая-то странная ситуация...

У меня есть ImageView, с которым связано взаимодействие с кликом.

В коде я меняю положение ImageView с помощью анимации.

Но когда анимация завершается, кликабельная область все еще находится в исходном месте ImageView (. Я действительно могу коснуться этой области и увидеть, как обрабатывается щелчок ).

Провел некоторое исследование, кажется, что анимация только перемещает пиксели вида, вид остается там, где он был изначально.

В качестве небольшой критики Android -это не интуитивно понятный дизайн/реализация. Это не соответствует критерию "Что видишь, то и получаешь" .

И мой вопрос

есть ли способ (, кроме переключения между двумя разными ImageViews ), чтобы заставить кликабельную область перемещаться туда, где находятся пиксели просмотра?

Мои XML-структуры макета и анимации выглядят следующим образом.

макет:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/keywords_layer"
    android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_margin="0dp"
android:padding="0dp"
android:orientation="vertical"
android:visibility="gone"
>
<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="35dp" 
    >
    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="35dp"
        android:layout_centerInParent="true"
        android:adjustViewBounds="false"
        android:scaleType="fitXY"
        android:src="@drawable/keyword_bar_handle"
    />
    <ImageView
        android:id="@+id/bar_handle"
        android:layout_width="45dp"
        android:layout_height="fill_parent"
        android:layout_alignParentRight="true"
        android:adjustViewBounds="false"
        android:scaleType="fitXY"
    />
</RelativeLayout>
<HorizontalScrollView
    android:layout_width="fill_parent"
    android:layout_height="@dimen/browser_address_bar_1_5_height"
    android:layout_margin="0dp"
    android:padding="0dp"
    android:background="@drawable/keyword_bar_bg"
    android:scrollbars="none"
    >
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="@dimen/browser_address_bar_1_5_height"
        android:layout_margin="0dp"
        android:padding="0dp" 
    />
</HorizontalScrollView>

Анимация:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/accelerate_interpolator"
    android:fillEnabled="true"
    android:fillAfter="true">
<translate
    android:fromYDelta="60"
    android:toYDelta="0"
    android:duration="300"
/>
    </set>

Здесь макет выравнивается по нижнему краю экрана, и его нужно плавно переключать -, скрывая или отображая. "bar _handle" ImageView обрабатывает переключение. "bar _handle" находится внутри анимированной структуры,поэтому он движется вместе с ним.

Спасибо за любую помощь.

6
задан Nar Gar 30 July 2012 в 02:08
поделиться