android中的动画可以改变一个view的高和宽吗

2025-05-12 01:04:32
推荐回答(3个)
回答(1):

android中有三种动画类型,分别是TweenAnimation, FrameAnimation和PropertyAnimation。


要在视觉上改变view的高和宽,只是视觉

一:可以使用TweenAnimation类型的缩放动画ScaleAnimation,但是通过实践可以发现虽然视觉上view控件是增大或者缩小了,但是触摸范围还是原来的大小,真正意义上的宽高也就是getMeasureWidth和getMeasureHeight的值并不会改变,所以不符合要求


二:使用PropertyAnimation,属性动画就是通过改变控件的属性来达到动画的效果,所以根据需求属性动画是合适的

示例代码如下

View view;
ObjectAnimator animator = ObjectAnimator.ofFloat(view, "scaleY", 1f,2f);
animator.setDuration(1000);
animator.start();

上面代码的效果就是让view的高度拉伸一倍

只要是控件的setXXX方法可以改变view就可以使用,比如setTranslationX,setScrollY等等方法

回答(2):

  类似效果,你的动画改变view布局参数,应该对imageView应用新的布局参数。

  创建应用新布局参数(lp)的自定义动画,对不同imageView每个框架都设置不同高宽。然后图片就可以增大尺寸,并且移动其他图片,这样的例子在网上可以找到。

  @Override
  protected void applyTransformation(float interpolatedTime, Transformation t) {
  android.view.ViewGroup.LayoutParams lp = mContent.getLayoutParams();
  lp.height = (int) (mStartHeight + mDeltaHeight * interpolatedTime);
  mContent.setLayoutParams(lp);
  }

回答(3):

 类似效果,自己的动画改变view布局参数,应该对imageView应用新的布局参数。

  创建应用新布局参数(lp)的自定义动画,对不同imageView每个框架都设置不同高宽。然后图片就可以增大尺寸,并且移动其他图片,这样的例子在网上可以找到。

  @Override
  protected void applyTransformation(float interpolatedTime, Transformation t) {
  android.view.ViewGroup.LayoutParams lp = mContent.getLayoutParams();
  lp.height = (int) (mStartHeight + mDeltaHeight * interpolatedTime);
  mContent.setLayoutParams(lp);
  }