0

私のAndroidアプリケーションでは、ビューがその位置から飛び出すためのアニメーションを表示したいと思います

もっと詳しく言えば、私はこのようなことを達成したいです-

  • ビューをクリックすると(これはImageViewなどの任意のタイプのビューにすることができます)、画面の上部に移動します
  • 一定の距離を置くと、少しズームインしながら再び画面の中央に移動します

androidのAnimationクラス、Animation Listener、AnimationSetについて少し知っています。しかし、それでもこの機能を実現するためのガイドラインを求めています

これを達成する方法を提案していただけますか?

編集された部分-

主な問題は、ビューを上に移動した後、ビューの正しい座標を取得する際に発生します。次の問題は、そのビューを最後の位置から画面の中央に移動することです。

4

2 に答える 2

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 に答える
0

次のコードにはアニメーションがあります-ズーム効果で下に移動して中央に移動します


    @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 に答える