android 播放gif動態圖片

2020-12-12 電子產品世界

android不推薦使用gif圖片,一般都是png的,對於gif的圖片解析比較消耗資源,但是對於一些動態gif圖片的播放,如果比較小的話還是可以的,要是大的話,建議還是把gif圖片轉換成一幀一幀的png圖片,然後通過animation播放。

本文引用地址:http://www.eepw.com.cn/article/201609/305007.htm

對於小的gif動態圖片,可以通過Movie來播放,代碼如下:

public class TestAvtivity extends Actitvity

{

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(new CustomGifView(mContext));

}

class CustomGifView extends View {

public CustomGifView(Context context) {

super(context);

if(g == 1)

{

mMovie = Movie.decodeStream(getResources().openRawResource(

R.drawable.praise1));

}else if(g == 2)

{

mMovie = Movie.decodeStream(getResources().openRawResource(

R.drawable.praise2));

}else

{

mMovie = Movie.decodeStream(getResources().openRawResource(

R.drawable.praise3));

}

}

public void onDraw(Canvas canvas) {

long now = android.os.SystemClock.uptimeMillis();

if (mMovieStart == 0) { // first time

mMovieStart = now;

}

if (mMovie != null) {

int dur = mMovie.duration();

if (dur == 0) {

dur = 1000;

}

int relTime = (int) ((now - mMovieStart) % dur);

mMovie.setTime(relTime);

mMovie.draw(canvas, 0, 0);

invalidate();

}

}

}

}

方法說明:

decodeByteArray(byte[] data, int offset, int length)

decodeFile(String pathName)

decodeStream(InputStream is)

三種不同的靜態方法來獲取Movie對象。三種方式的原理其實都一樣,都是讀入字節流來解碼創建Movie對象。decodeByteArray是從一個已經存在的字節數組中創建,decodeFile是從一個文件讀入字節流來創建。

draw(Canvas canvas, float x, float y)

draw(Canvas canvas, float x, float y, Paint paint)

繪製動畫幀。

它們其實還是調用Canvas的drawBitmap來繪製幀的。

duration()

動畫持續的時間,也就是完成一次動畫播放的時間。

isOpaque()

是不是不透明

setTime(int relativeMilliseconds)

設置相對本次播放第一幀時間,根據這個時間來決定顯示第幾幀。

例如:

int relTime=(int)((now – moviestart)%movie.duration());

now:系統當前時刻

moviestart:動畫開始的時間

movie.duration:動畫持續的時間,也就是完成一次動畫的時間

注意這是取餘操作,這才能算出當前這次重複播放的第一幀的時間

我一開始播放gif的時候,發現出現了很多雪花,畫面很不清楚,後來使用apiDemo裡面的gif圖片發現沒有問題,所以斷定是gif格式的問題,從網上查發現,把gif圖片用Adobe ImageReady打開,然後在每一幀上右擊選擇恢復為背景,之後就可以了。

如果gif圖片過大,建議還是把圖片拆分成一張張的png圖片然後通過Animation播放,代碼如下:

在res目錄下新建anim動畫文件夾裡面創建xml文件game_anim_lalian,寫下如下代碼

animation-list android:oneshot=false

xmlns:android=http://schemas.android.com/apk/res/android>

item android:duration=150 android:drawable=@drawable/xiu0

/>

item android:duration=150 android:drawable=@drawable/xiu1

/>

item android:duration=150 android:drawable=@drawable/xiu2

/>

item android:duration=150 android:drawable=@drawable/xiu3

/>

/animation-list>

java代碼:

private AnimationDrawable animDown = new AnimationDrawable();

private ImageView imgGameWord;

imgGameWord = (ImageView) this.findViewById(R.id.imgGameWord);

imgGameWord.setBackgroundResource(R.drawable.game_anim_lalian);

animDown = (AnimationDrawable) imgGameWord.getBackground();

private void startAnim_Lalian()

{

new Thread()

{

@Override

public void run()

{

super.run();

myHandler.post(new Runnable() {

@Override

public void run() {

if(animDown.isRunning())

{

animDown.stop();

}

animDown.start();

animDown.setOneShot(true);//設置是否只播放一遍

}

});

}

}.start();

}

private void stopAnim_Lalian()

{

new Thread()

{

@Override

public void run()

{

super.run();

myHandler.post(new Runnable() {

@Override

public void run() {

animDown.stop();

imgGameWord.clearAnimation();

imgGameWord.destroyDrawingCache();

}

});

}

}.start();}

