【问题标题】:Animation not work properly (performs Only once) in Android动画在 Android 中无法正常工作(仅执行一次)
【发布时间】:2021-05-05 13:21:30
【问题描述】:

我正在显示动画问题。当我单击按钮以显示线性布局时,动画效果很好,当我单击按钮以关闭线性布局时,动画按我的意愿执行,但是当我第二次单击以打开线性布局时,动画对于显示布局或关闭布局都不起作用。我还想通知您,按钮单击可以正常执行。布局可见性 GONE & VISIBLE 可以正常工作,但动画第二次无法正常工作。

public class AdminViewComplaintActivity extends AppCompatActivity implements View.OnClickListener {

ImageView btn_search, btn_close_search ;
LinearLayout ll_search;
Animation animationIn, animationOut;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_view_complaint);

     btn_search = findViewById(R.id.btn_search);
     btn_close_search = findViewById(R.id.btn_close_search);
     ll_search = findViewById(R.id.ll_search);


    animationIn= AnimationUtils.loadAnimation(getApplicationContext(),R.anim.view_in);
    animationOut= AnimationUtils.loadAnimation(getApplicationContext(),R.anim.view_out);

}
@Override
public void onClick(View view) {

    if (view==btn_search){

      

        if(ll_search.getVisibility()==View.GONE){

 // show linear layout with animation

            ll_search.setAnimation(animationIn);
            ll_search.setVisibility(View.VISIBLE);

        }
    }

    else if(view==btn_close_search){

// close linear layout with animation

        ll_search.setAnimation(animationOut);
        ll_search.setVisibility(View.GONE);
      
    }
 }
}

动画view_in.xml的xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"

>
<translate
    android:duration="1000"
    android:fromXDelta="100%"
    android:toXDelta="0%" />

</set>

动画view_out.xml的xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
>

<translate
    android:duration="1000"
    android:fromXDelta="0%"
    android:toXDelta="100%" />
</set>

【问题讨论】:

    标签: android android-layout android-animation


    【解决方案1】:

    将此代码添加到查看

       anim.setFillEnabled(true);
       anim.setFillAfter(true);
    

    以编程方式使用:

     Animation animation = AnimationUtils.loadAnimation(context, android.R.anim.nameYourAnim);
                viewToAnimate.startAnimation(animation);
    

    例如动画:

    <set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="-50%p" android:toXDelta="0"
            android:duration="@android:integer/config_mediumAnimTime"/>
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
            android:duration="@android:integer/config_mediumAnimTime" />
    

    【讨论】:

    • 仅使用 viewToAnimate.startAnimation(animation);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多