2012-07-30 2 views
6

kindda seltsame Situation ...Die Click-sensiblen Bereich ändert sich nicht nach dem Animieren und interaktive Ansicht in android

ich ein Image haben, die einen Klick Interaktion mit ihm verbunden hat.

Im Code ändere ich die Position des ImageView über eine Animation.

Aber wenn die Animation beendet ist, befindet sich der anklickbare Bereich immer noch im ursprünglichen Bereich von ImageView (ich kann tatsächlich auf diesen Bereich tippen und den Klick sehen, der bearbeitet wird).

Hat etwas Forschung, scheint, dass die Animation nur die Ansicht Pixel bewegt, bleibt die Ansicht, wo es ursprünglich war.

Als ein bisschen eine Kritik an Android - das ist kein intuitives Design/Implementierung. Dies entspricht nicht "Was Sie sehen, ist, was Sie bekommen" Kriterien.

Und meine Frage ist

ist es eine Möglichkeit (außer zwischen zwei verschiedenen ImageViews Makeln), um den klickbaren Bereich bewegen, wo die Sicht Pixel zu machen?

Meine Layout und Animation xml Strukturen sind wie folgt.

Layout:

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

Animation:

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

hier im Layout an der Unterseite des Bildschirms ausgerichtet ist, und muss reibungslos umgeschaltet werden - ein- oder ausgeblendet. "bar_handle" ImageView übernimmt das Umschalten. "bar_handle" befindet sich in der animierten Struktur und bewegt sich damit.

Danke für jede Hilfe.

Antwort

2

Die Animation anzeigen nicht die tatsächlich Position der Ansicht ändern, wenn Sie also wirklich die Position ändern möchten, versuchen Sie es selbst

zum Beispiel zu verwenden, blättern: Verwendung scrollTo, scrollBy oder wenn Sie wollen Es scrollt automatisch, Sie können Scroller verwenden, um Ihnen dabei zu helfen.

+1

Dank @Changwei Yao. Dies ist wahrscheinlich der einzige Weg, um zu erreichen, ohne mehrere Ansichten beizubehalten, aber das Scrollen eines Gegenstands wird die Ansicht weiter so verschieben, dass das Animationsergebnis rückgängig gemacht werden muss. Scheint ein bisschen über Engineering. –

Verwandte Themen