Git Product home page Git Product logo

Comments (11)

kongzue avatar kongzue commented on May 18, 2024 1

可以自定义Style以修改动画效果,例如基于MaterialStyle的主题,进行如下修改(请参考注释)

public class CustomStyle implements DialogXStyle {
    
    private CustomStyle() {
    }
    
    public static MaterialStyle style() {
        return new CustomStyle();
    }
    
    @Override
    public int layout(boolean light) {
        return light ? com.kongzue.dialogx.R.layout.layout_dialogx_material : com.kongzue.dialogx.R.layout.layout_dialogx_material_dark;
    }
    
    @Override
    public int enterAnimResId() {
        //在这里修改你自定义的弹出对话框动画
        return com.kongzue.dialogx.R.anim.anim_dialogx_default_enter;
    }
    
    @Override
    public int exitAnimResId() {
        //在这里修改你自定义的关闭对话框动画
        return com.kongzue.dialogx.R.anim.anim_dialogx_default_exit;
    }
    
    @Override
    public int[] verticalButtonOrder() {
        return new int[]{BUTTON_OK, BUTTON_OTHER, BUTTON_CANCEL};
    }
    
    @Override
    public int[] horizontalButtonOrder() {
        return new int[]{BUTTON_OTHER, SPACE, BUTTON_CANCEL, BUTTON_OK};
    }
    
    @Override
    public int splitWidthPx() {
        return 1;
    }
    
    @Override
    public int splitColorRes(boolean light) {
        return 0;
    }
    
    @Override
    public BlurBackgroundSetting messageDialogBlurSettings() {
        return null;
    }
    
    @Override
    public HorizontalButtonRes overrideHorizontalButtonRes() {
        return new HorizontalButtonRes() {
            @Override
            public int overrideHorizontalOkButtonBackgroundRes(int visibleButtonCount, boolean light) {
                return light ? com.kongzue.dialogx.R.drawable.button_dialogx_material_light : com.kongzue.dialogx.R.drawable.button_dialogx_material_night;
            }
            
            @Override
            public int overrideHorizontalCancelButtonBackgroundRes(int visibleButtonCount, boolean light) {
                return light ? com.kongzue.dialogx.R.drawable.button_dialogx_material_light : com.kongzue.dialogx.R.drawable.button_dialogx_material_night;
            }
            
            @Override
            public int overrideHorizontalOtherButtonBackgroundRes(int visibleButtonCount, boolean light) {
                return light ? com.kongzue.dialogx.R.drawable.button_dialogx_material_light : com.kongzue.dialogx.R.drawable.button_dialogx_material_night;
            }
        };
    }
    
    @Override
    public VerticalButtonRes overrideVerticalButtonRes() {
        return new VerticalButtonRes() {
            @Override
            public int overrideVerticalOkButtonBackgroundRes(int visibleButtonCount, boolean light) {
                return light ? com.kongzue.dialogx.R.drawable.button_dialogx_material_light : com.kongzue.dialogx.R.drawable.button_dialogx_material_night;
            }
            
            @Override
            public int overrideVerticalCancelButtonBackgroundRes(int visibleButtonCount, boolean light) {
                return light ? com.kongzue.dialogx.R.drawable.button_dialogx_material_light : com.kongzue.dialogx.R.drawable.button_dialogx_material_night;
            }
            
            @Override
            public int overrideVerticalOtherButtonBackgroundRes(int visibleButtonCount, boolean light) {
                return light ? com.kongzue.dialogx.R.drawable.button_dialogx_material_light : com.kongzue.dialogx.R.drawable.button_dialogx_material_night;
            }
        };
    }
    
    @Override
    public WaitTipRes overrideWaitTipRes() {
        return new WaitTipRes() {
            @Override
            public boolean blurBackground() {
                return false;
            }
            
            @Override
            public int overrideBackgroundColorRes(boolean light) {
                return 0;
            }
            
            @Override
            public int overrideTextColorRes(boolean light) {
                return light ? com.kongzue.dialogx.R.color.white : com.kongzue.dialogx.R.color.black;
            }
            
            @Override
            public ProgressViewInterface overrideWaitView(Context context, boolean light) {
                return new ProgressView(context);
            }
        };
    }
    
