android開始動畫
㈠ Android 開關機動畫規范
本篇文章主要介紹 Android 開發中的部分知識點,通過閱讀本篇文章,您將收獲以下內容:
開機動畫壓縮包必須以 存儲方式 進行壓縮,否則無法播放開機動畫。
開機動畫壓縮包不能包含 bootanimation 文件夾,必現是如下格式。
開機動畫圖片需要統一 格式 跟 size ,不然因為大小不統一,播放出來很醜。
desc.txt 文件用來定義開機動畫的播放配置。
以 1280* 720 的圖片舉例如下:
前兩位 720 和 1280 分別表示要顯示動畫的 width 和 height .
10 是定義動畫播放的預訂 幀率(FPS) .
這個幀率 FPS 是指:每秒動畫播放的幀數。
此幀數是一個理想值,並不一定代表動畫實際幀率,假設預訂幀率為 FPS_I ,預訂每一幀解析的時間 t_I, 則 t_I=1/FPS_I 。
假設某一幀從解析到渲染耗時為 t_r ,當 t_r<=t_l ,則渲染完這一幀後,動畫這個 thread 會 sleep(t_l-t_r) 的時間,也就說這一幀最後的耗時就 t_l ;
假設某一幀從解析到渲染耗時為 t_r ,當 t_r>t_l ,則渲染完這一幀後,動畫這個 thread 會馬上開始下一幀,也就說這一幀最後的耗時就 t_r 。
所以, desc.txt 內設置的這個幀率並不能代表動畫的實際幀率,實際的幀率是和系統開機的 performance 有關,因此不是說在 desc.txt 設置幀率越大越好,反而容易出現當某一幀耗時較長,就容易給用戶某一幀卡頓的體驗,目前這個 FPS 的值一般設置在 13 左右。
當然,設置 FPS 為 13 並不是說系統的 performance 比較低,本身在開機動畫階段,系統進入 Bootup Android 階段,許多進程需要啟動,系統的主要工作應該集中與開機啟動的進程,因此不建議動畫的圖片過於復雜,導致系統開機的 Performance 變差。
第一個參數p是 google default 的設計,請保留以 p 開頭。
第二個參數 1 表示這一行對應 folder 所需要 循環播放的次數 ,如果是 0 則表示是 無限循環播放 ,直到系統 ready 後通過被動退出。
第三個參數 0 表示這一行對應 folder 裡面的每一幀圖片依次解析渲染完成後,要進入下一個循環,動畫這個線程需要 pause多久 。
第四個參數 folder1 表示對應設置規則的 folder 的 path 。
默認的設計,都是將順序播放的動畫放在一個 folder ,定義這個 folder 所需要循環的次數;在無限循環的 folder 內放置一張圖片,保證動畫沒有收到退出指令的時候,動畫可以一直顯示.
由於循環播放的 folder 中的每幀都是以紋理對象存儲在紋理內存中再 upload 到 GPU 做渲染的,以便下次循環播放不需要重新解析.如果動畫包中的圖片太多或者圖片的 size 很大時,則會導致佔用較多的 memory ,因此為保證開機的 performance ,開機動畫不建議太復雜.
友情推薦:
Android 干貨分享
至此,本篇已結束,如有不對的地方,歡迎您的建議與指正。同時期待您的關注,感謝您的閱讀,謝謝!
㈡ 吐血總結【Android動畫】必知必會
通過AnimationListener可以監聽Animation的運行過程,有三個方法分別是Animation開始的時候調用,完成的時候調用,重復的時候調用。
AnimationSet,動畫集合。 我們最常用的是調用其 addAnimation 將一個個不一樣的動畫組織到一起來,然後調用view 的 startAnimation 方法觸發這些動畫執行。
setAnimation是告訴該控制項我待會要執行什麼動畫,而要執行的的動畫,是需要手動添加的。並且需要父view在動畫快要開啟的時候,調用invalidate。需要一定的條件限制。
而startAnimation告訴該控制項,我要立馬執行該動畫,該動畫就是已經設置好的動畫。調用它時就會立即開始動畫。
參看這篇文章: Android動畫之Interpolator插補器和TypeEvaluator估值器
Property Animation提供了Animator.AnimatorListener和Animator.AnimatorUpdateListener兩個監聽器用於動畫在播放過程中的重要動畫事件。下面是兩個監聽器介面和方法的一些介紹和說明:
上面講到ViewAnimation有許多xml載入,當然PropertyAnimation也可以對應xml載入,位置為 res/animator/
animator.xml
調用就用到了AnimatorInflater類了
組合動畫也可以xml載入
在 Android 3.0 中給 View 增加了一些新的屬性以及相應的 getter、setter 方法。Property Animation系統可以通過修改 View 對象實際的屬性值來實現屏幕上的動畫效果。此外,當屬性值發生變化時,Views 也會自動調用 invalidate() 方法來刷新屏幕。 View 類中新增的便於實現 property 動畫的屬性包括:
1 . 第一個參數:設置目標對象,即操縱的view
2 . 第二個參數:設置操作的動畫的屬性值(見上面講解的動畫屬性值)
3 . 第三個參數:可變數組參數 (初始值,中間值,結束值)。可以有一個到N個,如果是一個值的話默認這個值是動畫過渡值的結束值。如果有N個值,動畫就在這N個值之間過渡。
針對同一個對象多個屬性,同時作用多種動畫
可以調用其playTogether(同時執行)、playSequentially(順序執行)、play、before、with、after 等方法設置動畫的執行順序,然後調用其start 觸發動畫執行。
Android 3.0後,谷歌給View增加animate方法直接驅動屬性動畫。
㈢ Android 12.0 適配——應用啟動動畫
應用啟動時如果在Application中做了很多事務,會導致啟動時有個白屏的時間,體驗十分不好。通常的做法是給Application或者第一個啟動的Activity的主題添加上android:windowBackground屬性來優化體驗。
到了Android 12,官方新增了SplashScreen Api,可為所有應用添加新的啟動動畫,顯示速度十分實時,所以到了Android 12,我們就不必自己添加android:windowBackground屬性,最重要的是它是能向下兼容的。
在Android 12上已經默認使用了SplashScreen,如果不考慮向下兼容的問題,不需要任何配置,系統就會自動使用App的圖標作為SplashScreen的圖標。
這個時候就需要一些適配操作
注意的是必須是在第一個啟動的Activity同目錄的build.gradle中添加依賴
在Style.xml新建一個主題,parent必須為Theme.SplashScreen
windowSplashScreenBackground:啟動動畫的背景
:啟動動畫的圖標
:啟動動畫的時間
postSplashScreenTheme:啟動動畫退出後的啟動頁的主題
在setContentView()之前添加上installSplashScreen()即可
這里我用的是一台11的機器,可以看到效果基本上和12.0差不多,如果不去適配的話11的機器是看不到這個頁面的(請忽略我自己做的圖標)
可以看到適配很簡單,另外可以看到installSplashScreen()是有返回值的,我們可以利用這個值去做一些更強大的事情,例如延長啟動頁面停留時間、設置動畫效果等,這些大家自己去研究。
㈣ 怎麼製作Android手機的開機動畫
先創建一個文件名為bootanimation.zip 一定是這個不能修改,裡麵包含part0, part1文件夾 和desc.txt文件。
1、文檔結構說明:
part文件夾裡面放的是動畫拆分的圖片, 格式為png 大家可以自己製作。desc.txt裡面是播放的設置格式是這樣的:
480 800 15 p 1 0 part0 p 0 0 part1
480 800是指顯示的解析度 寬 高;15是一秒的幀數;p後面的數字是指播放次數0為循環;後面那位數字 一般為0 pause ;
(If pause = 10, it will show the last frame and thensleep 10/fps seconds before continuing with the animation.)
part0為文件夾名。
part0是播放一遍的part1是循環播放直到開機2、製作bootanimation.zip1)首先圖片一定要轉換成PNG格式,建議找到的圖片要和自己機子的解析度一樣,如果不是也可以的 有可能變形注意圖片的大小要統一建立part0 , part1文件夾 放進一組連接的圖片組。2)開始壓縮成ZIP格式名字一定要bootanimation.zip 壓縮方式一定是存儲。3)開始寫desc.txt。
4)將打包好的bootanimation.zip放到system\media\下,重啟。
㈤ 手機如何設置開機動畫
問題一:手機開機動畫怎麼設置 手機開機動畫的設置可以按以下步驟進行:
1、下載zip格式的開機關機素材包。
2、對下載下來的文件重命名為:bootanimation.zip。將該文件放到手機SD卡中。
3、打開手機「re管理器」。進入根目錄/system/media,此時所看到的就是開機關機動畫所在的目錄。
4、選中系統默認的開機關機動畫包,剪切之後放到其他目錄。一旦以後想要恢復默認的開機關機畫面,可以到時候恢復。
5、在剪切的時候,首先要掛在殲銷為讀寫狀態。然後移動到其他目錄,這里放到根目錄。
6、找到之前放到sd卡當中的bootanimation.zip文件。復制該文件放到,進入根目錄/system/media 完成之後,重新啟動手機。此時會看到手機的開機畫面已經變成了,你剛才所下載的開機動畫了。
問題二:安卓手機如何更改開機 關機 動畫 前提:手機要ROOT提權,用R.E.管理器粘貼復制
開機畫面,一般是分為2屏,當然也有3屏的說法,不管怎樣,我這里說得就是最後的一屏,按照bootanimation的字面意思翻譯,大概也就氏薯游是開機動畫的意思,那這就不說第幾屏了,直接用「開機動畫」這詞。
首先,開機動畫的地址:system\media\bootanimation.zip。。。要修改開機動畫就是修改bootanimation這個文件。如果說你的手機里沒有這手迅個文件,那就是說明你用的是官方原始版本的rom開機動畫沒有被修改過,但這不礙事,沒有就放一個進去,到時候想換回最原始的開機畫面,也可以把bootanimation這個文件刪了。官方最原始的開機動畫在system\ framework\framework-res.apk\assets\images裡面,裡面主要是2張圖片,高手可以去研究一下,說不定通過這個文件可以用代碼實現動畫的過程。
接下來,說說bootanimation.zip這個文件的結構。bootanimation裡面主要包含一個desc.txt以及N個文件夾。而文件夾裡面放著的就是你要的開機動畫的圖片。decs.txt的作用就是指導系統如何去執行你的開機畫面。
下面繼續說說desc.txt這個文檔要怎麼寫。
先看例子,如果我的開機動畫要用到2個文件夾,分別是part1和part2,。。。。我希望開機的時候,先把part1裡面的圖片都播放一遍,然後再循環播放part2裡面的文件,直到進入系統。那麼decs.txt文檔的內容應該如下:
320 480 5
p 1 0 part1
p 0 0 part2
就這么多,現在解釋一下這些命令吧。
第一行,320 480是代表你屏幕的解析度,因為我們的胖6是320*480的,這就不多說了。後面的5是說:5幀每秒,不懂的可以這么理解,5是代表一秒鍾播放5張圖片。就這么簡單。
第二行,p 1 0 part1。p應該是play吧,也就是播放的意思。1是播放一次。0是空指令,就是什麼都不做。part1就是說,這條指令是針對part1這個文件夾的。整條指令的意思就是,播放part1裡面的圖片1次,然後什麼都不做,馬上進入下一條指令。
第三行,p 0 0 part2。p依然是播放。第一個0這里是代表循環播放,第二個0和上面第二條指令一樣,代表什麼也不做。part2也就不多說了。
至於為什麼第一個0為什麼是代表循環,只能這么說,這事國際慣例,就像用迅雷的時候,0代表不限制速度一樣,系統規定的,你知道就好,別糾結。
總結公式如下
第一條指令:屏幕的解析度(空格)播放頻率
第二條指令:p(空格)播放次數(空格)後續操作(空格)作用文件夾
第三條指令:同上
第N條指令:同上
屏幕解析度的格式是:寬(空格)高,320 480。。。播放頻率,上面已經說清楚了,至於到底要用多大的數字,視你開機動畫的張數而定,比如說,一共有100張圖片,開機時間是20秒,那麼100/20就是5。
播放次數,1是代表一次,0代表循環播放。如果要播放2次的話,就是就是打個2上去,應該是這樣吧,反正我是沒試過,只試過0和1.後續操作,0代表什麼都不做,直接進入下一條指令。10是代表稍作停頓。
至於文件夾裡面的圖片,比較簡單,首先,糾正一個說法,之前說必須要是png格式,經過我試驗證明,jpg格式的也可以,其他的有待試......>>
問題三:三星手機怎麼設置開機動畫 點擊:shouji56/phone/147047
希望對您有所幫助,不謝,向雷峰同志學習
問題四:安卓手機開機動畫怎麼設置 需要root之後下載一個軟體,我記得需要的文件不是gif,可能還需要轉換後才能添加
問題五:華為手機怎麼設置開機動畫啊 在設置那。
希望採納
問題六:如何關閉手機開機動畫 手機設置裡面,選擇開機方式無
問題七:安卓手機開機畫面和動畫怎麼改,兩個都要改 開機畫面,一般是分為2屏,當然也有3屏的說法,不管怎樣,我這里說得就是最後的一屏,按照bootanimation的字面意思翻譯,大概也就是開機動畫的意思,那這就不說第幾屏了,直接用「開機動畫」這詞。
首先,開機動畫的地址:system\media\bootanimation.zip。。。要修改開機動畫就是修改bootanimation這個文件。如果說你的手機里沒有這個文件,那就是說明你用的是官方原始版本的rom開機動畫沒有被修改過,但這不礙事,沒有就放一個進去,到時候想換回最原始的開機畫面,也可以把bootanimation這個文件刪了。官方最原始的開機動畫在system\ framework\framework-res.apk\assets\images裡面,裡面主要是2張圖片,高手可以去研究一下,說不定通過這個文件可以用代碼實現動畫的過程。
接下來,說說bootanimation.zip這個文件的結構。bootanimation裡面主要包含一個desc.txt以及N個文件夾。而文件夾裡面放著的就是你要的開機動畫的圖片。decs.txt的作用就是指導系統如何去執行你的開機畫面。
下面繼續說說desc.txt這個文檔要怎麼寫。
先看例子,如果我的開機動畫要用到2個文件夾,分別是part1和part2,。。。。我希望開機的時候,先把part1裡面的圖片都播放一遍,然後再循環播放part2裡面的文件,直到進入系統。那麼decs.txt文檔的內容應該如下:
320 480 5
p 1 0 part1
p 0 0 part2
就這么多,現在解釋一下這些命令吧。
第一行,320 480是代表你屏幕的解析度,因為我們的胖6是320*480的,這就不多說了。後面的5是說:5幀每秒,不懂的可以這么理解,5是代表一秒鍾播放5張圖片。就這么簡單。
第二行,p 1 0 part1。p應該是play吧,也就是播放的意思。1是播放一次。0是空指令,就是什麼都不做。part1就是說,這條指令是針對part1這個文件夾的。整條指令的意思就是,播放part1裡面的圖片1次,然後什麼都不做,馬上進入下一條指令。
第三行,p 0 0 part2。p依然是播放。第一個0這里是代表循環播放,第二個0和上面第二條指令一樣,代表什麼也不做。part2也就不多說了。
至於為什麼第一個0為什麼是代表循環,只能這么說,這事國際慣例,就像用迅雷的時候,0代表不限制速度一樣,系統規定的,你知道就好,別糾結。
總結公式如下
第一條指令:屏幕的解析度(空格)播放頻率
第二條指令:p(空格)播放次數(空格)後續操作(空格)作用文件夾
第三條指令:同上
第N條指令:同上
屏幕解析度的格式是:寬(空格)高,320 480。。。播放頻率,上面已經說清楚了,至於到底要用多大的數字,視你開機動畫的張數而定,比如說,一共有100張圖片,開機時間是20秒,那麼100/20就是5。
播放次數,1是代表一次,0代表循環播放。如果要播放2次的話,就是就是打個2上去,應該是這樣吧,反正我是沒試過,只試過0和1.後續操作,0代表什麼都不做,直接進入下一條指令。10是代表稍作停頓。
至於文件夾裡面的圖片,比較簡單,首先,糾正一個說法,之前說必須要是png格式,經過我試驗證明,jpg格式的也可以,其他的有待試驗,不過只支持靜態圖片這點應該是真的,動態圖片同樣有待試驗。其次,關於圖片的尺寸,是不做要......>>
問題八:iPhone怎麼設置開機動畫 前提必須是越獄。然後可以用Cydia,就是用這個下載LogoMe
打開Cydia依次點擊-Sections-System--LogoMe-Install,再Confirm成功安裝,
點擊Return to Cydia按鈕,按下Home鍵返回到Springboard,然後點擊LogoMe圖標。當打開LogoMe時,可能會需要連接到互聯網下載一些所需的文件。一旦文件被下載,按下屏幕底部的Select Logo標簽。然後會讓我們需要為開機畫面輸入一個圖片的地址。
輸完就按下Download按鈕,將指定的Boot Logo下載到LogoMe中。完成之後,您可以選擇屏幕底部的Install Logo標簽。
按下Previre按鈕預覽你下載的Boot Logo(開機畫面),確定它是否是你想要的。
點擊Install按鈕,即可將你指定的那個Boot Logo(開機畫面)安裝到iPhone中。下一次開機時,就會看到畫面已被這個取代啦!
問題九:安卓手機怎麼修改自定義開機動畫 簡易教程:
1、手機必須ROOT了的
2、裝個可以進去系統文件的文件瀏覽器 ,如:RE管理器 (復制覆蓋系統文件時,記得修改 「只讀」 「讀寫」許可權)
3、在你看中的ROM裡面把bootanimation.zip復制出來。bootanimation.zip在哪裡呢?ROM包一般是ZIP格式,先在電腦桌面建個文件夾,把它解壓到那新建文件夾裡面。打開後不外乎就幾個文件夾和文件:
自己動手做過精簡包的人,基本都會,也知道裡面是什麼。具體不詳細說了,回歸主題,bootanimation.zip一般就在system\media 裡面。如果沒有就查看system其他文件夾,bootanimation.zip這樣格式和名字的文件只有一個,但bin裡面的絕對不是,後面再說bin,這個是關乎開機聲音的。
bootanimation.zip裡面裝的就是開機動畫了,裡面基本是由 part文件夾 和 desc文檔 組成,part文件夾放的是png , desc則是運行參數,可以編輯圖象大小、動畫幀、時間頻率什麼的。總之有能力的可以自己製作編輯。 小白們就無視吧。直接拿看中的包裹移花接木就是了
4、把bootanimation.zip復制到SD卡裡面,然後用RE管理器,復制,然後尋找手機系統裡面原帶的bootanimation.zip並覆蓋(記得改讀寫許可權,不然無權覆蓋系統文件),這樣就把開機動畫更換好了。
5、開機動畫很多人都會換,很多地方都有教程,重點來了,怎麼換開機聲音呢?我這里的換並非可以自定義,當然自定義不是不可能,那得會編程。俺只是個小白,只會搬別人編輯好的。留意上圖boot.ogg的文件,這個就是附帶在我要更換的開機動畫的聲音文件。大多數都會把它和bootanimaion.zip放一起的,當然也有例外的,那個就麻煩點,得自己去尋找。然後把它一起復制到手機SD卡,再搬到同樣的位置。
6、重重點來了,就這么把這兩個文件搬到系統,只會有開機動畫,還是不會有聲音滴。。上面提到的bin文件夾,位置是system\bin 在裡面尋找到 bootanimation 文件。把它復制並覆蓋到手機system\bin 裡面的 bootanimation (記得改讀寫許可權,不然無權覆蓋系統文件),這樣就大功告成了 。在bin 裡面的 bootanimation 是說明和引導文,編程方面的,C語言吧,運行編寫之類的。如果你是學編程或懂這方面的,大可以自己動手修改,小白們就像我那樣做移花接木吧~~~
絕對的自定義開機聲,倒不是小白們不能做到的,把自己想要的聲音,名字和格式該成轉化成源聲音文件名字格式,然後覆蓋就可以了。
問題十:如何在linux程序里更改android手機開機動畫 單純的自己改,只要替換就可以了 也可以直接root後進行替換(這是在手機上)。。如果是linux上的話 android開機動畫叫源碼位於frameworks/base/cmds/bootanimation下,這個程序會將/data/local/bootanimation.zip或/system/media/bootanimation.zip裡面的png圖片以動畫的形式播放出來。 看看源碼就知道了。
首先看一下定義的常量:
#define USER_BOOTANIMATION_FILE /data/local/bootanimation.zip
#define SYSTEM_BOOTANIMATION_FILE /system/media/bootanimation.zip
#define SYSTEM_ENCRYPTED_BOOTANIMATION_FILE /system/media/bootanimation-encrypted.zip
BootAnimation::readyToRun()
進入一個if判斷語句
if ((encryptedAnimation &&
(access(SYSTEM_ENCRYPTED_BOOTANIMATION_FILE, R_OK) == 0) &&
(mZip.open(SYSTEM_ENCRYPTED_BOOTANIMATION_FILE) == NO_ERROR)) ||
((access(USER_BOOTANIMATION_FILE, R_OK) == 0) &&
(mZip.open(USER_BOOTANIMATION_FILE) == NO_ERROR)) ||
((access(SYSTEM_BOOTANIMATION_FILE, R_OK) == 0) &&
(mZip.open(SYSTEM_BOOTANIMATION_FILE) == NO_ERROR))) {
mAndroidAnimation = false;
}
BootAnimation::threadLoop()
if (mAndroidAnimation) {
r = Android(); 執行android字體閃動的圖片
} else {
r = movie(); 執行bootanimation.zip中提供的動畫圖片
}
1
==> BootAnimation::Android()會載入images/android-logo-mask.png和images/android-logo-shine.png
==> BootAnimation::movie()會載入bootanimation.zip中的內容
我們下載的源碼里默認是沒有那些個.zip動畫的,所以總會跳到android字體閃動的畫面
所以如果你系那個用.zip的動畫那麼把你做好的動畫拷貝到編譯好對應的目錄下即可,然後執行mak......>>
㈥ Android動畫之ViewPropertyAnimator(專用於view的屬性動畫)
屬性動畫對比原來的視圖動畫有很多的優點,屬性動畫可以對所有的對象做動畫操作,但Android開發中需要做動畫最多的還是View,如果只是對一個view做動畫,很少的幾個屬性還行,如果是對同一個view的十幾個屬性同時做動畫,相信屬性動畫的寫法是比較繁瑣的。ViewPropertyAnimator從名字就可以看出是專用於View的屬性動畫,在API12被提供。ViewPropertyAnimator專用於操作View動畫,語法更加簡潔,使用更加方便。
developer: https://developer.android.google.cn/reference/android/view/ViewPropertyAnimator
如何獲取ViewPropertyAnimator 對象:
ViewPropertyAnimator 沒有構造函數,通過View.animate()方法可以方便的獲取ViewPropertyAnimator 對象,此時獲取的動畫對象就專用於操作當前view。
setDuration(); //設置動畫時長
setInterpolator(); //設置插值器
setStartDelay(); //設置延遲開始時間
start(); //立刻開始動畫
cancel(); //取消動畫
明顯看到圖片先往下走了一段,然後向左的動畫才開始執行。
鏈式操作
ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(2000).translationY(300).scaleX(0.5f);
以上函數的執行,會導致相同動畫的cancle,以上函數都是除了坐標相關都是以view左上角為坐標原點。
方法都比較簡單,下面距幾個列子:
首先利用translationX,translationXBy來區分By的意義:
ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(3000).translationY(300);
ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(3000).translationYBy(300);
translationYBy 可以多次移動View,translationY多次執行沒有效果。
ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(3000).x(100).y(100);
ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(2000).rotation(270);
據觀察withEndAction相當於動畫開始,withStartAction相當於動畫結束。
可以看到可以添加setUpdateListener監聽,但無法通過這個監聽函數監聽到當前動畫的信息,所以這個監聽函數可能用處不大。
Animation動畫概述和執行原理
Android動畫之補間動畫TweenAnimation
Android動畫之逐幀動畫FrameAnimation
Android動畫之插值器簡介和系統默認插值器
Android動畫之插值器Interpolator自定義
Android動畫之視圖動畫的缺點和屬性動畫的引入
Android動畫之ValueAnimator用法和自定義估值器
Android動畫之ObjectAnimator實現補間動畫和ObjectAnimator自定義屬性
Android動畫之ObjectAnimator中ofXX函數全解析-自定義Property,TypeConverter,TypeEvaluator
Android動畫之AnimatorSet聯合動畫用法
Android動畫之LayoutTransition布局動畫
Android動畫之共享元素動畫
Android動畫之ViewPropertyAnimator(專用於view的屬性動畫)
Android動畫之Activity切換動畫overridePendingTransition實現和Theme Xml方式實現
Android動畫之ActivityOptionsCompat概述
Android動畫之場景變換Transition動畫的使用
Android動畫之Transition和TransitionManager使用
Android動畫之圓形揭露動畫Circular Reveal
Android 動畫之 LayoutAnimation 動畫
Android動畫之視圖動畫的缺點和屬性動畫的引入
㈦ 【Android 動畫】動畫詳解之補間動畫(一)
之前很早就想寫寫Android 的動畫,最近剛好有時間,大概聊一聊安卓動畫。
個人習慣將動畫分為:補間動畫(透明度、旋轉、位移、縮放)、幀動畫、和屬性動畫,這一篇,我們先說說補間動畫。
補間動畫這個詞出於flash,在兩個關鍵幀( 可以理解成動畫開始和結束 )中間需要做「補間動畫」,才能實現圖畫的運動;插入補間動畫後兩個關鍵幀之間的插補幀是由計算機自動運算而得到的。
實際上,Android 的補間動畫也是由我們指定動畫開始、動畫結束2個關鍵點,中間部分的動畫由系統完成
在正式開始之前,我們先說下Android 系統的坐標系,屏幕左上角為坐標原點,假如屏幕為1080*1980,那麼左上角為(0,0),右上角為(1080,0),左下角為(0,1980),右下角為(1080,1980)
所有動畫有以下公共屬性,注釋比較詳細,這里就不在詳述了
ScaleAnimation有3種構造方法
我們先看第一種,其起始比例為0,縮放比例為1.4,即放大到1.4倍
效果如下:
第二種,pivotx,pivotY分別代表起始位置的x、y方向的坐標,我們設置為(100,100)
效果如下:
第三種,pivotXType和pivotYType有2種模式,RELATIVE_TO_SELF(相對於自身)和RELATIVE_TO_PARENT(相對於父布局),如果設置這個,pivotx,pivotY的值就應該是0-1的浮點數,這里分別對應xml中的%(自身)和%p(父布局)
TranslateAnimation有2種構造方法,和ScaleAnimation類似
效果如下:
效果如下:
RELATIVE_TO_PARENT
效果如下:
RotateAnimation有3種構造方法
順時針720度
效果如下:
逆時針720度
效果如下:
效果如下:
再來RELATIVE_TO_PARENT
效果如下:
這是什麼鬼???怎麼跑到屏幕外面去了?
原來設置為RELATIVE_TO_PARENT時,旋轉中心x方向應該為該空間離左邊的邊距+父布局寬度/2,y方向同理,而此時,我們布局中紅色的Textview為居中狀態,所以旋轉中心為屏幕右下角。讓我們來看個例子
修改布局如下:
效果如下:
這時,我們看到旋轉中心x方向為離左邊100dp處
AlphaAnimation只有1種構造方法
其中fromAlpha為動畫開始的透明度;toAlpha為動畫結束的透明度
效果如下:
效果如下:
AnimationSet是一個動畫的集合,可以按照添加的順序播放動畫,讓我們來看個例子,通過組合動畫,實現旋轉漸入動畫
效果如下:
到這里,補間動畫就介紹完了
參考資料: 自定義控制項三部曲之動畫篇
㈧ Android 製作逐漸顯示動畫(描邊動畫、矢量動畫VectorDrawble)
Android 系統從5.0開始支持矢量圖,可以通過 Android Studio自帶的 Vector Assert 工具將SVG、PSD 轉成VectorDrawble。
轉化好的VectorDrawblew看起來好像挺復雜,是不是完全看不懂。沒關系,只要轉化的圖形沒有問題,你不用關心其內部數據。
我們直接進入矢量動畫部分。
矢量動畫的實現通過在xml定義<animated-vector>標簽(其對應的Java對象是AnimatedVectorDrawable)實現,如下所示:
可以看到<animated-vector>標簽是主要元素是target,它其實就起到一個橋梁作用,將動畫和VectorDraw中的圖形聯系起來。
比如target1,它將屬性動畫splash_animator_draw和vectorDrawble對象中name等於line1的對象聯系起來,即:動畫將生效在line1對象上。
之前展示了由svg圖片通過Android Studio Vector Assert工具轉換過來的VectorDrawble,裡面的實際上svg畫圖語法,<path>標簽里的pathData包含了畫圖的路徑(坐標)和語法
在實際使用過程中有幾率遇到這樣兩個問題(筆者都遇到過):
其實以上兩個問題都要求你掌握進階知識,svg畫圖語法。
官方svg語法解析: https://www.w3.org/TR/SVG/paths.html
不喜歡看英文,去這篇博客: http://www.jianshu.com/p/a3cb1e23c2c4
對於Android程序員,Lottie的動畫使用很簡單,步驟如下:
1.接入Lottie
從動畫實現上來說,Lottie動畫應該是最簡單的方法了。
Lottie的優點很明顯:
Lottie的缺點:
好了,如果覺得本文對你有幫助,請關注、留言、點贊我,謝謝!