4個動畫效果 轉

  1 動畫類型
  2 
  3 Android的animation由四種類型組成
  4 
  5   
  6 1.png (12.8 KB, 下載次數: 464)
  7 下載附件  保存到相冊
  8 2011-4-23 22:23 上傳
  9 Android動畫模式
 10 
 11 Animation主要有兩種動畫模式:
 12 一種是tweened animation(漸變更畫) 
 13 XML中
 14 JavaCode
 15 alpha
 16 AlphaAnimation
 17 scale
 18 ScaleAnimation
 19 
 20 
 21 一種是frame by frame(畫面轉換動畫) 
 22 XML中
 23 JavaCode
 24 translate
 25 TranslateAnimation
 26 rotate
 27 RotateAnimation
 28 
 29 
 30 
 31 如何在XML文件中定義動畫
 32 
 33 ① 打開Eclipse,新建Android工程
 34 ② 在res目錄中新建anim文件夾
 35 ③ 在anim目錄中新建一個myanim.xml(注意文件名小寫)
 36 ④ 加入XML的動畫代碼
 37 
 38 <?xml version="1.0" encoding="utf-8"?>
 39 <set xmlns:android="http://schemas.android.com/apk/res/android">
 40   <alpha/>
 41   <scale/>
 42   <translate/>
 43   <rotate/>
 44 </set>
 45 複製代碼
 46 
 47 Android動畫解析--XML
 48 
 49 <alpha>
 50 <?xml version="1.0" encoding="utf-8"?>
 51 <set xmlns:android="http://schemas.android.com/apk/res/android" >
 52 <alpha
 53 android:fromAlpha="0.1"
 54 android:toAlpha="1.0"
 55 android:duration="3000"
 56 /> 
 57 <!-- 透明度控制動畫效果 alpha
 58         浮點型值:
 59             fromAlpha 屬性爲動畫起始時透明度
 60             toAlpha   屬性爲動畫結束時透明度
 61             說明: 
 62                 0.0表示徹底透明
 63                 1.0表示徹底不透明
 64             以上值取0.0-1.0之間的float數據類型的數字
 65         
 66         長整型值:
 67             duration  屬性爲動畫持續時間
 68             說明:     
 69                 時間以毫秒爲單位
 70 -->
 71 </set>
 72 複製代碼
 73 <scale>
 74 <?xml version="1.0" encoding="utf-8"?>
 75 <set xmlns:android="http://schemas.android.com/apk/res/android">
 76    <scale  
 77           android:interpolator=
 78                      "@android:anim/accelerate_decelerate_interpolator"
 79           android:fromXScale="0.0"
 80           android:toXScale="1.4"
 81           android:fromYScale="0.0"
 82           android:toYScale="1.4"
 83           android:pivotX="50%"
 84           android:pivotY="50%"
 85           android:fillAfter="false"
 86           android:duration="700" />
 87 </set>
 88 <!-- 尺寸伸縮動畫效果 scale
 89        屬性:interpolator 指定一個動畫的插入器
 90         在我試驗過程當中,使用android.res.anim中的資源時候發現
 91         有三種動畫插入器:
 92             accelerate_decelerate_interpolator  加速-減速 動畫插入器
 93             accelerate_interpolator        加速-動畫插入器
 94             decelerate_interpolator        減速- 動畫插入器
 95         其餘的屬於特定的動畫效果
 96       浮點型值:
 97          
 98             fromXScale 屬性爲動畫起始時 X座標上的伸縮尺寸    
 99             toXScale   屬性爲動畫結束時 X座標上的伸縮尺寸     
