java – 使用ValueAnimator将视图缩放到另一个视图的大小
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 使用ValueAnimator将视图缩放到另一个视图的大小,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2351字,纯文字阅读大概需要4分钟。
内容图文
![java – 使用ValueAnimator将视图缩放到另一个视图的大小](/upload/InfoBanner/zyjiaocheng/789/58d6239298c945d3a8f49e416b684b8e.jpg)
我正在尝试使用ValueAnimator调整视图大小以适应另一个视图的大小.我正在使用它而不是动画,因为我之后需要视图可点击.
private Animator getHeightScaleAnimator(View target) {
ConstraintLayout.LayoutParams thisParams = (ConstraintLayout.LayoutParams) getLayoutParams();
ConstraintLayout.LayoutParams targetParams = (ConstraintLayout.LayoutParams) target.getLayoutParams();
int currentHeight = thisParams.height;
int desiredHeight = targetParams.height;
ValueAnimator animator = ValueAnimator.ofInt(currentHeight, desiredHeight);
animator.addUpdateListener(animation -> {
int newInt = (int) animation.getAnimatedValue();
thisParams.width = newInt;
invalidate();
requestLayout();
});
return animator;
}
上面的代码显示了一种方法,我尝试将视图的高度增加到所需的视图高度,并且我对宽度有相同的方法,但宽度而不是高度.
期望的行为是视图增加它的大小,直到它与目标视图一样大,但由于某些奇怪的原因,视图移动而不是调整大小.
实现类是ImageView的扩展,但ImageView的方法没有改变.
我可以做些什么来以动画的方式将视图的大小增加到另一个视图的大小?
解决方法:
只需在代码中添加以下方法即可.
private Animator getViewScaleAnimator(View from, final View target) {
// height resize animation
AnimatorSet animatorSet = new AnimatorSet();
int desiredHeight = from.getHeight();
int currentHeight = target.getHeight();
ValueAnimator heightAnimator = ValueAnimator.ofInt(currentHeight, desiredHeight);
heightAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) target.getLayoutParams();
params.height = (int) animation.getAnimatedValue();
target.setLayoutParams(params);
}
});
animatorSet.play(heightAnimator);
// width resize animation
int desiredWidth = from.getWidth();
int currentWidth = target.getWidth();
ValueAnimator widthAnimator = ValueAnimator.ofInt(currentWidth, desiredWidth);
widthAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) target.getLayoutParams();
params.width = (int) animation.getAnimatedValue();
target.setLayoutParams(params);
}
});
animatorSet.play(widthAnimator);
return animatorSet;
}
并在任何事件上调用它.(例如,单击)
getViewScaleAnimator(fromView, targetView).setDuration(1000).start();
这是一个输出.
内容总结
以上是互联网集市为您收集整理的java – 使用ValueAnimator将视图缩放到另一个视图的大小全部内容,希望文章能够帮你解决java – 使用ValueAnimator将视图缩放到另一个视图的大小所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。