我正在使用圆形揭幕动画。它工作正常。
这是我的代码:
int cx = (int) (first_layout.getMeasuredWidth() / 2f);
int cy = (int) (first_layout.getMeasuredHeight() / 2f);
float radius = (float) Math.sqrt(cx * cx + cy * cy);
Animator anim = ViewAnimationUtils.createCircularReveal(first_layout, cx, cy, radius, 0);
// make the view invisible when the animation is done
anim.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
first_layout.setVisibility(View.GONE);
linear_animation.setVisibility(View.VISIBLE);
final ObjectAnimator logo_left = ObjectAnimator.ofFloat(logo_splash, "translationX", Utils.convertDpToPixel((logo_width / 2) * -1, MainSplashActivity.this));
final ObjectAnimator anim_right = ObjectAnimator.ofFloat(logo_text, "translationX", Utils.convertDpToPixel(text_width / 2, MainSplashActivity.this));
final AnimatorSet animSet_left = new AnimatorSet();
logo_left.setDuration(500);
anim_right.setDuration(500);
animSet_left.setInterpolator(new LinearInterpolator());
animSet_left.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
logo_text.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationEnd(Animator animator) {
linear_animation.clearAnimation();
Intent intent = new Intent(MainSplashActivity.this, SplashActivity.class);
Pair<View, String> pair1 = Pair.create((View) logo_splash, "MyImage");
Pair<View, String> pair2 = Pair.create((View) logo_text, "logoText");
Bundle options = ActivityOptionsCompat.makeSceneTransitionAnimation(MainSplashActivity.this, pair1, pair2).toBundle();
startActivity(intent, options);
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
animSet_left.playTogether(logo_left, anim_right);
animSet_left.start();
}
});
anim.setDuration(1500);
anim.start();
要求:
我想在特定的imageview中完成圆形显示动画,该视图位于我的父布局的中心。如你所知,圆形显示完全居中。但我不想要那个。
我希望圆形揭示动画应该在达到imageview的边界时完成(它位于我的父布局的中心)。我希望你们所有人都能理解我的问题。
高级帮助将不胜感激。谢谢!
答案 0 :(得分:0)
如果我理解正确,动画应该在到达居中的ImageView的角落时停止。
也为ImageView进行半径计算(前3行)并将结果半径作为createCircularReveal
中的最后一个参数传递,
这是结束半径。
但是,这仅适用于ImageView完全居中的情况。