2012-07-30 39 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