你的位置:首页 > 操作系统

[操作系统]activity切换动画特效


效果图:

 

结构图:

 

测试代码:

布局:

 1 <??> 2 <LinearLayout ="http://schemas.android.com/apk/res/android" 3   android:layout_width="fill_parent" 4   android:layout_height="wrap_content" 5   android:background="@drawable/bg" 6   android:orientation="vertical" 7   android:paddingTop="10dp" > 8  9   <Spinner10     android:id="@+id/animation_sp"11     android:layout_width="fill_parent"12     android:layout_height="wrap_content" >13   </Spinner>14 15   <Button16     android:id="@+id/other_button"17     android:layout_width="fill_parent"18     android:layout_height="wrap_content"19     android:text="打开Other窗口" >20   </Button>21 22 </LinearLayout>

main.

 

 1 <??> 2 <LinearLayout ="http://schemas.android.com/apk/res/android" 3   android:layout_width="fill_parent" 4   android:layout_height="fill_parent" 5   android:background="@drawable/bg" 6   android:orientation="vertical" > 7  8   <TextView 9     android:layout_width="fill_parent"10     android:layout_height="wrap_content"11     android:gravity="center"12     android:text="这是Other窗口" />13 14 </LinearLayout>

other.

 

 1 <? 2 <resources> 3   <string-array name="anim_type"> 4     <item>淡入淡出效果</item> 5     <item>放大淡出效果</item> 6     <item>转动淡出效果1</item> 7     <item>转动淡出效果2</item> 8     <item>左上角展开淡出效果</item> 9     <item>压缩变小淡出效果</item>10     <item>右往左推出效果</item>11     <item>下往上推出效果</item>12     <item>左右交错效果</item>13     <item>放大淡出效果</item>14     <item>缩小效果</item>15     <item>上下交错效果</item>16   </string-array>17 </resources>

arrays.

 

