0
我在我的android應用程序中使用了底部表單。 如何添加循環顯示動畫來加載bottomomsheet? createCircularReveal
是支持與API級別的所有設備上超過21將圓形顯示動畫添加到底部表格
我在我的android應用程序中使用了底部表單。 如何添加循環顯示動畫來加載bottomomsheet? createCircularReveal
是支持與API級別的所有設備上超過21將圓形顯示動畫添加到底部表格
簡單的邏輯來轉換你的正常滑動畫向上滑動以上21個API的動畫的Android SDK中的功能:
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);
}
}
}
P.S:低於和高於Lolipop案件處理。
下面是對話或BottomSheetDialog一個很好的例子與顯示動畫:https://android.jlelse.eu/custom-dialog-with-circular-reveal-animation-ef7dc77ba1e
你嘗試過這麼遠嗎? –
我已使用來自com.github.rey5137的BottomSheetDialog :材料 庫。它有一個樣式ID,我們可以從樣式設置動畫到它。我想爲android 21+設置動畫效果。對於具有21-api級別的設備,我們可以根據樣式設置動畫。 –
對不起,我幫不了你。也許可以在他們的github頁面上尋求幫助。 –