    @Override
    public BottomDialogRes overrideBottomDialogRes() {
        return new BottomDialogRes() {
            
            @Override
            public boolean touchSlide() {
                return true;
            }
            
            @Override
            public int overrideDialogLayout(boolean light) {
                return light ? com.kongzue.dialogx.R.layout.layout_dialogx_bottom_material : com.kongzue.dialogx.R.layout.layout_dialogx_bottom_material_dark;
            }
            
            @Override
            public int overrideMenuDividerDrawableRes(boolean light) {
                return light ? com.kongzue.dialogx.R.drawable.rect_dialogx_material_menu_split_divider : com.kongzue.dialogx.R.drawable.rect_dialogx_material_menu_split_divider_night;
            }
            
            @Override
            public int overrideMenuDividerHeight(boolean light) {
                return 1;
            }
            
            @Override
            public int overrideMenuTextColor(boolean light) {
                return light ? com.kongzue.dialogx.R.color.black90 : com.kongzue.dialogx.R.color.white90;
            }
            
            @Override
            public float overrideBottomDialogMaxHeight() {
                return 0.6f;
            }
            
            @Override
            public int overrideMenuItemLayout(boolean light, int index, int count, boolean isContentVisibility) {
                return 0;
            }
            
            @Override
            public int overrideSelectionMenuBackgroundColor(boolean light) {
                return 0;
            }
            
            @Override
            public boolean selectionImageTint(boolean light) {
                return false;
            }
            
            @Override
            public int overrideSelectionImage(boolean light, boolean isSelected) {
                return isSelected ? com.kongzue.dialogx.R.mipmap.img_dialogx_bottom_menu_material_item_selection : com.kongzue.dialogx.R.mipmap.img_dialogx_bottom_menu_material_item_non_select;
            }
            
        };
    }
    
    @Override
    public PopTipSettings popTipSettings() {
        return new PopTipSettings() {
            @Override
            public int layout(boolean light) {
                return light ? com.kongzue.dialogx.R.layout.layout_dialogx_poptip_material : com.kongzue.dialogx.R.layout.layout_dialogx_poptip_material_dark;
            }
            
            @Override
            public ALIGN align() {
                return ALIGN.BOTTOM;
            }
            
            @Override
            public int enterAnimResId(boolean light) {
                return com.kongzue.dialogx.R.anim.anim_dialogx_default_enter;
            }
            
            @Override
            public int exitAnimResId(boolean light) {
                return com.kongzue.dialogx.R.anim.anim_dialogx_default_exit;
            }
        };
    }
}

其他主题请参考对应的开源代码进行修改,具体文档详见:https://github.com/kongzue/DialogX/wiki/%E8%87%AA%E5%AE%9A%E4%B9%89-DialogX-%E4%B8%BB%E9%A2%98

使用前请记得设置DialogX的主题为自定义主题:

DialogX.globalStyle = CustomStyle.style();

from dialogx.

phoebewow avatar phoebewow commented on May 18, 2024

动画效果没问题,很好,就是持续时间,我看源码是固定了300

from dialogx.

phoebewow avatar phoebewow commented on May 18, 2024

boxRoot.animate().setDuration(enterAnim.getDuration()).alpha(1f).setInterpolator(new DecelerateInterpolator()).setDuration(300).setListener(null);

boxRoot.animate().setDuration(300).alpha(0f).setInterpolator(new AccelerateInterpolator()).setDuration(enterAnim.getDuration()).setListener(new AnimatorListenerEndCallBack() {
@OverRide
public void onAnimationEnd(Animator animation) {
dismiss(dialogView);
}
});

我没看错的话应该是这两个地方控制的持续时间

from dialogx.

kongzue avatar kongzue commented on May 18, 2024

会考虑在之后的版本开放设置的

from dialogx.

phoebewow avatar phoebewow commented on May 18, 2024

谢谢
kotlin版本我加了这么个指令,可以在弹窗消失后执行指定操作,对于一些需要按步骤显示窗口的挺有用的

fun <T : CustomDialog> T.after(go: T.() -> Unit): CustomDialog {
    this.dialogLifecycleCallback = object : DialogLifecycleCallback<CustomDialog>() {
        override fun onDismiss(dialog: CustomDialog?) {
            go()
        }
    }
    return this
}

fun <T : MessageDialog> T.after(go: T.() -> Unit): MessageDialog {
    this.dialogLifecycleCallback = object : DialogLifecycleCallback<MessageDialog>() {
        override fun onDismiss(dialog: MessageDialog?) {
            go()
        }
    }
    return this
}

fun <T : InputDialog> T.after(go: T.() -> Unit): InputDialog {
    this.dialogLifecycleCallback = object : DialogLifecycleCallback<MessageDialog>() {
        override fun onDismiss(dialog: MessageDialog?) {
            go()
        }
    }
    return this
}

from dialogx.

kongzue avatar kongzue commented on May 18, 2024

请更新至0.0.29.alpha3版本,已经在DialogX类中加入了设置项:

//默认启动对话框动画时长
public static long enterAnimDuration = -1;
//默认关闭对话框动画时长
public static long exitAnimDuration = -1;

如果还需要更多设置可以继续留言。

from dialogx.

phoebewow avatar phoebewow commented on May 18, 2024

好的。谢谢。。。。

from dialogx.

kongzue avatar kongzue commented on May 18, 2024

另外预告下下一个正式版还会加入对应到每个Dialog的get/set方法

from dialogx.

kongzue avatar kongzue commented on May 18, 2024

很抱歉之前的版本可能存在部分对话框不生效的问题,您可以更新至 0.0.29.alpha4 版本,此版本以修复问题并提供了每个Dialog实例的动画时长 get/set 方法

from dialogx.

phoebewow avatar phoebewow commented on May 18, 2024

好的,谢谢。我测试下

from dialogx.

phoebewow avatar phoebewow commented on May 18, 2024

正常工作,谢谢

from dialogx.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.