翻译动画后,View.GONE无效

时间:2014-03-24 16:48:11

标签: android animation

所以我有一个应用程序,当用户点击button时,animation会为layout添加按钮(例如sliding menu)然后如果他点击另一个按钮,它必须使隐形或第一个布局,然后新的一个。

但是,当我尝试使用隐藏按钮的AnimationStart我的layout时,它并没有这样做。

我已经从这里尝试了一些解决方案:

Why doesn't setvisibility work after a view is animated

Setvisibilityview Gone doesn't disappear a view

但没有任何效果!

任何帮助??

Java code(两个按钮都相同)

 btn_home1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                   layout1.setVisibility(View.VISIBLE);
                   btn_home.setVisibility(View.VISIBLE);
                   btn_book.setVisibility(View.VISIBLE);
                   btn_find_us.setVisibility(View.VISIBLE);
                   btn_menu.setVisibility(View.VISIBLE);

                TranslateAnimation slide = new TranslateAnimation(-100, 0, 0,0 );   
                slide.setDuration(1000);   
                slide.setFillAfter(true);   
                slide.setAnimationListener(new Animation.AnimationListener() {
                    @Override
                    public void onAnimationStart(Animation animation) {
     new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
                   btn_home2.setVisibility(View.GONE);
                   btn_book2.setVisibility(View.GONE);
                   btn_find_us2.setVisibility(View.GONE);
                   btn_menu2.setVisibility(View.GONE);
                       layout2.setVisibility(View.GONE);
        }
    }, 0);
                          btn_home.setClickable(false);  
                          btn_book.setClickable(false);  
                          btn_find_us.setClickable(false);  
                          btn_menu.setClickable(false);                           
                    }

                    @Override
                    public void onAnimationEnd(Animation animation) {
                          btn_home.setClickable(true);  
                          btn_book.setClickable(true);  
                          btn_find_us.setClickable(true);  
                          btn_menu.setClickable(true);      
                    }

                    @Override
                    public void onAnimationRepeat(Animation animation) {

                    }
                });
                btn_menu.startAnimation(slide);
                btn_book.startAnimation(slide);
                btn_find_us.startAnimation(slide);  
                btn_home.startAnimation(slide); 
                layout1.startAnimation(slide);
                }
        });

XML代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="#BE2625" >
             <Button
                android:id="@+id/btn_home1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="150dp"
                android:text="342"
                 />

                <Button
                android:id="@+id/btn_home11"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="250dp"
                android:text="34243"
                 />

    <LinearLayout 
        android:id="@+id/lala"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#80000000"
        android:visibility="gone"
        android:orientation="vertical">

         <Button
                android:id="@+id/btn_home"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.25"
                 />
            <Button
                android:id="@+id/btn_book"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.25"
                  />
            <Button
                android:id="@+id/btn_find_us"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.25"
                  />
            <Button
                android:id="@+id/btn_menu"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.25"
                  />

    </LinearLayout>

    <LinearLayout 
        android:id="@+id/lala1"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#80000000"
        android:visibility="gone"
        android:orientation="vertical">

         <Button
                android:id="@+id/btn_home2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.25"
                 />
            <Button
                android:id="@+id/btn_book2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.25"
                  />
            <Button
                android:id="@+id/btn_find_us2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.25"
                  />
            <Button
                android:id="@+id/btn_menu2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.25"
                  />

    </LinearLayout>
</RelativeLayout>

2 个答案:

答案 0 :(得分:0)

我再次对此链接进行了研究:Why doesn't setVisibility work after a view is animated?

找到@Chris Knight的答案:

Another way to work around this is to wrap your animated view in another view and set the visibility of that wrapper view.

所以我用了两个FrameLayout,然后一次设置一个setVisibility(View.GONE),因为用户一次只能按一个按钮,所以它会打开一个Slide Menu一次。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="#BE2625" >
             <Button
                android:id="@+id/btn_home1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="150dp"
                android:text="342"
                 />

                <Button
                android:id="@+id/btn_home11"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="250dp"
                android:text="34243"
                 />
    <FrameLayout
        android:id="@+id/lsd1"
        android:layout_height="match_parent"
        android:layout_width="240dp">  

    <LinearLayout 
        android:id="@+id/lala"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#80000000"
        android:visibility="gone"
        android:orientation="vertical">

         <Button
                android:id="@+id/btn_home"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.25"
                 />

            <Button
                android:id="@+id/btn_book"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.25"
                  />

            <Button
                android:id="@+id/btn_find_us"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.25"
                  />

            <Button
                android:id="@+id/btn_menu"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.25"
                  />


    </LinearLayout>
</FrameLayout>     

       <FrameLayout
        android:id="@+id/lsd2"
        android:layout_height="match_parent"
        android:layout_width="240dp">
    <LinearLayout 
        android:id="@+id/lala1"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#80000000"
        android:visibility="gone"
        android:orientation="vertical">

         <Button
                android:id="@+id/btn_home2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.25"
                 />

            <Button
                android:id="@+id/btn_book2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.25"
                  />

            <Button
                android:id="@+id/btn_find_us2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.25"
                  />

            <Button
                android:id="@+id/btn_menu2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.25"
                  />


    </LinearLayout>
</FrameLayout>     

</RelativeLayout>

答案 1 :(得分:0)

调用View的 clearAnimation 修复了问题。在我的情况下,我想在使用fillAfter设置为true进行翻译后将View设置回原始位置。