代码设置Dialog的进入和退出动画

来源:互联网 发布:淘宝五金店铺名字大全 编辑:程序博客网 时间:2024/06/13 18:12

因项目对外发布的是JAR包,不能有资源文件,因此所有的界面和动画都不方便通过xml去写,都需要通过JAVA代码去生成。

进入动画的设置
重写Dialog的show()方法,getContentView()和getAnimation()需自定义,就是这么简单。

 @Override    public void show() {        mContentView = getContentView();        setContentView(mContentView);        setCancelable(false);        super.show();        if (mContentView != null) {            mContentView.startAnimation(getAnimation());        }    }      @Override    public Animation getAnimation() {        AnimationSet set = new AnimationSet(true);        AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f);        //ScaleAnimation scaleAnimation = new ScaleAnimation(0,1f,0,1f,        //      Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);        set.addAnimation(alphaAnimation);        //  set.addAnimation(scaleAnimation);        set.setDuration(500);        return set;    }

退出动画的设置
退出时的动画写法有点不一样,需要加一个listener如下:

  @Override    public void dismiss() {        if (mContentView != null){            mContentView.startAnimation(getExitAnimation());        }         super.dismiss();     }      private Animation getExitAnimation() {        AnimationSet set = new AnimationSet(true);        AlphaAnimation alphaAnimation = new AlphaAnimation(1.0f, 0.0f);        set.addAnimation(alphaAnimation);        set.setFillAfter(true);        set.setDuration(500);        set.setAnimationListener(new Animation.AnimationListener() {            @Override            public void onAnimationStart(Animation animation) {            }            @Override            public void onAnimationEnd(Animation animation) {                if (mContentView != null){                //用view的post()方法不会报错,直接用super.dismiss()会报错的,你可以试试。                    mContentView.post(new Runnable() {                        @Override                        public void run() {                            UnsubscribeConfirmDialog.super.dismiss();                        }                    });                }            }            @Override            public void onAnimationRepeat(Animation animation) {            }        });        return  set;    }
0 0
原创粉丝点击