当前位置: 首页 > 知识库问答 >
问题:

等待动画完成,然后再隐藏视图

逑沛
2023-03-14

我执行一些由点击按钮触发的操作:

    private void onSearchPressed() {

    title.setVisibility(View.GONE);
    etActionSearch.setVisibility(View.VISIBLE);
    etActionSearch.requestFocus();
    btnActionFavs.setVisibility(View.GONE);
    etActionSearch.setAnimation(AnimationUtils.loadAnimation(
            getApplicationContext(), R.anim.et_anim_open));
    isSearch = true;

}

因此,基本上我只是隐藏一些< code >视图并显示一些其他视图,我的< code>EditText使用一组简单的< code >动画来“滑出”。

当操作被取消时,我会反转过程:

    private void onSearchCancelled() {
            etActionSearch.setAnimation(AnimationUtils.loadAnimation(
            getApplicationContext(), R.anim.et_anim_close));
    etActionSearch.setVisibility(View.GONE);
    btnActionFavs.setVisibility(View.VISIBLE);
    title.setVisibility(View.VISIBLE);
    isSearch = false;

}

我想做的是将动画(反方向)应用于我的EditText,因此它也会随着幻灯片动画消失。问题是所有代码都立即执行,因此EditText在其动画完成之前就消失了。我尝试了一些奇怪的事情,比如使用Async任务并将动画放在doIn背景()方法中,在onPostExec桌上()中设置Views的可见性,但这并没有改变任何事情…SystemClock.sleep()也不做任何事情,只是滞后印象。有什么解决方案吗?

共有2个答案

沈弘文
2023-03-14

就像Marcin Orlowski说的,你必须在动画中使用AnimationListener。动画结束后,它将启动onAnimationEnd()事件,您可以在其中执行操作。

这里有一个我可能看起来像什么的小例子:

Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.your_specific_animation);
animation.setAnimationListener(new AnimationListener() {

        @Override
        public void onAnimationStart(Animation animation) {
        }

        @Override
        public void onAnimationRepeat(Animation animation) {
        }

        @Override
        public void onAnimationEnd(Animation animation) {
            // Do your hiding stuff here
        }
    });

etActionSearch.startAnimation(animation);
秦德海
2023-03-14

动画异步运行,因此您需要对该动画使用AnimationListener,并将动画结束时应执行的代码放到onAnimationEnd()

查看文档:http://developer.android.com/reference/android/view/animation/Animation.AnimationListener.html

 类似资料:
  • 问题内容: 我正在尝试为UIImageView设置动画,然后在动画完成后隐藏图像视图。但是,在动画完成之前imageview被隐藏了。我看过类似的问题,他们建议在完成后在动画代码中实现动画侦听器或执行.hidden代码,但是我不确定如何在下面的shockView()函数中影响此效果。 仅在动画完成后,如何显示摇动动画并隐藏图像视图? 使用以下代码调用动画: 动画功能本身如下所示: 问题答案: 动画

  • 我试图定期: 从ajax调用获取数据 将数据与div的内容进行比较 如果是数据!=div的内容:隐藏div、更改数据、显示div 这是我的密码: 问题在于,在div被完全隐藏之前,div内容被新数据替换,即使回调函数replace()被提供给hide()函数。 如何让hid()函数等待它的完成(在这个例子中是400毫秒),然后再调用替换()函数? 我还尝试了delay()和setTimeout()

  • 问题内容: 在下面,该语句在调用完成 之前 被执行。我该如何更改? 问题答案: 您不能-至少不明智。虽然可以在jQuery ajax请求上设置一个属性,但过去在尝试将其与值一起使用时遇到了 严重的问题。 尝试重新考虑您要完成的工作: 然后: 或者,如果您的回调 仅 需要访问返回的数据,那么您可以更简单地执行 然后

  • 问题内容: 在iOS 11中,a中的隐藏动画的行为已更改,但是我无法在任何地方找到该文档。 iOS 10 iOS 11 两者中的代码是这样的: 如何在iOS 11上还原以前的行为? 问题答案: 只是有同样的问题。该修复程序将添加到动画块中。您要隐藏的物品的容器在哪里? 不确定为什么这在iOS 11中突然成为一个问题,但公平地说,这一直是推荐的方法。

  • 问题内容: 我有一个带有主标签页活动的Android应用程序,并且在单个标签页内有多个活动。在我的主要活动的onCreate()中,我有一个可运行的内容,它创建了一个列表,而在各个活动中,我都使用了此列表。 在各个活动的onCreate()中,我还具有在列表上运行的Runnable。但是,我需要这些Runnable仅在主选项卡活动的Runnable完成创建列表时才运行,否则我将得到一个空列表。我正

  • 问题内容: 为什么每当我将ajax放入for循环中时,它都无法很好地同步? 例如,我的代码是: 为什么它先调用Ajax查询?是否有可能让ajax查询在继续之前完成?因为它在完成填充之前就清除了数组。:/ 问题答案: 首先,您确实需要了解Ajax调用是如何异步的(这就是Ajax中的“ A”所代表的意思)。这意味着调用仅启动ajax调用(它将请求发送到服务器),其余代码愉快地继续运行。有时,在其余代码