2012-07-30 4 views
6

Kindda dziwnej sytuacji ...Obszar kliknięcie wrażliwych nie zmienia się po animacji i interaktywnych widzenia w Android

Mam ImageView który ma interakcji click z nim związane.

W kodzie zmienię pozycję ImageView za pośrednictwem animacji.

Po zakończeniu animacji obszar klikalny znajduje się nadal w oryginalnym miejscu obrazu ImageView (mogę dotknąć tego obszaru i zobaczyć obsługiwane kliknięcie).

Po przeprowadzeniu niektórych badań wydaje się, że animacja przesuwa tylko piksele widoku, a widok pozostaje taki, jaki był pierwotnie.

Krytyka dla Androida - to nie jest intuicyjny projekt/implementacja. To nie jest zgodne z "To, co widzisz, jest tym, co dostajesz". Kryteria są następujące:.

I moje pytanie jest

jest jakiś sposób (z wyjątkiem przełączanie pomiędzy dwoma różnymi ImageViews), aby przenieść się do klikalny obszar, gdzie widok piksele są?

Moje struktury struktury xml i animacji są następujące.

układ:

<?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> 

Animacja:

<?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> 

W tutaj układ jest wyrównany do dolnej części ekranu i musi być płynnie przełączane - ukryte lub widoczne. "bar_handle" ImageView obsługuje przełączanie. "bar_handle" znajduje się wewnątrz animowanej struktury, więc porusza się wraz z nią.

Dzięki za pomoc.

Odpowiedz

2

Widok Animacja nie zmieniają faktycznie pozycję widoku, więc jeśli chcesz naprawdę zmienić pozycję, spróbuj użyć przewinąć go samodzielnie

na przykład: użytku scrollTo, scrollBy lub jeśli chcesz przewija się automatycznie, możesz użyć rolki, aby to zrobić.

+1

Dzięki @Changwei Yao. Jest to prawdopodobnie jedyny sposób, aby osiągnąć bez wielu widoków, ale przewijanie elementu spowoduje dalsze przesunięcie widoku w taki sposób, że wynik animacji musi zostać cofnięty. Wygląda na to, że trochę nadnaturalnie. –

Powiązane problemy