糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > android view.gone 动画 android – 如何动画View.setVisibility(GONE)

android view.gone 动画 android – 如何动画View.setVisibility(GONE)

时间:2020-10-07 11:35:24

相关推荐

android view.gone 动画 android – 如何动画View.setVisibility(GONE)

似乎没有一种简单的方法通过API来做到这一点,因为动画只是改变视图的渲染矩阵,而不是实际的大小。但是我们可以设置一个负边距来愚弄LinearLayout,认为视图越来越小。

所以我建议创建你自己的Animation类,基于ScaleAnimation,并重写“applyTransformation”方法来设置新的边距和更新布局。喜欢这个…

public class Q2634073 extends Activity implements OnClickListener {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.q2634073);

findViewById(R.id.item1).setOnClickListener(this);

}

@Override

public void onClick(View view) {

view.startAnimation(new MyScaler(1.0f, 1.0f, 1.0f, 0.0f, 500, view, true));

}

public class MyScaler extends ScaleAnimation {

private View mView;

private LayoutParams mLayoutParams;

private int mMarginBottomFromY, mMarginBottomToY;

private boolean mVanishAfter = false;

public MyScaler(float fromX, float toX, float fromY, float toY, int duration, View view,

boolean vanishAfter) {

super(fromX, toX, fromY, toY);

setDuration(duration);

mView = view;

mVanishAfter = vanishAfter;

mLayoutParams = (LayoutParams) view.getLayoutParams();

int height = mView.getHeight();

mMarginBottomFromY = (int) (height * fromY) + mLayoutParams.bottomMargin - height;

mMarginBottomToY = (int) (0 - ((height * toY) + mLayoutParams.bottomMargin)) - height;

}

@Override

protected void applyTransformation(float interpolatedTime, Transformation t) {

super.applyTransformation(interpolatedTime, t);

if (interpolatedTime < 1.0f) {

int newMarginBottom = mMarginBottomFromY

+ (int) ((mMarginBottomToY - mMarginBottomFromY) * interpolatedTime);

mLayoutParams.setMargins(mLayoutParams.leftMargin, mLayoutParams.topMargin,

mLayoutParams.rightMargin, newMarginBottom);

mView.getParent().requestLayout();

} else if (mVanishAfter) {

mView.setVisibility(View.GONE);

}

}

}

}

通常的警告适用:因为我们覆盖一个受保护的方法(applyTransformation),这不能保证在未来的Android版本中工作。

如果觉得《android view.gone 动画 android – 如何动画View.setVisibility(GONE)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。