1. 程式人生 > >Android 幀動畫(Frame Animation) 動畫停止在第一幀

Android 幀動畫(Frame Animation) 動畫停止在第一幀

專案中遇到的問題:

需求: 做一個聊天頁面,要求播放語音時,有一個類似於喇叭的動畫,從小到大不停迴圈,語音播放完,動畫停止在第一幀。當點選正在播放的語音時,語音停止,動畫回覆到第一幀(回覆到第一幀是難點)

實現:用Frame Animation  

可以在Java程式碼中新增每一幀的動畫,也可以建立動畫布局,我用的是建立動畫布局。

1.建立動畫布局,在drawable資料夾下建立佈局imv_anim_bg.xml(名字自己定義):

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" 
    android:oneshot="false">
    <item android:drawable="@drawable/communicaiton_sound_self_03" android:duration="500"/>
    <item android:drawable="@drawable/communicaiton_sound_self_01" android:duration="500"/>
	<item android:drawable="@drawable/communicaiton_sound_self_02" android:duration="500"/>
	<item android:drawable="@drawable/communicaiton_sound_self_03" android:duration="500"/>
</animation-list>

解釋一下:android:oneshot="false"     false:迴圈播放動畫,   true:  只播放一次

2.在佈局中新增ImageView控制元件,設定其背景為上述動畫。

3.在java程式碼中實現動畫的播放,停止,回覆第一幀:

     獲得動畫例項;     

anim = (AnimationDrawable) imv.getBackground();  // anim 為AnimationDrawable物件,imv為ImageView物件,就是要實現動畫效果的ImageView
     獲取動畫例項後就可以實現動畫播放,停止等操作

     動畫播放:

anim.start();
     動畫停止:
anim.stop();    // stop方法實際上只是動畫的暫停方法,當呼叫此方法時,動畫會停止到當前正在播放的那一幀,並不會停止到第一幀,當在此方法之後呼叫start()方法,會繼續下一幀播放

    動畫恢復到第一幀動畫:
        anim.selectDrawable(0);      //選擇當前動畫的第一幀,然後停止
        anim.stop();    

討論:

動畫恢復到第一幀:

   在專案是現實時,剛開始用的方法是anim.setVisible(true,true);  檢視文件發現,setVisible方法的第二個引數是reset,因此設定其為true,目的是實現anim的重置,此方法可用,但是在之後的測試中發現在Lenovo等手機中,系統並不支援此方法。

在之後的調查中發現上述返回第一幀的方法,目前沒有發現不支援此方法的手機

相關推薦

Android 動畫Frame Animation 動畫停止第一

專案中遇到的問題: 需求: 做一個聊天頁面,要求播放語音時,有一個類似於喇叭的動畫,從小到大不停迴圈,語音播放完,動畫停止在第一幀。當點選正在播放的語音時,語音停止,動畫回覆到第一幀(回覆到第一幀是難點) 實現:用Frame Animation   可以在Java程式碼中新

Android 屬性動畫Property Animation 全然解析

顏色 valid 全部 加速度 ext target ng- 點擊 save 轉載請標明出處:http://blog.csdn.net/lmj623565791/article/details/380674751、概述Android提供了幾種動畫類型:View Anima

Android 屬性動畫Property Animation 完全解析 【轉】

轉載請標明出處:http://blog.csdn.net/lmj623565791/article/details/38067475 1、概述 Android提供了幾種動畫型別:View Animation 、Drawable Animation 、Property Anima

Android 屬性動畫Property Animation 完全解析

目錄(?)[+] 1、概述 Android提供了幾種動畫型別:View Animation 、Drawable Animation 、Property Animation 。View Animation相當簡單,不過只能支援簡單的縮放、平移、旋轉、透明度基本的動畫,

Android過渡動畫Transition Animation

本篇部落格記錄一下Android中過渡動畫的用法。 過渡動畫是Android 4.4引入的新的動畫框架,它本質上仍是屬性動畫, 但對屬性動畫做了一層封裝,以方便開發者實現Activity或者View的過渡動畫效果。 和屬性動畫相比,過渡動畫最大的不同是需要

Android 屬性動畫Property Animation

1、概述 Android提供了幾種動畫型別:View Animation 、Drawable Animation 、Property Animation 。View Animation相當簡單,不過只能支援簡單的縮放、平移、旋轉、透明度基本的動畫,且有一定的侷限

