隐藏视图直到动画完成 android
hiding view till animation done android
嘿,我在右侧导航菜单中有一组 textView,当菜单打开时,我想要动画 textview
从右到左,为此我有两个动画,第一个是包含平移动画和 alpha 动画的动画集。
首先,在第一个动画之后,我遇到一个问题,即 textview
在动画开始之前出现在它的位置,我通过将 FillBefore=false
添加到动画集中的动画并将 textview
可见性设置为来修复它动画开始前不可见
一切正常。
然后我想在第一个动画集完成后添加另一个动画,当我添加这个动画时,问题又来了,我无法解决,我删除了第二个动画它再次工作
这是我的动画集
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fillEnabled="false"
android:fillBefore="false"
android:fillAfter="true"
android:fromXDelta="150%"
android:toXDelta="0" />
<alpha
android:duration="500"
android:fillEnabled="true"
android:fillBefore="false"
android:fillAfter="true"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
</set>
动画集的动画监听器是
main_set = (AnimationSet) AnimationUtils.loadAnimation(getActivity(), R.anim.main_menu);
main_set.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// main_dashboard_txt.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationEnd(Animation animation) {
main_dashboard_txt.setVisibility(View.INVISIBLE);
main_dashboard_txt.startAnimation(allanim);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
所有的动画都是
final TranslateAnimation allanim = new TranslateAnimation(0, pxFromDp(getActivity(), 21), 0, 0);
allanim.setDuration(100);
allanim.setFillAfter(true);
allanim.setFillBefore(false);
allanim.setFillEnabled(true);
allanim.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
// main_dashboard_txt.setVisibility(View.INVISIBLE);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
我已经多次更改 fill before 和 fill after 的值,但它们似乎不适用于第二个动画
另外:我第一次打开 activity 它工作正常,但是当我关闭抽屉然后重新打开它时,问题发生了
谢谢
我通过设置 Fillafter = false
和 FillBefore=true
以及 onAnimationEnd 解决了我的问题 我再次将视图设置为可见
问题是如果 Fill after equal true 即使我将其可见性设置为 invisible
将 View 隐藏在另一个 Thread 或 Runnable 中,使其在动画期间不可见
嘿,我在右侧导航菜单中有一组 textView,当菜单打开时,我想要动画 textview
从右到左,为此我有两个动画,第一个是包含平移动画和 alpha 动画的动画集。
首先,在第一个动画之后,我遇到一个问题,即 textview
在动画开始之前出现在它的位置,我通过将 FillBefore=false
添加到动画集中的动画并将 textview
可见性设置为来修复它动画开始前不可见
一切正常。
然后我想在第一个动画集完成后添加另一个动画,当我添加这个动画时,问题又来了,我无法解决,我删除了第二个动画它再次工作
这是我的动画集
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fillEnabled="false"
android:fillBefore="false"
android:fillAfter="true"
android:fromXDelta="150%"
android:toXDelta="0" />
<alpha
android:duration="500"
android:fillEnabled="true"
android:fillBefore="false"
android:fillAfter="true"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
</set>
动画集的动画监听器是
main_set = (AnimationSet) AnimationUtils.loadAnimation(getActivity(), R.anim.main_menu);
main_set.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// main_dashboard_txt.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationEnd(Animation animation) {
main_dashboard_txt.setVisibility(View.INVISIBLE);
main_dashboard_txt.startAnimation(allanim);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
所有的动画都是
final TranslateAnimation allanim = new TranslateAnimation(0, pxFromDp(getActivity(), 21), 0, 0);
allanim.setDuration(100);
allanim.setFillAfter(true);
allanim.setFillBefore(false);
allanim.setFillEnabled(true);
allanim.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
// main_dashboard_txt.setVisibility(View.INVISIBLE);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
我已经多次更改 fill before 和 fill after 的值,但它们似乎不适用于第二个动画
另外:我第一次打开 activity 它工作正常,但是当我关闭抽屉然后重新打开它时,问题发生了 谢谢
我通过设置 Fillafter = false
和 FillBefore=true
以及 onAnimationEnd 解决了我的问题 我再次将视图设置为可见
问题是如果 Fill after equal true 即使我将其可见性设置为 invisible
将 View 隐藏在另一个 Thread 或 Runnable 中,使其在动画期间不可见