2012-07-30 31 views
6

Kindda奇怪的局面:在互動之後不會改變......的點擊敏感區域動畫和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」在動畫結構中,所以它隨之移動。

感謝您的任何幫助。

回答

2

在觀看動畫不改變視圖的實際位置,所以如果你想真正改變位置,儘量使用自己滾動它

例如: 使用scrollTo,scrollBy或者如果你想它會自動滾動,您可以使用滾輪來幫助您做到這一點。

+1

謝謝@Changwei Yao。這可能是在不維護多個視圖的情況下完成的唯一方法,但是滾動項目會進一步移動視圖,以便動畫結果需要撤消。似乎有點過度工程。 – 2012-10-22 22:58:28