JAVA代码:

 1 package com.iteye.androidtoast; 2  3 import java.util.ArrayList; 4 import java.util.List; 5  6 import android.app.Activity; 7 import android.content.Intent; 8 import android.os.Bundle; 9 import android.view.View; 10 import android.view.View.OnClickListener; 11 import android.widget.ArrayAdapter; 12 import android.widget.Button; 13 import android.widget.Spinner; 14  15 public class MainActivity extends Activity { 16  17   /** Called when the activity is first created. */ 18   @Override 19   public void onCreate(Bundle savedInstanceState) { 20     super.onCreate(savedInstanceState); 21     setContentView(R.layout.main); 22      23     final Spinner mAnimSp = (Spinner) findViewById(R.id.animation_sp); 24     Button mButton=(Button) findViewById(R.id.other_button); 25      26     // 通过资源文件获取Spinner填充内容 27     String[] ls = getResources().getStringArray(R.array.anim_type); 28     List<String> list = new ArrayList<String>(); 29     // 把数组内容填充 到集合 30     for (int i = 0; i < ls.length; i++) { 31       list.add(ls[i]); 32     } 33     ArrayAdapter<String> animType = new ArrayAdapter<String>(this, 34         android.R.layout.simple_spinner_item, list); 35     animType.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 36     mAnimSp.setAdapter(animType); 37     mAnimSp.setSelection(0); 38      39     mButton.setOnClickListener(new OnClickListener() { 40       @Override 41       public void onClick(View v) { 42         Intent intent = new Intent(); 43         intent.setClass(MainActivity.this, OtherActivity.class); 44         startActivity(intent); 45  46         switch (mAnimSp.getSelectedItemPosition()) { 47         case 0: 48           /*注意:此方法只能在startActivity和finish方法之后调用。 49            第一个参数为第一个Activity离开时的动画,第二参数为所进入的Activity的动画效果*/ 50           overridePendingTransition(R.anim.fade, R.anim.hold); 51           break; 52         case 1: 53           overridePendingTransition(R.anim.my_scale_action, 54               R.anim.my_alpha_action); 55           break; 56         case 2: 57           overridePendingTransition(R.anim.scale_rotate, 58               R.anim.my_alpha_action); 59           break; 60         case 3: 61           overridePendingTransition(R.anim.scale_translate_rotate, 62               R.anim.my_alpha_action); 63           break; 64         case 4: 65           overridePendingTransition(R.anim.scale_translate, 66               R.anim.my_alpha_action); 67           break; 68         case 5: 69           overridePendingTransition(R.anim.hyperspace_in, 70               R.anim.hyperspace_out); 71           break; 72         case 6: 73           overridePendingTransition(R.anim.push_left_in, 74               R.anim.push_left_out); 75           break; 76         case 7: 77           overridePendingTransition(R.anim.push_up_in, 78               R.anim.push_up_out); 79           break; 80         case 8: 81           overridePendingTransition(R.anim.slide_left, 82               R.anim.slide_right); 83           break; 84         case 9: 85           overridePendingTransition(R.anim.wave_scale, 86               R.anim.my_alpha_action); 87           break; 88         case 10: 89           overridePendingTransition(R.anim.zoom_enter, 90               R.anim.zoom_exit); 91           break; 92         case 11: 93           overridePendingTransition(R.anim.slide_up_in, 94               R.anim.slide_down_out); 95           break; 96         } 97       } 98     }); 99   }100 }

MainActivity.java

 

 1 package com.iteye.androidtoast; 2  3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.KeyEvent; 6  7 public class OtherActivity extends Activity{ 8  9   @Override10   protected void onCreate(Bundle savedInstanceState) {11     // TODO Auto-generated method stub12     super.onCreate(savedInstanceState);13     this.setContentView(R.layout.other);14   }15   @Override16   public boolean onKeyDown(int keyCode, KeyEvent event) {17     //如果按下的是返回键,并且没有重复18     if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {19       finish();20       overridePendingTransition(R.anim.slide_up_in, R.anim.slide_down_out);21       return false;22     }23     return false;24   }25 }

OtherActivity.java

 

实现动画效果anim里的

 1 <??> 2 <!-- Copyright (C) 2007 The Android Open Source Project 3  4    Licensed under the Apache License, Version 2.0 (the "License"); 5    you may not use this file except in compliance with the License. 6    You may obtain a copy of the License at 7   8      http://www.apache.org/licenses/LICENSE-2.0 9  10    Unless required by applicable law or agreed to in writing, software11    distributed under the License is distributed on an "AS IS" BASIS,12    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.13    See the License for the specific language governing permissions and14    limitations under the License.15 -->16 <!-- android:duration="@android:integer/config_longAnimTime" -->17 <alpha ="http://schemas.android.com/apk/res/android"18     android:interpolator="@android:anim/accelerate_interpolator"19     android:fromAlpha="0.0" android:toAlpha="1.0"20     android:duration="2000" />

fade.
 1 <??> 2 <!-- Copyright (C) 2009 The Android Open Source Project 3  4    Licensed under the Apache License, Version 2.0 (the "License"); 5    you may not use this file except in compliance with the License. 6    You may obtain a copy of the License at 7   8      http://www.apache.org/licenses/LICENSE-2.0 9  10    Unless required by applicable law or agreed to in writing, software11    distributed under the License is distributed on an "AS IS" BASIS,12    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.13    See the License for the specific language governing permissions and14    limitations under the License.15 -->16 <!-- @android:integer/config_longAnimTime -->17 <translate ="http://schemas.android.com/apk/res/android"18     android:interpolator="@android:anim/accelerate_interpolator"19     android:fromXDelta="0" android:toXDelta="0"20     android:duration="2000" />

hold.
 1 <??> 2 <!-- Copyright (C) 2007 The Android Open Source Project 3  4    Licensed under the Apache License, Version 2.0 (the "License"); 5    you may not use this file except in compliance with the License. 6    You may obtain a copy of the License at 7   8      http://www.apache.org/licenses/LICENSE-2.0 9  10    Unless required by applicable law or agreed to in writing, software11    distributed under the License is distributed on an "AS IS" BASIS,12    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.13    See the License for the specific language governing permissions and14    limitations under the License.15 -->16 17 <alpha ="http://schemas.android.com/apk/res/android" android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="2000" android:startOffset="1200" />

hyperspace_in.
 1 <??> 2 <!-- Copyright (C) 2007 The Android Open Source Project Licensed under the  3   Apache License, Version 2.0 (the "License"); you may not use this file except  4   in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0  5   Unless required by applicable law or agreed to in writing, software distributed  6   under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES  7   OR CONDITIONS OF ANY KIND, either express or implied. See the License for  8   the specific language governing permissions and limitations under the License. --> 9 10 <set ="http://schemas.android.com/apk/res/android"11   android:shareInterpolator="false">12   <scale android:interpolator="@android:anim/accelerate_decelerate_interpolator"13     android:fromXScale="1.0" android:toXScale="1.4" android:fromYScale="1.0"14     android:toYScale="0.6" android:pivotX="50%" android:pivotY="50%"15     android:fillAfter="false" android:duration="2000" />16   <set android:interpolator="@android:anim/accelerate_interpolator"17     android:startOffset="700">18     <scale android:fromXScale="1.4" android:toXScale="0.0"19       android:fromYScale="0.6" android:toYScale="0.0" android:pivotX="50%"20       android:pivotY="50%" android:duration="2000" />21     <rotate android:fromDegrees="0" android:toDegrees="-45"22       android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%"23       android:duration="2000" />24   </set>25 </set>

hyperspace_out.
 1 <??> 2 <!-- android:duration="@android:integer/config_mediumAnimTime" --> 3 <set ="http://schemas.android.com/apk/res/android" > 4 <alpha android:fromAlpha="1.0" android:toAlpha="0" android:duration="2000"/>  5 <!-- 透明度控制动画效果 alpha 6     浮点型值: 7     fromAlpha 属性为动画起始时透明度 8     toAlpha  属性为动画结束时透明度 9     说明: 10     0.0表示完全透明11     1.0表示完全不透明12            以上值取0.0-1.0之间的float数据类型的数字13     14     长整型值:15     duration 属性为动画持续时间16     说明:   17            时间以毫秒为单位18 -->19 </set>

my_alpha_action.
1 <??>2 <!-- android:duration="@android:integer/config_mediumAnimTime" -->3 <set ="http://schemas.android.com/apk/res/android">4   <scale android:interpolator="@android:anim/accelerate_decelerate_interpolator"5     android:fromXScale="0.0" android:toXScale="1.4" android:fromYScale="0.0"6     android:toYScale="1.4" android:pivotX="50%" android:pivotY="50%"7     android:fillAfter="false" android:duration="2000" />8 </set>

my_scale_action.
1 <??>2 <set ="http://schemas.android.com/apk/res/android">3   <translate android:fromXDelta="100%p" android:toXDelta="0"4     android:duration="2000" />5 </set>

push_left_in.
1 <??>2 <set ="http://schemas.android.com/apk/res/android">3   <translate android:fromXDelta="0" android:toXDelta="-100%p"4     android:duration="2000" />5 </set>

push_left_out.
 1 <??> 2 <!-- Copyright (C) 2007 The Android Open Source Project 3  4    Licensed under the Apache License, Version 2.0 (the "License"); 5    you may not use this file except in compliance with the License. 6    You may obtain a copy of the License at 7   8      http://www.apache.org/licenses/LICENSE-2.0 9  10    Unless required by applicable law or agreed to in writing, software11    distributed under the License is distributed on an "AS IS" BASIS,12    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.13    See the License for the specific language governing permissions and14    limitations under the License.15 -->16 17 <set ="http://schemas.android.com/apk/res/android">18   <translate android:fromYDelta="100%p" android:toYDelta="0" android:duration="2000"/>19   <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="2000" />20 </set>

push_up_in.
 1 <??> 2 <!-- Copyright (C) 2007 The Android Open Source Project 3  4    Licensed under the Apache License, Version 2.0 (the "License"); 5    you may not use this file except in compliance with the License. 6    You may obtain a copy of the License at 7   8      http://www.apache.org/licenses/LICENSE-2.0 9  10    Unless required by applicable law or agreed to in writing, software11    distributed under the License is distributed on an "AS IS" BASIS,12    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.13    See the License for the specific language governing permissions and14    limitations under the License.15 -->16 17 <set ="http://schemas.android.com/apk/res/android">18   <translate android:fromYDelta="0" android:toYDelta="-100%p" android:duration="2000"/>19   <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="2000" />20 </set>

push_up_out.
 1 <??> 2 <!-- android:duration="@android:integer/config_mediumAnimTime" --> 3 <set ="http://schemas.android.com/apk/res/android" 4   android:shareInterpolator="false"> 5   <scale android:interpolator="@android:res/anim/accelerate_decelerate_interpolator" 6     android:fromXScale="0.0" android:toXScale="1.0" android:fromYScale="0.0" 7     android:toYScale="1.0" android:pivotX="50%" android:pivotY="50%" 8     android:duration="2000" android:repeatCount="0" android:startOffset="20"></scale> 9   <rotate android:interpolator="@android:anim/accelerate_decelerate_interpolator"10     android:fromDegrees="0" android:toDegrees="+355" android:pivotX="50%"11     android:pivotY="50%" android:duration="2000" />12 </set>

scale_rotate.
 1 <??> 2 <!-- android:duration="@android:integer/config_mediumAnimTime" --> 3 <set ="http://schemas.android.com/apk/res/android" 4   android:shareInterpolator="false"> 5   <scale android:interpolator="@android:res/anim/accelerate_decelerate_interpolator" 6     android:fromXScale="0.0" android:toXScale="1.0" android:fromYScale="0.0" 7     android:toYScale="1.0" android:pivotX="50%" android:pivotY="50%" 8     android:duration="2000"></scale> 9   <translate android:interpolator="@android:anim/accelerate_decelerate_interpolator"10     android:fromXDelta="120" android:toXDelta="30" android:fromYDelta="30"11     android:toYDelta="250" android:duration="2000" />12   <rotate android:interpolator="@android:anim/accelerate_decelerate_interpolator"13     android:fromDegrees="0" android:toDegrees="+355" android:pivotX="50%"14     android:pivotY="50%" android:duration="2000" />15 </set>

scale_translate_rotate.
 1 <??> 2 <!-- android:duration="@android:integer/config_mediumAnimTime" --> 3 <set ="http://schemas.android.com/apk/res/android" 4   android:shareInterpolator="false"> 5   <scale android:interpolator="@android:res/anim/accelerate_decelerate_interpolator" 6     android:fromXScale="0.0" android:toXScale="1.0" android:fromYScale="0.0" 7     android:toYScale="1.0" android:pivotX="0" android:pivotY="0" 8     android:duration="2000" android:repeatCount="0" android:startOffset="0"></scale> 9   <translate android:fromXDelta="0" android:toXDelta="0"10     android:fromYDelta="0" android:toYDelta="0" android:duration="2000" />11 </set>

scale_translate.
1 <??>2 <set android:interpolator="@android:anim/accelerate_interpolator"3   ="http://schemas.android.com/apk/res/android">4   <translate android:duration="2000"5     android:fromYDelta="0.0" android:toYDelta="100.0%p" />6 </set>

slide_down_out.
 1 <??> 2 <!-- Copyright (C) 2007 The Android Open Source Project 3  4    Licensed under the Apache License, Version 2.0 (the "License"); 5    you may not use this file except in compliance with the License. 6    You may obtain a copy of the License at 7   8      http://www.apache.org/licenses/LICENSE-2.0 9  10    Unless required by applicable law or agreed to in writing, software11    distributed under the License is distributed on an "AS IS" BASIS,12    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.13    See the License for the specific language governing permissions and14    limitations under the License.15 -->16 <!-- android:duration="@android:integer/config_shortAnimTime" -->17 <set ="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">18   <translate android:fromXDelta="100%p" android:toXDelta="0"19     android:duration="2000" />20 </set>

slide_left.
 1 <??> 2 <!-- Copyright (C) 2007 The Android Open Source Project 3  4    Licensed under the Apache License, Version 2.0 (the "License"); 5    you may not use this file except in compliance with the License. 6    You may obtain a copy of the License at 7   8      http://www.apache.org/licenses/LICENSE-2.0 9  10    Unless required by applicable law or agreed to in writing, software11    distributed under the License is distributed on an "AS IS" BASIS,12    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.13    See the License for the specific language governing permissions and14    limitations under the License.15 -->16 <!-- android:duration="@android:integer/config_shortAnimTime" -->17 <set ="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">18   <translate android:fromXDelta="-100%p" android:toXDelta="0"19       android:duration="2000" />20 </set>

slide_right.
1 <??>2 <set android:interpolator="@android:anim/decelerate_interpolator"3   ="http://schemas.android.com/apk/res/android">4   <translate android:duration="2000"5     android:fromYDelta="100.0%p" android:toYDelta="0.0" />6 </set>

slide_up_in.
 1 <??> 2 <!-- Copyright (C) 2007 The Android Open Source Project Licensed under the  3   Apache License, Version 2.0 (the "License"); you may not use this file except  4   in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0  5   Unless required by applicable law or agreed to in writing, software distributed  6   under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES  7   OR CONDITIONS OF ANY KIND, either express or implied. See the License for  8   the specific language governing permissions and limitations under the License. --> 9 10 <set ="http://schemas.android.com/apk/res/android"11   android:interpolator="@android:anim/accelerate_interpolator">12   <alpha android:fromAlpha="0.0" android:toAlpha="1.0"13     android:duration="2000" />14   <scale android:fromXScale="0.5" android:toXScale="1.5"15     android:fromYScale="0.5" android:toYScale="1.5" android:pivotX="50%"16     android:pivotY="50%" android:duration="2000" />17   <scale android:fromXScale="1.5" android:toXScale="1.0"18     android:fromYScale="1.5" android:toYScale="1.0" android:pivotX="50%"19     android:pivotY="50%" android:startOffset="200" android:duration="2000" />20 </set>

wave_scale.
 1 <??> 2   <!-- 3     /* ** Copyright 2009, The Android Open Source Project ** ** Licensed 4     under the Apache License, Version 2.0 (the "License"); ** you may not 5     use this file except in compliance with the License. ** You may obtain 6     a copy of the License at ** ** 7     http://www.apache.org/licenses/LICENSE-2.0 ** ** Unless required by 8     applicable law or agreed to in writing, software ** distributed under 9     the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES10     OR CONDITIONS OF ANY KIND, either express or implied. ** See the11     License for the specific language governing permissions and **12     limitations under the License. */13   -->14 15   <!--16     Special window zoom animation: this is the element that enters the17     screen, it starts at 200% and scales down. Goes with zoom_exit.18   -->19 <!-- android:duration="@android:integer/config_mediumAnimTime" -->20 <set ="http://schemas.android.com/apk/res/android"21   android:interpolator="@android:anim/decelerate_interpolator">22   <alpha android:fromAlpha="0" android:toAlpha="1.0"23     android:duration="2000" />24   <scale android:fromXScale="2.0" android:toXScale="1.0"25     android:fromYScale="2.0" android:toYScale="1.0" android:pivotX="50%p"26     android:pivotY="50%p" android:duration="2000" />27 </set>

zoom_enter.
 1 <??> 2   <!-- 3     /* ** Copyright 2009, The Android Open Source Project ** ** Licensed 4     under the Apache License, Version 2.0 (the "License"); ** you may not 5     use this file except in compliance with the License. ** You may obtain 6     a copy of the License at ** ** 7     http://www.apache.org/licenses/LICENSE-2.0 ** ** Unless required by 8     applicable law or agreed to in writing, software ** distributed under 9     the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES10     OR CONDITIONS OF ANY KIND, either express or implied. ** See the11     License for the specific language governing permissions and **12     limitations under the License. */13   -->14 15   <!--16     Special window zoom animation: this is the element that enters the17     screen, it starts at 200% and scales down. Goes with zoom_exit.18   -->19 <!-- android:duration="@android:integer/config_mediumAnimTime" -->20 <set ="http://schemas.android.com/apk/res/android"21   android:interpolator="@android:anim/decelerate_interpolator">22   <alpha android:fromAlpha="0" android:toAlpha="1.0"23     android:duration="2000" />24   <scale android:fromXScale="2.0" android:toXScale="1.0"25     android:fromYScale="2.0" android:toYScale="1.0" android:pivotX="50%p"26     android:pivotY="50%p" android:duration="2000" />27 </set>

zoom_exit.