相關焦點

  • 動態圖片在線製作技巧,怎樣自製表情包gif動圖?
    隨著社交和網絡的不斷發展,各種社交軟體的火爆,人們之間交流方式也出現了相應的改變,由最早的文字溝通到開始使用一些簡單的符號、表情圖片,逐步演變為日益多元化的表情文化,用戶使用一些自製的、流行元素圖片來進行溝通。
  • 怎麼生成GIF?圖片動態製作怎麼做?
    在日常生活中經常會使用各種類型的gif動態圖片,比如在編輯公眾號推文,發布朋友圈,製作表情包等。那麼常用的製作gif動圖的方法是gif合成,視頻轉gif動圖兩種方式,這兩種方式的操作都比較簡單,無需掌握專業的設計技術就能夠輕鬆完成gif動態圖片製作具體,下面給大家分享一下gif合成的操作方法,快速製作閃圖gif素材。打開網站,點擊添加圖片功能,將準備好的圖片上傳到網站。
  • GIF動態圖片怎麼加文字
    你知道怎麼給gif動態圖片加文字咩?Ahem!~ GIF分為靜態GIF和動態GIF。一般動態gif圖片添加文字如處理不好,就會變成靜態圖片了,這當然不是我們要的效果啦。那怎樣在gif動態圖上加文字,又能完全保留原始動畫信息呢?看看下面的動畫gif添加文字的解決方案,問題也就迎刃而解了。
  • 怎麼製作動態圖片?手機如何製作清晰gif動圖?
    對於gif動圖大家是非常熟悉的一種圖片展現形式,比如平常在微信,QQ中使用的表情包就是gif動圖樣式的一種。一般獲取GIF動圖的渠道主要是來自網上或者對於好友使用的比較有趣的圖片進行收藏,然後在聊天的時候使用大部分的朋友都是不會自己動手製作gif動圖的,今天分享給大家手機手機如何製作gif動態圖的詳細步驟。打開手機自帶瀏覽器,搜索網站。
  • 第35期 ▍用視頻製作gif動態圖片
    這一期的教程是培訓微課程的時候,gif圖(也就是可以不斷動圖)應用到微課程中可以起到吸引學員的效果,很多老師可能覺得這個只是單純搞笑的一個效果,其實並不是,根據大量的研究分析表明,相比較於傳統的課程而言,在線課程就是需要大量的動畫來吸引觀看學員的眼球,以免單純的盯在同一個畫面中造成視覺疲勞,基於以上原因,我決定做兩期關於這樣的教程,教程內容非常簡單,與大家期待,通過這期的教程就能製作出那種大量
  • 動態圖片gif怎麼製作?如何在線製作gif動畫?
    在日常生活中,大家可以看到很多不同類型的gif動圖,那麼大家知道動態圖片gif怎麼製作嗎?下面教大家一種gif製作的方法,通過將多張靜態圖片合成做出gif動圖,完成閃動圖片製作,並且可以自定義gif的尺寸,圖片切換的頻率,具體操作步驟如下所示,一起來看一下。
  • 美圖秀秀發布gif動態圖片拍攝應用
    在手機拍照分享越來越流行的今天,靜態圖片已經無法滿足許多用戶的需求了,於是出現了一些快速拍攝簡單的動態gif圖片的應用。美圖gif就是這樣一款剛剛發布的輕量應用。 使用該應用拍攝gif圖片非常簡單,只需一鍵拍攝,其便會自動保存多幀圖片以形成動態效果。另外它還繼承了美圖優秀的圖片處理功能,內置許多特效,幫助用戶快速美化動態圖片。拍好gif圖片後,用戶還可以一鍵分享到微博讓粉絲也分享那一瞬間的美麗。 此前2月份的時候,美圖秀秀曾推出了手機版。他們表示到現在iPhone版和Android版加起來保守估計用戶超過500萬。
  • Android Glide庫使用,一句話完成圖片加載、gif、高斯模糊等 && 【菜鳥窩的三個實戰項目推薦】
    Dagger2 Google根據Square的Dagger1出品的依賴注入框架,通過apt動態生成代碼,性能優於用反射技術依賴注入的框架.9. Butterknife JakeWharton大神出品的view注入框架10. Retrofit Square出品的網絡請求庫,極大的減少了http請求的代碼和步驟.11.
  • 視頻轉gif:在線視頻轉gif動態圖片的方法
    有的時候我們想要將視頻轉換成gif動圖,但是視頻轉動態圖片怎麼轉?方法很簡單,在線幾步輕鬆完成!這也是小編今天才發現的一個方法,使用到的工具是迅捷pdf在線轉換器,只需要簡單的幾步就可以將視頻轉gif,話不多說,下面將詳細的步驟分享給大家。
  • gif動態圖片加背景音樂做成視頻
    搞笑GIF圖片在網絡上隨處可見,給我們休閒娛樂生活增添了不少樂趣。有的閒人還給GIF動態圖配上音樂做成視頻,毫無違和感,BGM極有節操,堪稱經典啊!你也想學兩手麼?呵呵,本節將給大家分享...噔噔噔...如何把gif動態圖片串聯起來加上背景音樂做成視頻。
  • 迅雷影音製作gif動態圖片教程講解
    本文將教您用迅雷影音5分鐘製作教程簡易gif動態圖片【功能簡介】: 實質是簡單的視頻截取,轉化為gif格式,再也不怕不能用短視頻製作頭像了,親測有用。快捷鍵:ctrl+o第三步:找到自己要截取的視頻 【注意】:一定要停止在你要截取的視頻前,否則製作gif的時候會發現你要的視頻不完整。小竅門:在快要到達目標視頻處,點擊暫停,按住右箭頭快進,這樣會一幀一幀選擇,很方便。pss請自行腦補我找到那個點的過程,我是事先找好了再做的帖子。
  • 如何製作gif格式動態圖片?如何把短視頻做成gif動圖?
    gif動圖一般帶給大家都是比較愉悅好玩的感覺,而且動圖的類型也有很多種,比如閃圖,動畫,電視劇或者電影片段等等,都是非常常見的動圖類型。如果想要親自動手製作這種視頻類型的動圖該怎樣來進行操作呢?下面給大家分享一下gif動態圖片製作的方法,通過截取視頻轉gif動圖,一起來看一下具體的操作過程。點擊導航欄中的gif工具,選擇視頻轉gif功能。點擊選擇視頻,將想要截取片段的視頻上傳到網站。找到視頻截取的第一個畫面,選擇為開始時間,選擇截取的時長,最大支持15秒視頻截取,根據使用需求來選擇尺寸,點擊生成gif按鈕。
  • 教你如何,用Ps去掉GIF動態圖片背景顏色!
    製作後的效果圖現在開始1.第一步 :準備好一張自己喜歡的GIF動態圖片圖片的原圖2.第二步用PS打開我們所準備的圖片或者將圖片直接拖入>3.第三步選擇上方 窗口->時間軸 勾選時間軸4.第四步選擇時間軸上的圖層,及對應的右邊的圖層進行選擇,在左邊工具欄選擇"魔棒工具",然後點擊圖片中底色(背景顏色),刪除選中的背景(
  • 如何把視頻轉換成GIF動態圖片?教你這個操作!
    對於gif,相信大家都不會陌生吧?這是一種咱們日常生活中常見的圖片格式,只是它和一般的圖片不一樣,一般的圖片是靜止的,但是這種gif格式的圖片卻是動態的,它也被稱之為動圖。相信很多小夥伴都不知道吧,其實咱們的視頻文件是可以被轉換成gif的,那麼如何把視頻轉換成GIF動態圖片?
  • 五一勞動節的gif動態圖片祝福語 勞動節我們一起圓夢
    五一勞動節的gif動態圖片祝福語 勞動節我們一起圓夢時間:2020-05-20 12:30   來源:今日頭條   責任編輯:毛青青 川北在線核心提示:原標題:五一勞動節的gif動態圖片祝福語 勞動節我們一起圓夢 五一勞動節的最大特色就是國際性的,在當前世界絕大多數文明國家都有這個節日,而中國是工作階級無產專政
  • qq空間怎麼發gif圖片素材 qq空間怎麼發gif動態圖說說
    qq空間發說說,一直都是很多Q友的習慣,而很多朋友都在空間發gif圖,這裡小編來教教大家怎麼操作吧!  qq空間怎麼發gif圖片素材  簡單步驟  打開QQ空間  發表說說  點擊相冊  按一下方法繼續操作即可  qq空間怎麼發gif動態圖說說  QQ空間加上個人動態都新添了「GIF
  • 如何快速錄製gif格式動畫及動態圖片
    這一節給大家分享,如何通過瀏覽器,快速如何快速錄製gif格式動畫及動態圖片。第一種方法,首先到網上受傷安裝並且打開瀏覽器。接著需要點擊瀏覽器的截圖剪刀圖標按鈕,出現下拉。然後直接點擊截取GIF動圖,進行下一步操作。
  • 搞笑高考專用表情包,高考搞笑動態圖gif,祝福高考搞笑圖片
    今天小編就收集一些關於高考的搞笑表情包,也有祝福高考搞笑的圖片,希望你也轉發分享給身邊正在高考的學子。一起為他們加油打氣吧!先來一波搞笑祝福高考的圖片高考搞笑圖片:考的都會,蒙的都對哈哈哈,高考不是唯一出路,我們還可以搞基!搞笑圖片:雖然大學門檻高,但是我們腿長啊!
  • 如何在速賣通詳情頁插入GIF動態圖片?
    在速賣通詳情頁如何插入GIF圖片?這個確實難住了一批賣家朋友,因為速賣通的產品編輯器是不支持上傳GIF格式圖片的,所以今天就手把手教大家如何製作上傳動態圖片到速賣通的產品詳情頁中。 (動態圖:直觀生動地展示出產品的動態變化效果) 用動態圖來展示產品的動態效果,瞬間感覺高大上了有木有?而且買家可以很容易理解你要表達的產品特點,買家體驗也非常好。
  • 怎麼修改gif圖片大小/修改gif尺寸
    很多時候我們在網上獲得一些gif格式的動畫圖片,或從高清視頻截取出的gif圖片,往往尺寸過大不適合傳輸。還有網站上傳動態頭像時,對尺寸也是有限制的。這時就要修改gif尺寸了。現在大多數修改gif圖片大小的軟體都只能生成靜態的縮小圖片,而丟失了動畫部分的信息。