100         
101             fromYScale 屬性爲動畫起始時Y座標上的伸縮尺寸    
102             toYScale   屬性爲動畫結束時Y座標上的伸縮尺寸    
103         
104             說明:
105                  以上四種屬性值    
106     
107                     0.0表示收縮到沒有 
108                     1.0表示正常無伸縮     
109                     值小於1.0表示收縮  
110                     值大於1.0表示放大
111         
112             pivotX     屬性爲動畫相對於物件的X座標的開始位置
113             pivotY     屬性爲動畫相對於物件的Y座標的開始位置
114         
115             說明:
116                     以上兩個屬性值 從0%-100%中取值
117                     50%爲物件的X或Y方向座標上的中點位置
118         
119         長整型值:
120             duration  屬性爲動畫持續時間
121             說明:   時間以毫秒爲單位
122 
123         布爾型值:
124             fillAfter 屬性 當設置爲true ,該動畫轉化在動畫結束後被應用
125 -->
126 複製代碼
127 
128 <translate>
129 <?xml version="1.0" encoding="utf-8"?>
130 <set xmlns:android="http://schemas.android.com/apk/res/android">
131 <translate
132 android:fromXDelta="30"
133 android:toXDelta="-80"
134 android:fromYDelta="30"
135 android:toYDelta="300"
136 android:duration="2000"
137 />
138 <!-- translate 位置轉移動畫效果
139         整型值:
140             fromXDelta 屬性爲動畫起始時 X座標上的位置    
141             toXDelta   屬性爲動畫結束時 X座標上的位置
142             fromYDelta 屬性爲動畫起始時 Y座標上的位置
143             toYDelta   屬性爲動畫結束時 Y座標上的位置
144             注意:
145                      沒有指定fromXType toXType fromYType toYType 時候,
146                      默認是以本身爲相對參照物             
147         長整型值:
148             duration  屬性爲動畫持續時間
149             說明:   時間以毫秒爲單位
150 -->
151 </set>
152 複製代碼
153 <rotate>
154 <?xml version="1.0" encoding="utf-8"?>
155 <set xmlns:android="http://schemas.android.com/apk/res/android">
156 <rotate 
157         android:interpolator="@android:anim/accelerate_decelerate_interpolator"
158         android:fromDegrees="0" 
159         android:toDegrees="+350"         
160         android:pivotX="50%" 
161         android:pivotY="50%"     
162         android:duration="3000" />  
163 <!-- rotate 旋轉動畫效果
164        屬性:interpolator 指定一個動畫的插入器
165              在我試驗過程當中,使用android.res.anim中的資源時候發現
166              有三種動畫插入器:
167                 accelerate_decelerate_interpolator   加速-減速 動畫插入器
168                 accelerate_interpolator               加速-動畫插入器
169                 decelerate_interpolator               減速- 動畫插入器
170              其餘的屬於特定的動畫效果
171                            
172        浮點數型值:
173             fromDegrees 屬性爲動畫起始時物件的角度    
174             toDegrees   屬性爲動畫結束時物件旋轉的角度 能夠大於360度   
175 
176         
177             說明:
178                      當角度爲負數——表示逆時針旋轉
179                      當角度爲正數——表示順時針旋轉              
180                      (負數from——to正數:順時針旋轉)   
181                      (負數from——to負數:逆時針旋轉) 
182                      (正數from——to正數:順時針旋轉) 
183                      (正數from——to負數:逆時針旋轉)       
184 
185             pivotX     屬性爲動畫相對於物件的X座標的開始位置
186             pivotY     屬性爲動畫相對於物件的Y座標的開始位置
187                 
188             說明:        以上兩個屬性值 從0%-100%中取值
189                          50%爲物件的X或Y方向座標上的中點位置
190 
191         長整型值:
192             duration  屬性爲動畫持續時間
193             說明:       時間以毫秒爲單位
194 -->
195 </set>
196 複製代碼
197 如何使用XML中的動畫效果
198 public static Animation loadAnimation (Context context, int id) 
199 //第一個參數Context爲程序的上下文    
200 //第二個參數id爲動畫XML文件的引用
201 //例子:
202 myAnimation= AnimationUtils.loadAnimation(this,R.anim.my_action);
203 //使用AnimationUtils類的靜態方法loadAnimation()來加載XML中的動畫XML文件
204 複製代碼
205 如何在Java代碼中定義動畫
206 //在代碼中定義 動畫實例對象
207 private Animation myAnimation_Alpha;
208 private Animation myAnimation_Scale;
209 private Animation myAnimation_Translate;
210 private Animation myAnimation_Rotate;
211     
212     //根據各自的構造方法來初始化一個實例對象
213 myAnimation_Alpha=new AlphaAnimation(0.1f, 1.0f);
214 
215 myAnimation_Scale =new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,
216              Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
217 
218 myAnimation_Translate=new TranslateAnimation(30.0f, -80.0f, 30.0f, 300.0f);
219 
220 myAnimation_Rotate=new RotateAnimation(0.0f, +350.0f,
221                Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);
222 複製代碼
223 
224 Android動畫解析--JavaCode
225 
226 
227 AlphaAnimation
228 
229 ① AlphaAnimation類對象定義
230 private AlphaAnimation myAnimation_Alpha;
231 複製代碼
232 ② AlphaAnimation類對象構造
233 AlphaAnimation(float fromAlpha, float toAlpha) 
234 //第一個參數fromAlpha爲 動畫開始時候透明度
235 //第二個參數toAlpha爲 動畫結束時候透明度
236 myAnimation_Alpha=new AlphaAnimation(0.1f, 1.0f);
237 //說明: 
238 //                0.0表示徹底透明
239 //                1.0表示徹底不透明
240 複製代碼
241 ③ 設置動畫持續時間
242 myAnimation_Alpha.setDuration(5000);
243 //設置時間持續時間爲 5000毫秒
244 複製代碼
245 
246 ScaleAnimation
247 
248 ① ScaleAnimation類對象定義
249 private AlphaAnimation myAnimation_Alpha;
250 複製代碼
251 ② ScaleAnimation類對象構造
252 ScaleAnimation(float fromX, float toX, float fromY, float toY,
253            int pivotXType, float pivotXValue, int pivotYType, float pivotYValue) 
254 //第一個參數fromX爲動畫起始時 X座標上的伸縮尺寸    
255 //第二個參數toX爲動畫結束時 X座標上的伸縮尺寸     
256 //第三個參數fromY爲動畫起始時Y座標上的伸縮尺寸    
257 //第四個參數toY爲動畫結束時Y座標上的伸縮尺寸  
258 /*說明:
259                     以上四種屬性值    
260                     0.0表示收縮到沒有 
261                     1.0表示正常無伸縮     
262                     值小於1.0表示收縮  
263                     值大於1.0表示放大
264 */
265 //第五個參數pivotXType爲動畫在X軸相對於物件位置類型  
266 //第六個參數pivotXValue爲動畫相對於物件的X座標的開始位置
267 //第七個參數pivotXType爲動畫在Y軸相對於物件位置類型   
268 //第八個參數pivotYValue爲動畫相對於物件的Y座標的開始位置
269 myAnimation_Scale =new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,
270              Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
271 複製代碼
272 ③ 設置動畫持續時間
273 myAnimation_Scale.setDuration(700);
274 //設置時間持續時間爲 700毫秒
275 複製代碼
276 TranslateAnimation
277 
278 
279 ① TranslateAnimation類對象定義
280 private AlphaAnimation myAnimation_Alpha;
281 複製代碼
282 ② TranslateAnimation類對象構造
283 TranslateAnimation(float fromXDelta, float toXDelta,
284                        float fromYDelta, float toYDelta) 
285 //第一個參數fromXDelta爲動畫起始時 X座標上的移動位置    
286 //第二個參數toXDelta爲動畫結束時 X座標上的移動位置      
287 //第三個參數fromYDelta爲動畫起始時Y座標上的移動位置     
288 //第四個參數toYDelta爲動畫結束時Y座標上的移動位置
289 複製代碼
290 ③ 設置動畫持續時間
291 myAnimation_Translate.setDuration(2000);
292 //設置時間持續時間爲 2000毫秒
293 複製代碼
294 RotateAnimation
295 ① RotateAnimation類對象定義
296 private AlphaAnimation myAnimation_Alpha;
297 複製代碼
298 ② RotateAnimation類對象構造
299 RotateAnimation(float fromDegrees, float toDegrees, 
300             int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
301 //第一個參數fromDegrees爲動畫起始時的旋轉角度    
302 //第二個參數toDegrees爲動畫旋轉到的角度   
303 //第三個參數pivotXType爲動畫在X軸相對於物件位置類型  
304 //第四個參數pivotXValue爲動畫相對於物件的X座標的開始位置
305 //第五個參數pivotXType爲動畫在Y軸相對於物件位置類型   
306 //第六個參數pivotYValue爲動畫相對於物件的Y座標的開始位置
307 myAnimation_Rotate=new RotateAnimation(0.0f, +350.0f,
308                Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);
309 複製代碼
310 ③ 設置動畫持續時間
311 myAnimation_Rotate.setDuration(3000);
312 //設置時間持續時間爲 3000毫秒
313 複製代碼
314 如何使用Java代碼中的動畫效果
315 
316 使用從View父類繼承過來的方法startAnimation()來爲View或是子類View等等添加一個動畫效果
317 實例應用:   myActionAnimation.zip (81.66 KB, 下載次數: 2302) 
318 動畫效果編程基礎--Animation 電子書   動畫分析.zip (436.31 KB, 下載次數: 1920) 
相關文章
相關標籤/搜索