1+ **android中设置activity切换动画有 两种实现方式**
2+
3+ 1 . 在 AndroidManifest.xml 文件activity标签中,通过设置 android:theme 主题属性来自定义我们 Activity的切换动画( 主题可以定义很多属性,动画只是其中之一)。
4+
5+
6+ ```
7+ <activity
8+ android:name="whateverNameActivity"
9+ android:theme="@style/myActivityTheme" >
10+ </activity>
11+ ```
12+
13+ 首先要定义自己的主题,打开res/values/styles.xml文件,加入
14+
15+ ```
16+ <style name="myActivityTheme">
17+ <itemname="android:windowAnimationStyle">@style/myAnimTheme />
18+ </style>
19+ ```
20+ 然后继续定义具体切换动画样式,分为4种需要动画的情况。
21+
22+ 打开新界面时 :
23+
24+
25+ - 新界面出现(android:activityOpenEnterAnimation)
26+ - 当前界面消失(android:activityOpenExitAnimation)
27+
28+ 返回上一界面时:
29+
30+ - 当前界面消失(android:activityCloseExitAnimation)
31+ - 上一界面出现(android:activityCloseEnterAnimation)
32+
33+ > a、b、c、d为自定义在res/anim下的具体动画效果文件(下面贴出)
34+
35+ ```
36+ <style name="myAnimTheme " parent="@android:style/Animation.Activity">
37+ <item name="android:activityOpenEnterAnimation">@anim/a />
38+ <item name="android:activityOpenExitAnimation">@anim/b />
39+ <item name="android:activityCloseEnterAnimation">@anim/c />
40+ <item name="android:activityCloseExitAnimation">@anim/d />
41+ </style>
42+ ```
43+
44+ 2 . 在Android的2.0版本之后,加入了overridePendingTransition()这个函数来帮我们实现activity切换动画,它**在startActivity()或者finish()函数之后调用**
45+
46+ 
47+
48+ 它有两个参数,
49+ enterAnim是下一界面进入效果的xml文件的id,
50+ exitAnim是当前界面退出效果的xml文件id。
51+
52+ > 我们可以看出它也实现了第一种方式的四种动画情况。
53+
54+ 注意:
55+
56+ - 当我们不想要动画时,设置为 0 即可。
57+ - 我们可以看出这个方法是定义在android.app.Activity下的,如果我们用自定义的view或fragment等嵌入到Activity中,调用这个函数时很可能不起作用。一般改写为this.getParent().overridePendingTransition 就可以解决。
58+
59+ 3 .上 res/anim 下的各种动画文件
60+
61+ zoomin.xml:
62+
63+ ```
64+ <?xml version="1.0" encoding="utf-8"?>
65+ <set xmlns:android="http://schemas.android.com/apk/res/android"
66+ android:interpolator="@android:anim/decelerate_interpolator">
67+
68+ <scale android:fromXScale="0.1"
69+ android:toXScale="1.0"
70+ android:fromYScale="0.1"
71+ android:toYScale="1.0"
72+ android:pivotX="50%p"
73+ android:pivotY="50%p"
74+ android:duration="300" />
75+
76+ <alpha
77+ android:fromAlpha="0.1"
78+ android:toAlpha="1.0"
79+ android:duration="300" />
80+ </set>
81+ ```
82+ zoomout.xml
83+
84+ ```
85+ <?xml version="1.0" encoding="utf-8"?>
86+ <set xmlns:android="http://schemas.android.com/apk/res/android"
87+ android:interpolator="@android:anim/decelerate_interpolator"
88+ android:zAdjustment="top">
89+
90+ <scale android:fromXScale="1.0"
91+ android:toXScale=".5"
92+ android:fromYScale="1.0"
93+ android:toYScale=".5"
94+ android:pivotX="50%p"
95+ android:pivotY="50%p"
96+ android:duration="300" />
97+
98+ <alpha android:fromAlpha="1.0"
99+ android:toAlpha="0"
100+ android:duration="300"/>
101+ </set>
102+ ```
103+ out_from_right.xml
104+
105+ ```
106+ <?xml version="1.0" encoding="utf-8"?>
107+
108+ <translate xmlns:android="http://schemas.android.com/apk/res/android"
109+ android:duration="500"
110+ android:fromXDelta="0"
111+ android:fromYDelta="0"
112+ android:toXDelta="100%p"
113+ android:toYDelta="0" >
114+
115+ </translate>
116+ ```
117+
118+ in_from_left.xml
119+
120+ ```
121+ <?xml version="1.0" encoding="utf-8"?>
122+
123+ <translate xmlns:android="http://schemas.android.com/apk/res/android"
124+ android:duration="500"
125+ android:fromXDelta="-100%p"
126+ android:fromYDelta="0"
127+ android:toXDelta="0"
128+ android:toYDelta="0" >
129+
130+ </translate>
131+ ```
132+ out_from_left.xml
133+
134+ ```
135+ <?xml version="1.0" encoding="utf-8"?>
136+
137+ <translate xmlns:android="http://schemas.android.com/apk/res/android"
138+ android:duration="500"
139+ android:fromXDelta="0"
140+ android:fromYDelta="0"
141+ android:toXDelta="-100%p"
142+ android:toYDelta="0" >
143+
144+ </translate>
145+ ```
146+
147+ in_from_right.xml
148+
149+ ```
150+ <?xml version="1.0" encoding="utf-8"?>
151+ <translate xmlns:android="http://schemas.android.com/apk/res/android"
152+ android:duration="500"
153+ android:fromXDelta="100%p"
154+ android:fromYDelta="0"
155+ android:toXDelta="0"
156+ android:toYDelta="0" >
157+
158+ </translate>
159+ ```
160+ fade.xml
161+
162+ ```
163+ <?xml version="1.0" encoding="utf-8"?>
164+
165+ <alpha xmlns:android="http://schemas.android.com/apk/res/android"
166+ android:interpolator="@android:anim/accelerate_interpolator"
167+ android:fromAlpha="0.0" android:toAlpha="1.0"
168+ android:duration="2000" />
169+
170+ ```
171+
172+ hold.xml
173+
174+ ```
175+ <?xml version="1.0" encoding="utf-8"?>
176+
177+ <translate xmlns:android="http://schemas.android.com/apk/res/android"
178+ android:interpolator="@android:anim/accelerate_interpolator"
179+ android:fromXDelta="0" android:toXDelta="0"
180+ android:duration="2000" />
181+
182+ ```
183+ hyperspace_in.xml
184+
185+ ```
186+ <?xml version="1.0" encoding="utf-8"?>
187+
188+ <alpha xmlns:android="http://schemas.android.com/apk/res/android"
189+ android:fromAlpha="0.0"
190+ android:toAlpha="1.0"
191+ android:duration="2000"
192+ android:startOffset="1200" />
193+
194+ ```
195+
196+ hyperspace_out.xml
197+
198+ ```
199+ <?xml version="1.0" encoding="utf-8"?>
200+
201+
202+ <set xmlns:android="http://schemas.android.com/apk/res/android"
203+ android:shareInterpolator="false">
204+ <scale android:interpolator="@android:anim/accelerate_decelerate_interpolator"
205+ android:fromXScale="1.0"
206+ android:fromYScale="1.0"
207+ android:toYScale="0.6"
208+ android:pivotX="50%"
209+ android:pivotY="50%"
210+ android:duration="2000" />
211+
212+ <set android:interpolator="@android:anim/accelerate_interpolator"
213+ android:startOffset="700">
214+ <scale android:fromXScale="1.4"
215+ android:toXScale="0.0"
216+ android:toYScale="0.0"
217+ android:pivotX="50%"
218+ android:pivotY="50%"
219+ android:duration="2000" />
220+ <rotate android:fromDegrees="0"
221+ android:toDegrees="-45"
222+ android:pivotX="50%"
223+ android:pivotY="50%"
224+ android:duration="2000" />
225+ </set>
226+ </set>
227+
228+
229+ ```
230+ alpha_action.xml
231+
232+ ```
233+ <?xml version="1.0" encoding="utf-8"?>
234+ <set xmlns:android="http://schemas.android.com/apk/res/android" >
235+ <alpha android:fromAlpha="1.0"
236+ android:toAlpha="0"
237+ android:duration="2000"/>
238+ <!-- 透明度控制动画效果 alpha
239+ 0.0表示完全透明
240+ 1.0表示完全不透明
241+ 以上值取0.0-1.0之间的float数据类型的数字
242+
243+
244+ -->
245+ </set>
246+ ```
247+ scale_action.xml
248+
249+ ```
250+ <?xml version="1.0" encoding="utf-8"?>
251+ <set xmlns:android="http://schemas.android.com/apk/res/android">
252+ <scale android:interpolator="@android:anim/accelerate_decelerate_interpolator"
253+ android:fromXScale="0.0"
254+ android:toXScale="1.4"
255+ android:fromYScale="0.0"
256+ android:toYScale="1.4"
257+ android:pivotX="50%"
258+ android:pivotY="50%"
259+ android:fillAfter="false"
260+ android:duration="2000" />
261+ </set>
262+ ```
263+
264+ scale_rotate.xml
265+
266+ ```
267+ <?xml version="1.0" encoding="utf-8"?>
268+ <!-- android:duration="@android:integer/config_mediumAnimTime" -->
269+ <set xmlns:android="http://schemas.android.com/apk/res/android"
270+ android:shareInterpolator="false">
271+ <scale android:interpolator="@android:res/anim/accelerate_decelerate_interpolator"
272+ android:fromXScale="0.0"
273+ android:toXScale="1.0"
274+ android:fromYScale="0.0"
275+ android:toYScale="1.0"
276+ android:pivotX="50%"
277+ android:pivotY="50%"
278+ android:duration="2000"
279+ android:repeatCount="0"
280+ android:startOffset="20"></scale>
281+
282+ <rotate android:interpolator="@android:anim/accelerate_decelerate_interpolator"
283+ android:fromDegrees="0"
284+ android:toDegrees="+355"
285+ android:pivotX="50%"
286+ android:pivotY="50%"
287+ android:duration="2000" />
288+ </set>
289+
290+ ```
291+
292+ scale_translate.xml
293+
294+ ```
295+ <?xml version="1.0" encoding="utf-8"?>
296+ <!-- android:duration="@android:integer/config_mediumAnimTime" -->
297+ <set xmlns:android="http://schemas.android.com/apk/res/android"
298+ android:shareInterpolator="false">
299+ <scale android:interpolator="@android:res/anim/accelerate_decelerate_interpolator"
300+ android:fromXScale="0.0"
301+ android:toXScale="1.0"
302+ android:fromYScale="0.0"
303+ android:toYScale="1.0"
304+ android:pivotX="0"
305+ android:pivotY="0"
306+ android:duration="2000"
307+ android:repeatCount="0"
308+ android:startOffset="0"></scale>
309+
310+ <translate android:fromXDelta="0"
311+ android:toXDelta="0"
312+ android:fromYDelta="0"
313+ android:toYDelta="0"
314+ android:duration="2000" />
315+ </set>
316+
317+ ```
318+ scale_translate_rotate.xml
319+
320+ ```
321+ <?xml version="1.0" encoding="utf-8"?>
322+ <!-- android:duration="@android:integer/config_mediumAnimTime" -->
323+ <set xmlns:android="http://schemas.android.com/apk/res/android"
324+ android:shareInterpolator="false">
325+ <scale android:interpolator="@android:res/anim/accelerate_decelerate_interpolator"
326+ android:fromXScale="0.0"
327+ android:toXScale="1.0"
328+ android:fromYScale="0.0"
329+ android:toYScale="1.0"
330+ android:pivotX="50%"
331+ android:pivotY="50%"
332+ android:duration="2000"></scale>
333+
334+ <translate android:interpolator="@android:anim/accelerate_decelerate_interpolator"
335+ android:fromXDelta="120"
336+ android:toXDelta="30"
337+ android:fromYDelta="30"
338+ android:toYDelta="250"
339+ android:duration="2000" />
340+
341+ <rotate android:interpolator="@android:anim/accelerate_decelerate_interpolator"
342+ android:fromDegrees="0"
343+ android:toDegrees="+355"
344+ android:pivotX="50%"
345+ android:pivotY="50%"
346+ android:duration="2000" />
347+ </set>
348+
349+ ```
350+
351+ slide_down_out.xml
352+
353+ ```
354+ <?xml version="1.0" encoding="UTF-8"?>
355+ <set android:interpolator="@android:anim/accelerate_interpolator"
356+ xmlns:android="http://schemas.android.com/apk/res/android">
357+ <translate android:duration="2000"
358+ android:fromYDelta="0.0"
359+ android:toYDelta="100.0%p" />
360+ </set>
361+ ```
362+
363+ wave_scale.xml
364+
365+ ```
366+ <?xml version="1.0" encoding="utf-8"?>
367+
368+ <set xmlns:android="http://schemas.android.com/apk/res/android"
369+ android:interpolator="@android:anim/accelerate_interpolator">
370+ <alpha android:fromAlpha="0.0"
371+ android:toAlpha="1.0"
372+ android:duration="2000" />
373+
374+ <scale android:fromXScale="0.5"
375+ android:toXScale="1.5"
376+ android:fromYScale="0.5"
377+ android:toYScale="1.5"
378+ android:pivotX="50%"
379+ android:pivotY="50%"
380+ android:duration="2000" />
381+
382+ <scale android:fromXScale="1.5"
383+ android:toXScale="1.0"
384+ android:fromYScale="1.5"
385+ android:toYScale="1.0"
386+ android:pivotX="50%"
387+ android:pivotY="50%"
388+ android:startOffset="200"
389+ android:duration="2000" />
390+ </set>
391+
392+ ```
0 commit comments