android activity消失动画效果,Android:Activity切换动画、overridePendingTransition、fragment动画...

本文介绍了如何在Android中自定义Activity的进入和退出动画,包括使用`overridePendingTransition`方法和设置全局主题风格。同时,详细讲解了实现Fragment过渡动画的步骤,通过组合动画实现图片下沉和文本上浮的层叠效果。动画涉及到缩放、旋转和遮罩等视觉效果,通过`FragmentManager`进行Fragment的切换和动画控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.跟overridePendingTransition(enterAnim, exitAnim)这个方法有关,可以设置出入的动画。findViewById(R.id.button2).setOnClickListener(new OnClickListener()

{

@Override

public void onClick(View v)

{

Intent intent = new Intent(OneActivity.this, TwoActivity.class);

startActivity(intent );

overridePendingTransition(0, 0);//去掉Activity切换间的动画

}

});

代码设置动画:

启动后startActivity(new Intent(A.this, B.class));

overridePendingTransition(inAnim, outAnim);

结束时finish();

activity.overridePendingTransition(inAnim, outAnim);

2.通过style设置全局的activity动画

主题style:

@style/Animation.Activity.Test

动画style:

@anim/activity_open_enter

@anim/activity_open_exit

@anim/activity_close_enter

@anim/activity_close_exit

@anim/activity_open_enter

@anim/activity_open_exit

@anim/activity_close_enter

@anim/activity_close_exit

@anim/activity_open_enter

@anim/activity_open_exit

@anim/activity_close_enter

@anim/activity_close_exit

2.fragment动画Fragment过度动画分析

Sliding Fragment

介绍:该案例为传统的Fragment增加了个性化的补间动画,其效果是原有fragment向屏幕内做一定的下沉,新的fragment显示在最上层,产生层叠效果的多个fragments。Video: http://www.youtube.com/watch?v=xbl5cxfA1n4

c82603afde43ffe5c54aad8a15f0331a.png82929c7571d18e1c5c796f9201f8fb5e.png

本文将简单分析其实现流程及原理Step1:添加Fragment并设置点击的切换事件首先添加一个fragment,并设置显示内容已做区别,案例中显示了一张图片,接着设置单击事件,为了使得我们单击任意位置都能触发fragment的切换动画,这里需要为用于展示图片的fragment,显示文本的fragment以及黑色背景view都添加该事件监听器。

Step2:fragment切换实现这里只有2个fragment,一个是用于显示图片,另一个显示文本,预期效果是单击屏幕后,图片下沉,文本显示到顶层,再次单击后则恢复原状,即,文本消失>,图片上浮。分析这些动画的顺序和效果,图片的下沉可以通过一个组合animation来做,1.缩放,例如缩小为原图80%,2.旋转,这里的下层效果是首先图片x轴旋转40度,>然后再将旋转角度设置为0,3.添加一个半透明的遮罩,以示图片当前出于幕后状态,

文本的出现则在图片的动作完成后,通过manager动态讲其添加到画面上,这里的文本不是全屏的,否则就看不到后面的图片背景,文本的出现也可以添加动画>,这里文本出现时由下至上,消失时由上至下。private void switchFragments () {

if (mIsAnimating) {

return;

}

mIsAnimating = true;

if (mDidSlideOut) {

mDidSlideOut = false;

getFragmentManager().popBackStack();

} else {

mDidSlideOut = true;

AnimatorListener listener = new AnimatorListenerAdapter() {

@Override

public void onAnimationEnd(Animator arg0) {

FragmentTransaction transaction = getFragmentManager().beginTransaction();

transaction.setCustomAnimations(R.animator.slide_fragment_in, 0, 0,

R.animator.slide_fragment_out);

transaction.add(R.id.move_to_back_container, mTextFragment);

transaction.addToBackStack(null);

transaction.commit();

}

};

slideBack (listener);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值