我在GridView上使用以下动画,

当活动通过slideToBottom(myGridView)加载时,我将其隐藏了;

public void slideToBottom(View view){
    TranslateAnimation animate = new TranslateAnimation(0,0,0,view.getHeight());
    animate.setDuration(500);
    animate.setFillAfter(true);
    view.startAnimation(animate);
    view.setVisibility(View.GONE);
}


我遇到的问题是,当单击一个botton显示视图时,它只是使它可见而没有动画;当我再次单击它时,它将加载动画,将其滑动到顶部的代码在下面,

public void slideToTop(View view){
    TranslateAnimation animate = new TranslateAnimation(0,0,view.getHeight(),0);
    animate.setDuration(1000);
    animate.setFillAfter(true);
    view.startAnimation(animate);
    view.setVisibility(View.VISIBLE);

}


<RelativeLayout

    android:id="@+id/container"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:clipChildren="false"
    android:clipToPadding="false"
    >
    ....some other stuff here

    <GridView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/myGridView"
        android:horizontalSpacing="2dip"
        android:numColumns="3"
        android:scrollbars="vertical"
        android:verticalSpacing="0dip"
        android:paddingTop="8dp"
         />


</RelativeLayout>


我究竟做错了什么?

最佳答案

不确定是否与问题有关,但是在您的代码中:

view.startAnimation(animate);
view.setVisibility(View.GONE);


startAnimation()仅启动动画。将可见性设置为GONE之前,您应该等待它完成。

请参见Hide view with animation and set visibility to gone without flash the screen上的示例

同样,要在视图中滑动,应该在开始动画之前使其可见。

关于android - TranslateAnimation在屏幕外移动 View -Android,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32552888/

10-12 03:04