0

在我的 android 应用程序中,我想显示动画以使视图从其位置弹出

更详细地说,我想实现这样的目标 -

  • 单击视图(这可以是任何类型的视图,比如 ImageView),它将移向屏幕顶部
  • 一定距离后,它会再次移动到屏幕中心,同时稍微放大

我对 Android 中的 Animation 类、Animation Listener 和 AnimationSet 知之甚少。但仍在寻求实现此功能的指南

您能否建议实现这一目标的方法?

编辑部分 -

主要问题是在移动到顶部后获得正确的视图坐标,下一个问题是将该视图从最后一个位置带到屏幕中心

4

2 回答 2

0

following code will have an animation - which will move down and come to middle with zoom effect


    @Override
    public void onClick(final View view) {
        TranslateAnimation translateAnimation1 = new TranslateAnimation(
                TranslateAnimation.RELATIVE_TO_PARENT,
                0.0f,
                TranslateAnimation.RELATIVE_TO_PARENT,
                0.8f,
                TranslateAnimation.RELATIVE_TO_PARENT,
                0.0f,
                TranslateAnimation.RELATIVE_TO_PARENT,
                0.8f);
        translateAnimation1.setDuration(1000);
        translateAnimation1.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation arg0) {}
            @Override
            public void onAnimationRepeat(Animation arg0) {}
            @Override
            public void onAnimationEnd(Animation arg0) {
                TranslateAnimation translateAnimation2 = new TranslateAnimation(
                        TranslateAnimation.RELATIVE_TO_PARENT,
                        0.8f,
                        TranslateAnimation.RELATIVE_TO_PARENT,
                        0.5f,
                        TranslateAnimation.RELATIVE_TO_PARENT,
                        0.8f,
                        TranslateAnimation.RELATIVE_TO_PARENT,
                        0.5f);
                translateAnimation2.setDuration(1000);
                AnimationSet animationSet = new AnimationSet(false);
                ScaleAnimation scaleAnimation = new ScaleAnimation(1.0f, 2.0f,1.0f,2.0f,ScaleAnimation.RELATIVE_TO_SELF ,0.5f,ScaleAnimation.RELATIVE_TO_SELF,0.5f);
                scaleAnimation.setDuration(1000);
                animationSet.addAnimation(scaleAnimation);
                animationSet.addAnimation(translateAnimation2);
                view.startAnimation(animationSet);

            }
        });
        view.startAnimation(translateAnimation1);
    }

于 2012-04-20T11:02:00.077 回答
0

尝试这个,

ScaleAnimation animScale = new ScaleAnimation(0, 2, 0, 5);
animScale.setDuration(2000);
AnimationSet animation = new AnimationSet(false);
animation.addAnimation(animScale);
view.startAnimation(animation);

更改 ScaleAnimation 构造函数中的值以获得所需的输出

于 2012-04-20T10:15:41.373 回答