因项目对外发布的是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;
}