android - 为什么为带有动画的 View 设置可见性失败?

标签 android android-animation android-view

ImageView 带有旋转动画:

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.LinearInterpolator;
import android.view.animation.RotateAnimation;
import android.widget.ImageView;

public class Test extends Activity implements View.OnClickListener {
    private ImageView mIcon;
    private Animation mRotate;
    private boolean mShown = true;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mIcon = new ImageView(this);
        mIcon.setImageDrawable(
              getResources().getDrawable(android.R.drawable.ic_dialog_alert)
              );
        mIcon.setOnClickListener(this);

        setContentView(mIcon);


        mRotate = new RotateAnimation(
                  0f,360f,
                  getWindowManager().getDefaultDisplay().getWidth()/2,
                  getWindowManager().getDefaultDisplay().getHeight()/2
                  );
        mRotate.setDuration(2000);
        mRotate.setRepeatMode(Animation.RESTART);
        mRotate.setRepeatCount(Animation.INFINITE);
        mRotate.setInterpolator(new LinearInterpolator());

        mIcon.setAnimation(mRotate);
    }

    @Override
    public void onClick(View view) {
        if(mShown){
            mRotate.cancel();
            mIcon.setVisibility(View.GONE);
        }else {
            mIcon.setVisibility(View.VISIBLE);
            mRotate.reset();
            mRotate.start();
        }
        mShown = !mShown;
    }
}

部分 mProgress.setVisibility(GONE); 不起作用。 ImageView 根本不隐藏。如果我不为它设置 Animation,它就可以正常工作。

我的问题是:为什么动画 View 的可见性没有改变?

更新: 将 View 包装在 FrameLayout 中并设置 FrameLayout 的可见性是可行的。但是,这仍然是一个丑陋的解决方法。

最佳答案

我认为它可以正常工作。让我解释。这里重要的是如何您的ImageView 是动画的。例如,如果您使用 TranslateAnimation(我猜这是您的情况),那么您设置动画的 View 实际上不会改变位置,它只会移动到屏幕上的其他位置,例如,如果您设置按钮动画这样,想要点击它,你仍然必须点击它以前的位置。所以在这种情况下,我认为您的 ImageViewGONE,但您只能看到由动画制作的绘图。 使用 ObjectAnimator 应该可以解决这个问题,因为与其他动画相反,它实际上移动了 View 。

关于android - 为什么为带有动画的 View 设置可见性失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13398673/

相关文章:

android - 渲染 ViewGroup 的内容两次

android - 设置具有多个目标的 Urban Airship - 可能有相同的 bundle ID?

android - Google checkstyle 配置在 Android 项目上失败

java - 选择 Android 中文件的保存位置

android - 动画围绕 ImageView 的圆圈

android - 更改 CardView 阴影颜色

java - JSON 到 hashmap ( jackson )

android - 如何为 RecycleView 中的项目创建点击动画

android - 如何 move TextView ?

android - 与 getGlobalVisibleRect 混淆,不同的值