隔壁是谁呢中文:Android动画效果 translate、scale、alpha、rotate 切换Activity动画

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 08:10:10
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:
1            2            3            4            5            6            7            8            9            10            11            12            13            14            15            16            17            18            19            20            21            22            23            24            25            26            27            28            29            30            31            32            33            34            35            36            37            38            39            
                                                                        

activity2.xml:

1            2            3            4            5            6            7            8            9            10            11            12            13            14            15            16            17            18            
                                    

动画效果XML文件,全部存放在anim目录下:
a1.xml 淡出效果

1            2            3            4            5            6            7            8            9            10            11            12            13            
                                                

a2.xml 淡入效果:

1            2            3            4            5            6            7            8            
                                    

rotate.xml 旋转效果:

1            2            3            4            5            6            7            8            9            10            11            12            13            14            15            
                                                

scale.xml 缩放效果:

1            2            3            4            5            6            7            8            9            10            11            12            13            14            15            16            17            18            19            20            21            22            23            24            25            26            
                                                

translate.xml 移动效果:

1            2            3            4            5            6            7            8            9            10            11            12            13            
                                                

下面是程序代码,main.java:

1            2            3            4            5            6            7            8            9            10            11            12            13            14            15            16            17            18            19            20            21            22            23            24            25            26            27            28            29            30            31            32            33            34            35            36            37            38            39            40            41            42            43            44            45            46            47            48            49            50            51            52            53            54            55            56            57            58            59            
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:

1            2            3            4            5            6            7            8            9            10            11            12            13            14            15            16            17            18            19            20            21            22            23            24            25            26            27            28            
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,也就没有动画效果。
因为代码比较多,最后附上打包的源文件