我在我的 android 应用程序中使用底页。如何添加循环显示动画以加载底页?
createCircularReveal
是一个android sdk功能,支持所有api级别高于21的设备。
问问题
1058 次
1 回答
0
将您的常规上滑动画转换为上述 21 个 API 上的上滑动画的简单逻辑:
1)制作显示动画代码以供查看。
2)在.show()方法之前获取对话框的父视图并将其背景更改为透明
((View) bsdCreateNewBinding.getRoot().getParent()).setBackgroundColor(Color.TRANSPARENT);
3)在此方法中应用显示动画:
bottomSheetDialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
revealShow(bsdCreateNewBinding.getRoot(), true, null);
}
});
这是显示动画代码:
private void revealShow(View dialogView, boolean b, final BottomSheetDialog dialog) {
final View view = dialogView.findViewById(R.id.dialog);
int w = view.getWidth();
int h = view.getHeight();
int endRadius = (int) Math.hypot(w, h);
int cx = (int) (binding.btnAdd.getX() + (binding.btnAdd.getWidth() / 2));
int cy = (int) (binding.btnAdd.getY()) + binding.btnAdd.getHeight() + 56;
if (b) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Animator revealAnimator = ViewAnimationUtils.createCircularReveal(view, cx, cy, 0, endRadius);
view.setVisibility(View.VISIBLE);
revealAnimator.setDuration(700);
revealAnimator.start();
} else {
view.setVisibility(View.VISIBLE);
}
} else {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Animator anim =
ViewAnimationUtils.createCircularReveal(view, cx, cy, endRadius, 0);
anim.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
dialog.dismiss();
view.setVisibility(View.INVISIBLE);
}
});
anim.setDuration(700);
anim.start();
} else {
dialog.dismiss();
view.setVisibility(View.INVISIBLE);
}
}
}
PS:Lolipop 盒下和上盒已处理。
这是带有 Reveal Animation 的 Dialog 或 BottomSheetDialog 的完美示例:https ://android.jlelse.eu/custom-dialog-with-circular-reveal-animation-ef7dc77ba1e
于 2017-11-24T07:45:21.743 回答