今天登陆界面弄了一个注册和登陆切换动画,发现 Android 平移动画 在
1. oncreate 方法中启动
2.onclick方法中启动
这两者有区别
其中第一种,只需要这样写:
main_info_container.setAnimation(anim1);
这样启动activity时,就能进行执行动画
具体如下:
@AfterViews void showAnimation() { int width =View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); int height =View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); main_info_container.measure(width,height); int height_ = main_info_container.getMeasuredHeight(); height_ = TranslatingUtil.Dp2Px(this, height_); width_ = main_info_container.getMeasuredWidth(); //width_ = TranslatingUtil.Dp2Px(this, width_ / 2.0f); DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); width_ = TranslatingUtil.Px2Dp(this,dm.widthPixels); Rotate3dAnimation anim1 = new Rotate3dAnimation(0,90,width_,0,0,false); anim1.setDuration(1000); anim1.setFillAfter(true); anim1.setInterpolator(new AccelerateInterpolator()); // 设置监听 //anim.setAnimationListener(new DisplayNextView()); anim1.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { /**注册显示**/ main_info_container2.setVisibility(View.VISIBLE); main_info_container.setVisibility(View.GONE); Rotate3dAnimation anim2 = new Rotate3dAnimation(-90, 0, width_, 0, 0, false); anim2.setDuration(100); anim2.setFillAfter(true); anim2.setInterpolator(new AccelerateInterpolator()); main_info_container2.setAnimation(anim2); //main_info_container2.startAnimation(anim2); } @Override public void onAnimationRepeat(Animation animation) { } }); main_info_container.setAnimation(anim1); }
而第二种按钮点击效果的时候,需要启动才可以:
main_info_container.startAnimation(anim1);
具体如下:
@Click void translate(){ showAnimation(); } @AfterViews void showAnimation() { int width =View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); int height =View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); main_info_container.measure(width,height); int height_ = main_info_container.getMeasuredHeight(); height_ = TranslatingUtil.Dp2Px(this, height_); width_ = main_info_container.getMeasuredWidth(); //width_ = TranslatingUtil.Dp2Px(this, width_ / 2.0f); DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); width_ = TranslatingUtil.Px2Dp(this,dm.widthPixels); Rotate3dAnimation anim1 = new Rotate3dAnimation(0,90,width_,0,0,false); anim1.setDuration(1000); anim1.setFillAfter(true); anim1.setInterpolator(new AccelerateInterpolator()); // 设置监听 //anim.setAnimationListener(new DisplayNextView()); anim1.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { /**注册显示**/ main_info_container2.setVisibility(View.VISIBLE); main_info_container.setVisibility(View.GONE); Rotate3dAnimation anim2 = new Rotate3dAnimation(-90, 0, width_, 0, 0, false); anim2.setDuration(100); anim2.setFillAfter(true); anim2.setInterpolator(new AccelerateInterpolator()); //main_info_container2.setAnimation(anim2); main_info_container2.startAnimation(anim2); } @Override public void onAnimationRepeat(Animation animation) { } }); main_info_container.startAnimation(anim1); //main_info_container.setAnimation(anim1); }