overridePendingTransition只支持android 2.0以上版本 Android的动画效果分为两种,一种是tweened animation(补间动画),第二种是frame by frame animation。一般我们用的是第一种。补间动画又分为AlphaAnimation,透明度转换 RotateAnimation,旋转转换 ScaleAnimation,缩放转换 TranslateAnimation 位置转换(移动)。动画效果在anim目录下的xml文件中定义,在程序中用AnimationUtils.loadAnimation(Context context,int ResourcesId)载入成Animation对象,在需要显示动画效果时,执行需要动画的View的startAnimation方法,传入Animation,即可。切换Activity也可以应用动画效果,在startActivity方法后,执行overridePendingTransition方法,两个参数分别是切换前的动画效果,切换后的动画效果,下面的例子中传入的是两个alpha动画,以实现切换Activity时淡出淡入,渐隐渐现效果。下面贴出代码:两个Activity的布局文件 main.xml:

activity2.xml: 动画效果XML文件,全部存放在anim目录下: a1.xml 淡出效果 a2.xml 淡入效果: rotate.xml 旋转效果: scale.xml 缩放效果: translate.xml 移动效果: 下面是程序代码,main.java: package com.pocketdigi.animation; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.Button; import android.widget.TextView; public class main extends Activity { /** Called when the activity is first created. */ TextView tv,tv2,tv3,tv4; Button bt3; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button bt=(Button)findViewById(R.id.bt); tv=(TextView)findViewById(R.id.tv); tv2=(TextView)findViewById(R.id.tv2); tv3=(TextView)findViewById(R.id.tv3); tv4=(TextView)findViewById(R.id.tv4); bt3=(Button)findViewById(R.id.bt3); bt.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent=new Intent(main.this,activity2.class); startActivity(intent); overridePendingTransition(R.anim.a2,R.anim.a1); //淡出淡入动画效果 } }); bt3.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub Animation translate=AnimationUtils.loadAnimation(main.this, R.anim.translate); Animation scale=AnimationUtils.loadAnimation(main.this, R.anim.scale); Animation rotate=AnimationUtils.loadAnimation(main.this, R.anim.rotate); Animation alpha=AnimationUtils.loadAnimation(main.this, R.anim.a1); //载入XML文件成Animation对象 tv.startAnimation(translate); tv2.startAnimation(scale); tv3.startAnimation(alpha); tv4.startAnimation(rotate); //应用动画 }}); } } activity2.java: package com.pocketdigi.animation; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class activity2 extends Activity { Button bt2; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity2); bt2=(Button)findViewById(R.id.bt2); bt2.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent=new Intent(activity2.this,main.class); startActivity(intent); overridePendingTransition(R.anim.a2,R.anim.a1); } }); } } 注:动画切换Activity只有在新启动Activity才有效,如果Activity已经启动,并且intent加了FLAG_ACTIVITY_REORDER_TO_FRONT,这样不会新启动Activity,也就没有动画效果。

更多相关文章

  1. Android第四十四期 - 登录界面的动画
  2. Android资源文件xml的编写
  3. Android 工程中各种文件的介绍
  4. Android 带有弹出收缩动画的扇形菜单实例
  5. [Android] View动画特效(三)
  6. android 图片LOMO效果
  7. 在Android中把内容写到XML文件中
  8. 【Android】volley网络框架的文件下载

随机推荐

  1. android.inputmethodservice.KeyboardVie
  2. 2.在服务器上使用 gradle 打包 android
  3. Android(安卓)中 AlertDialog 的多种创建
  4. Android技术文章收集
  5. 【Android】PA4D_CH6 使用Internat资源
  6. 按键消息传播流程(WindowManagerService.j
  7. Android 铃声和音量的获取程序
  8. (安卓权限)Android Permissions
  9. Notes on the implementation of encrypt
  10. Android 根据IP地址获取城市