动画在 Android 中无法正常工作(仅执行一次)
Posted
技术标签:
【中文标题】动画在 Android 中无法正常工作(仅执行一次)【英文标题】:Animation not work properly (performs Only once) in 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>
【问题讨论】:
【参考方案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);以上是关于动画在 Android 中无法正常工作(仅执行一次)的主要内容,如果未能解决你的问题,请参考以下文章