版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
信賴源于專業(yè)Android動畫開發(fā)技術(shù)信賴源于專業(yè)要解決的問題常見動畫分類有哪些?Android中動畫實(shí)現(xiàn)的方式有哪些?信賴源于專業(yè)相關(guān)技術(shù)動畫原理與分類實(shí)現(xiàn)Tween漸變動畫實(shí)現(xiàn)Frame幀動畫信賴源于專業(yè)動畫實(shí)現(xiàn)Tween漸變動畫對場景中對象進(jìn)行圖像變換,如平移、縮放、旋轉(zhuǎn)。Frame幀動畫順序播放事先做好的圖像,如電影。繪制圖片與動畫2D的圖像庫,兩個包分別是android.graphics.drawable和android.view.animation信賴源于專業(yè)實(shí)現(xiàn)方法Android動畫的兩種實(shí)現(xiàn)方法:在XML中配置一個動畫,或者配置多個動畫,然后在代碼中加載,如下代碼所示:拋開XML,在代碼中直接定義一個動畫,如下所示:myAnimation_Alpha=AnimationUtils.loadAnimation(R.anim.alpha_action);AnimationmyAnimation_Alpha=newAlphaAnimation(0.1f,1.0f);信賴源于專業(yè)TweenTween動畫效果的變換主要有以下幾種:AlphaAnimation 透明度改變RotateAnimation 旋轉(zhuǎn)ScaleAnimation 縮放TranslateAnimation 平移信賴源于專業(yè)Tween使用XML配置動畫時可以使用如下幾類標(biāo)簽:<alpha> 漸變透明度動畫效果<scale> 漸變尺寸伸縮動畫效果<translate> 畫面轉(zhuǎn)換位置移動動畫效果<rotate> 畫面轉(zhuǎn)移旋轉(zhuǎn)動畫效果信賴源于專業(yè)TweenXML中配置漸變透明動畫效果的代碼fromAlpha/toAlpha屬性為動畫起始/結(jié)束時透明度;透明度的值取0.0-1.0之間的float類型數(shù)據(jù),0.0表示完全透明,1.0表示完全不透明duration
屬性為動畫持續(xù)時間
,毫秒為單位<!--透明--><alphaandroid:fromAlpha=”0.1″android:toAlpha=”1.0″android:duration=”3000″/>信賴源于專業(yè)TweenXML中配置漸變尺寸伸縮動畫效果的代碼<!--縮放--> <scaleandroid:interpolator=“@android:anim/accelerate_decelerate_interpolator”android:fromXScale=”0.0″ android:toXScale=”1.4″ android:fromYScale=”0.0″ android:toYScale=”1.4″ android:pivotX=”50%” android:pivotY=”50%” android:fillAfter=”false” android:startOffset=“700” android:duration=”700″/>信賴源于專業(yè)TweenXML中配置漸變尺寸伸縮動畫效果accelerate_decelerate_interpolator
是加速-減速動畫插入器fromXScale/fromYScale(toXScale/toYScale)動畫起始(結(jié)束)時X、Y坐標(biāo)的伸縮度,0.0表示收縮到?jīng)]有,1.0表示無伸縮,值小于1.0表示收縮,值大于1.0表示放大pivotX[float]/pivotY[float]為動畫相對于物件的X、Y坐標(biāo)的開始位置,從0%-100%中取值信賴源于專業(yè)TweenXML中配置畫面轉(zhuǎn)換位置移動動畫效果代碼fromXDelta/fromYDelta(toXDelta/toYDelta)動畫起始(結(jié)束)時X,Y坐標(biāo)上的位置<!--平移--><translate
android:fromXDelta="30"
android:toXDelta="-80"
android:fromYDelta="30"
android:toYDelta="300"
android:duration="2000"
/>
信賴源于專業(yè)TweenXML中配置畫面轉(zhuǎn)移旋轉(zhuǎn)動畫效果代碼fromDegrees動畫起始時物件的角度,toDegrees動畫結(jié)束時物件旋轉(zhuǎn)的角度,可大于360度,為負(fù)(正)數(shù)表示逆(順)時針旋轉(zhuǎn)<!--旋轉(zhuǎn)--><rotate android:interpolator=”@android:anim/accelerate_decelerate_interpolator” android:fromDegrees=”0″ android:toDegrees=”+350″ android:pivotX=”50%” android:pivotY=”50%” android:duration=”3000″/>信賴源于專業(yè)TweenJava代碼中直接定義動畫的步驟首先,利用AlphaAnimation、RotateAnimation、ScaleAnimation、TranslateAnimationScaleAnimation創(chuàng)建動畫接下來,當(dāng)創(chuàng)建完成后,需要用setDuration方法設(shè)置動畫的時間最后,使用startAnimation方法播放動畫信賴源于專業(yè)TweenJava代碼中直接定義scale()動畫代碼如下publicbooleanscale(){ //創(chuàng)建Scale動畫 Scale=newScaleAnimation(0.0f,1.0f,0.0f,1.0f, Animation.RELATIVE_TO_SELF,0.5f, Animation.RELATIVE_TO_SELF,0.5f); //設(shè)置動畫的時間 Scale.setDuration(2000); //開始播放動畫 this.startAnimation(Scale); returntrue;}信賴源于專業(yè)TweenJava代碼中直接定義translate()動畫如下publicbooleantranslate(){ //創(chuàng)建Translate動畫 Translate=newTranslateAnimation(10,150,10,150); //設(shè)置動畫的時間 Translate.setDuration(1000); //開始播放動畫 this.startAnimation(Translate); returntrue;}信賴源于專業(yè)代碼實(shí)現(xiàn)Tween動畫1/*裝載資源*/BitmapmBitQQmBitQQ=((BitmapDrawable) getResources().getDrawable(R.drawable.qq)).getBitmap();/*繪制圖片*/canvas.drawBitmap(mBitQQ,0,0,null);
/*創(chuàng)建Alpha動畫*/privateAnimationmAnimationAlpha=newAlphaAnimation(0.1f,1.0f);/*設(shè)置動畫的時間*/mAnimationAlpha.setDuration(3000);/*開始播放動畫*/this.startAnimation(mAnimationAlpha);
/*創(chuàng)建Scale動畫*/privateAnimation mAnimationScale =newScaleAnimation(0.0f,1.0f,0.0f,1.0f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);/*設(shè)置動畫的時間*/mAnimationScale.setDuration(500);/*開始播放動畫*/this.startAnimation(mAnimationScale);信賴源于專業(yè)代碼實(shí)現(xiàn)Tween動畫2/*創(chuàng)建Translate動畫*/privateAnimationmAnimationTranslate=newTranslateAnimation(10,100,10,100);/*設(shè)置動畫的時間*/mAnimationTranslate.setDuration(1000);/*開始播放動畫*/this.startAnimation(mAnimationTranslate);
/*創(chuàng)建Rotate動畫*/privateAnimationmAnimationRotate=newRotateAnimation(0.0f,+360.0f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);/*設(shè)置動畫的時間*/mAnimationRotate.setDuration(1000);/*開始播放動畫*/this.startAnimation(mAnimationRotate); 信賴源于專業(yè)代碼實(shí)現(xiàn)Tween動畫:main.xml<LinearLayoutxmlns:android=""android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/hello"/><Buttonandroid:id="@+id/AlphaAnimation"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Alpha動畫"/><Buttonandroid:id="@+id/ScaleAnimation"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Scale動畫"/><Buttonandroid:id="@+id/TranslateAnimation"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Translate動畫"/><Buttonandroid:id="@+id/RotateAnimation"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Rotate動畫"/></LinearLayout>**
案例AnimationDemo信賴源于專業(yè)XML布局實(shí)現(xiàn)Tween動畫/*裝載動畫布局*/mAnimationAlpha=AnimationUtils.loadAnimation(mContext,R.anim.alpha_animation);/*開始播放動畫*/this.startAnimation(mAnimationAlpha);/*裝載動畫布局*/mAnimationScale=AnimationUtils.loadAnimation(mContext,R.anim.scale_animation);this.startAnimation(mAnimationScale);/*裝載動畫布局*/mAnimationTranslate=AnimationUtils.loadAnimation(mContext,R.anim.translate_animation);this.startAnimation(mAnimationTranslate);/*裝載動畫布局*/mAnimationRotate=AnimationUtils.loadAnimation(mContext,R.anim.rotate_animation);this.startAnimation(mAnimationRotate); 信賴源于專業(yè)R.anim.alpha_animation<setxmlns:android=""><alpha android:fromAlpha="0.1" android:toAlpha="1.0" android:duration="2000"/></set>信賴源于專業(yè)R.anim.scale_animation<setxmlns:android=""><scaleandroid:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="0.0"android:toXScale="1.0"
android:fromYScale="0.0"android:toYScale="1.0"
android:pivotX="50%"android:pivotY="50%"
android:fillAfter="false"android:duration="500"/></set>信賴源于專業(yè)R.anim.translate_animation<setxmlns:android=""><translate android:fromXDelta="10" android:toXDelta="100" android:fromYDelta="10" android:toYDelta="100" android:duration="1000"/></set>信賴源于專業(yè)R.anim.rotate_animation<setxmlns:android=""><rotateandroid:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromDegrees="0"android:toDegrees="+360"
android:pivotX="50%"android:pivotY="50%"
android:duration="1000"/></set>**
案例AnimationDemo2信賴源于專業(yè)代碼實(shí)現(xiàn)Frame動畫 /*實(shí)例化AnimationDrawable對象*/ privateAnimationDrawableframeAnimation=newAnimationDrawable(); /*裝載資源*/ //這里用一個循環(huán)了裝載所有名字類似的資源,如“a1.......15.png”的圖片
for(inti=1;i<=15;i++){ intid=getResources().getIdentifier("a"+i,"drawable", mContext.getPackageName()); DrawablemBitAnimation=getResources().getDrawable(id); /*為動畫添加一幀*/ //參數(shù)mBitAnimation是該幀的圖片
//參數(shù)500是該幀顯示的時間,按毫秒計(jì)算
frameAnimation.addFrame(mBitAnimation,500); } /*設(shè)置播放模式是否循環(huán)false表示循環(huán)而true表示不循環(huán)*/
frameAnimation.setOneShot(false); /*設(shè)置本類將要顯示這個動畫*/ this.setBackgroundDrawable(frameAnimation); /*開始播放動畫*/
frameAnimation.start();**案例AnimationDrawableDemo信賴源于專業(yè)XML實(shí)現(xiàn)Frame動畫/*定義AnimationDrawable動畫對象*/privateAnimationDrawableframeAnimation=null;/*定義一個ImageView用來顯示動畫*/ImageViewimg=newImageView(mContext);/*裝載動畫布局文件*/img.setBackgroundResource(R.anim.frameanimation); /*構(gòu)建動畫*/privateAnimationDrawableframeAnimation=(AnimationDrawable)img.getBackground();/*設(shè)置是否循環(huán)*/frameAnimation.setOneShot(false);/*設(shè)置該類顯示的動畫*/this.setBackgroundDrawable(frameAnimation);/*開始播放動畫*/frameAnimation.start();信賴源于專業(yè)frameanimation.xml<animation-listxmlns:android=""android:oneshot="false"><itemandroid:drawable="@drawable/a1"android:duration="500"/><itemandroid:drawable="@drawable/a2"android:duration="500"/><itemandroid:drawable="@drawable/a3"android:duration="500"/><itemandroid:drawable="@drawable/a4"android:duration="500"/><itemandroid:drawable="@drawable/a5"android:duration="500"/><itemandroid:drawable="@drawable/a6"android:duration="500"/><itemandroid:drawable="@drawable/a7"android:duration="500"/><itemandroid:drawable="@drawable/a8"android:duration="500"/><itemandroid:drawable="@drawable/a9"android:duration="500"/><itemandroid:drawable="@drawable/a10"android:duration="500"/><itemandroid:drawable="@drawable/a11"android:duration="500"/><itemandroid:drawable="@drawable/a12"android:duration="500"/><itemandroid:drawable="@drawable/a13"android:duration="500"/><itemandroid:drawable="@drawable/a14"android:duration="500"/><itemandroid:drawable="@drawable/a15"android:duration="500"/></animation-list>**案例AnimationDrawableDemo2信賴源于專業(yè)Frame在XML中定義Frame動畫,每個節(jié)點(diǎn)定義一幀動畫,包括此幀動畫的資源和持續(xù)時間,如下然后在代碼中用方法setBackgroundResource(R.anim.frameanimation)即可裝載布局中定義的動畫<animation-list xmlns:android=”” android:oneshot=”true”> <itemandroid:drawable=”@drawable/a1″android:duration=”500″/> <itemandroid:drawable=”@drawable/a2″android:duration=”500″/> <itemandroid:drawable=”@drawable/a3″android:duration=”500″/> <itemandroid:drawable=”@drawable/a4″android:duration=”500″/> <itemandroid:drawable=”@drawable/a5″android:duration=”500″/> </animation-list>信賴源于專業(yè)FrameJava代碼中直接定義Frame動畫首先,創(chuàng)建一個AnimationDrawable對象來表示Frame動畫接下來,通過addFrame方法把圖像的每一幀顯示內(nèi)容添加進(jìn)去即可信賴源于專業(yè)FrameJava代碼中直接定義Frame動畫frameAnimation=newAnimationDrawable(); //裝載動畫各個幀for(inti=1;i<=num;i++){ intid=getResources().getIdentifier(name1+i,"drawable",context.getPackageName()); drawable=getResources().get
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年焦炭采購與銷售合同
- 大班秋天語言教案分析
- 股權(quán)轉(zhuǎn)讓協(xié)議書模板集錦8篇
- 保健工作計(jì)劃模板集合八篇
- 初一年級上冊語文教學(xué)計(jì)劃
- 大學(xué)生畢業(yè)自我鑒定(15篇)
- 小學(xué)體育個人工作計(jì)劃
- 酒店前臺的實(shí)習(xí)報(bào)告范文十篇
- 做教師的心得體會
- 業(yè)務(wù)員半年工作總結(jié)15篇
- 防沖撞升降柱安裝合同
- 專題21 現(xiàn)在分詞(五年真題+八省模擬+寫作升格)【含答案解析】
- 培訓(xùn)學(xué)校銷售分析和總結(jié)
- 房產(chǎn)行業(yè)智慧房產(chǎn)交易與服務(wù)平臺
- 規(guī)培醫(yī)師年度述職報(bào)告
- 公轉(zhuǎn)私提額合同范例
- 浙江省溫州市第二中學(xué)2024-2025學(xué)年上學(xué)期九年級英語10月月考試題
- 急性ST抬高型心肌梗死溶栓指南課件
- 【基于單片機(jī)控制的數(shù)字鐘設(shè)計(jì)(論文)10000字】
- 央國企信創(chuàng)化與數(shù)字化轉(zhuǎn)型規(guī)劃實(shí)施
- 會計(jì)學(xué)原理期末測試練習(xí)題及答案
評論
0/150
提交評論