屬性動畫property animation &重複執行

Android中的動畫分為檢視動畫(View Animation)即Tween Animation(補間動畫)、屬性動畫(Property Animation)以及Drawable動畫即Frame Animation(幀動畫)。從Android 3.0(API

iOS動畫Core Animation使用

#import <Foundation/Foundation.h> @interface AnimationManager : NSObject /* 閃爍動畫 * time:閃爍間隔 * repeatCount = MAXFLOAT(永久閃爍)重複次數 */ + (CABasic

iOS動畫Core Animation總結

一、簡介 iOS動畫主要是指Core Animation框架。官方使用文件地址為:Core Animation Guide。Core Animation是iOS和macOS平臺上負責圖形渲染與動畫的基礎框架。Core Animation可以作用與動畫檢視或者其他可視元素,

中繼frame-relay

與私有或租用線路相比,幀中繼提供更高的頻寬、可靠性和彈性。由於所需的裝置較少,複雜性較低,並且更容易實現,因此幀中繼可以降低網路的成本。由於以上原因,幀中繼已成為世界上應用最廣泛的 WAN 技術。 LAN 邊緣的 DTE 裝置與運營商邊緣的 DCE 裝置之間的幀中繼連線包含一

Android 學習之逐動畫Frame

http sta ram override start pub fill creat 代碼 幀動畫就是將一些列圖片。依次播放。利用肉眼的“視覺暫留”的原理,給用戶的感覺是動畫的錯覺,逐幀動畫的原理和早期的電影原理是一樣的。 a:須要定義逐幀動畫,能夠通過代碼定義。也能夠

Android三種動畫View Animation(補間動畫) 、Drawable Animation(動畫) 、Property Animation(屬性動畫)

轉載:http://blog.csdn.net/lmj623565791/article/details/38092093 三種動畫的優缺點: (1)Frame Animation(幀動畫)主要用於播放一幀幀準備好的圖片,類似GIF圖片,優點是使用簡單

筆記八 :EgretH5通用MVC框架的入門操作:製作並播放動畫UI部分

前言:幀動畫是遊戲中最常用的的兩種動畫播放形式之一,其中一種是骨骼動畫,一種就是幀動畫了,在H5遊戲中,幀動畫一般用於UI介面的操作動畫,人物技能,特效什麼的。本筆記基於通用MVC框架,以及“筆記一”中的scene搭建的範例,基於原始碼我的資源中的《筆記一到筆記七原始碼》,最

Android】屬性動畫基本用法

1、前言 在我們體驗一款APP時,炫酷的動畫往往能讓使用者體驗大幅度提升。想當年我剛學Android的時候,無意中看到蘑菇街購物車的動畫效果,把我給激動得,非要在自己的APP中加入那動畫,記得當時用費了好大的勁...不提了,說多了都是淚... 先了解下,目前可以實現動畫的

Android今日頭條微頭條點贊動畫

前言 設計很開心,又找到一個好看的效果。 開發很痛苦,又要百度找效果。納尼!!!沒找到!!! o(TωT)o 設計直接把原效果給我看,讓我抄… 預覽 APK下載 思路

android字型閃爍動畫執行緒

android字型閃爍動畫,使用執行緒和Timer實現 public class ActivityMain extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCre

Android動畫Frame Animation

在開始例項講解之前,先引用官方文件中的一段話: Frame動畫是一系列圖片按照一定的順序展示的過程,和放電影的機制很相似,我們稱為逐幀動畫。Frame動畫可以被定義在XML檔案中,也可以完全編碼實現。 如果被定義在XML檔案中,我們可以放置在/res下的anim或drawable目錄中(/res/[ani

單頁面跳轉添加返回和跳轉動畫仿app 只對單頁面和跳轉有用,我用的是angualr,有不會的可以私信問我。

hist page func margin consola color -s tar pla p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #596972 } p.p2 { mar

Qt開場動畫gif效果的實現

    Qt自己提供了一個開場動畫的類QSplashScreen,可以實現簡單的圖片開場的效果,但是是靜態的圖片。 Qt播放gif格式圖片是利用的QMovie實現的。因此利用QMoviee和QTimer,每隔一段時間將QSplashScreen重繪一次,來實現gi

vue——32-動畫-列表動畫transition-group

css li { border: 1px dashed red; margin: 5px; line-height: 35px; list-style: none;