使用动画将图像展开到视图中

时间:2015-01-04 00:38:37

标签: android android-animation

在我的Android应用中,我有一个白色背景的TextView。点击后,通过调用.png上的setBackgroundResource(R.drawable.icon),其背景将更改为某个图标的TextView图片。这按预期工作,但变化相当突然。我想让图标逐渐显现;点击TextView后,图标的微小版本应显示在TextView的中心,然后立即展开并填写整个TextView。我相信最好的方法是使用动画,Android中哪些可用的动画类型最适合这项任务?

如果不清楚我的意思,我画了一幅草图来说明。第二个序列显示了代码现在如何工作,第一个序列显示了我希望它是如何工作的。

enter image description here

2 个答案:

答案 0 :(得分:2)

如果解决了你的问题,请尝试这种方式。

  • 在原始ImageView(A)上方创建一个ImageView(X) - 与(A)相同的大小和相同的位置
  • 使用ObjectAnimator动画(X),听取onAnimationEnd来电并设置(A)的背景。然后删除(X)。

希望这会有所帮助。

答案 1 :(得分:2)

所以,我设法使用ImageView获得了ScaleAnimation所需的效果。这就是你要做的事情:

首先,我们的XML ImageView

<ImageView
        android:id="@+id/scale_anim"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:background="@android:color/white" />

它有固定的尺寸和白色背景。

动画将以onCreate()方法中的一次点击开始:

ImageView starImageView = (ImageView) findViewById(R.id.scale_anim);

    starImageView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            ScaleAnimation starScaleAnimation =
                    new ScaleAnimation(0.3f, 1f, 0.3f, 1f,
                            ScaleAnimation.RELATIVE_TO_SELF, 0.5f,
                            ScaleAnimation.RELATIVE_TO_SELF, 0.5f);

            starScaleAnimation.setDuration(500);
            ((ImageView) v).setImageResource(R.drawable.star);
            ScaleAnimation scaleAnim = starScaleAnimation;
            v.startAnimation(scaleAnim);
        }
    });

我们正在ImageView上应用缩放动画,其中星星占原始大小的30%,并从其中心点缩放到其大小的100%。这个动画的持续时间是半秒钟。所有这些参数都可以更改。

每次点击ImageView时,都会应用您的drawable并开始动画。