Przeglądaj źródła

update Demo App:
- MainActivity.java:848[【功能建议】建议bottomMenuDialog可以增加渐变退出动画 issues:303](https://github.com/kongzue/DialogX/issues/303#issuecomment-1521127385)

Kongzue 2 lat temu
rodzic
commit
c64cc4846c

+ 44 - 1
app/src/main/java/com/kongzue/dialogxdemo/activity/MainActivity.java

@@ -844,6 +844,48 @@ public class MainActivity extends BaseActivity {
             }
         });
 
+        //仅使用渐变动画的实现示例
+        DialogXAnimInterface<BottomDialog> alphaDialogAnimation = new DialogXAnimInterface<BottomDialog>() {
+
+            @Override
+            //入场动画
+            public void doShowAnim(BottomDialog dialog, ViewGroup dialogBodyView) {
+                //设置好位置,将默认预设会在屏幕底外部恢复为屏幕内
+                dialog.getDialogImpl().boxBkg.setY(dialog.getDialogImpl().boxRoot.getUnsafePlace().top);
+                //创建 0f~1f 的数值动画
+                ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f);
+                animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
+                    @Override
+                    public void onAnimationUpdate(ValueAnimator animation) {
+                        float value = (float) animation.getAnimatedValue();
+                        //修改背景遮罩透明度
+                        dialog.getDialogImpl().boxRoot.setBkgAlpha(value);
+                        //修改内容透明度
+                        dialog.getDialogImpl().bkg.setAlpha(value);
+                    }
+                });
+                //使用真正的动画时长
+                animator.setDuration(dialog.getDialogImpl().getEnterAnimationDuration());
+                animator.start();
+            }
+
+            @Override
+            //出场动画
+            public void doExitAnim(BottomDialog dialog, ViewGroup dialogBodyView) {
+                ValueAnimator animator = ValueAnimator.ofFloat(1f, 0f);
+                animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
+                    @Override
+                    public void onAnimationUpdate(ValueAnimator animation) {
+                        float value = (float) animation.getAnimatedValue();
+                        //这里可以直接修改整体透明度淡出
+                        dialog.getDialogImpl().boxRoot.setAlpha(value);
+                    }
+                });
+                animator.setDuration(dialog.getDialogImpl().getExitAnimationDuration());
+                animator.start();
+            }
+        };
+
         btnCustomBottomMenu.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -856,6 +898,7 @@ public class MainActivity extends BaseActivity {
                                 return false;
                             }
                         })
+                        //.setDialogXAnimImpl(alphaDialogAnimation)
                         .setCustomView(new OnBindView<BottomDialog>(R.layout.layout_custom_view) {
                             @Override
                             public void onBind(BottomDialog dialog, View v) {
@@ -1287,7 +1330,7 @@ public class MainActivity extends BaseActivity {
                     public void run() {
                         finish();
                     }
-                },500);
+                }, 500);
             }
         });