多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > Android下載并顯示GIF圖

Android下載并顯示GIF圖

來源:程序員人生   發布時間:2015-05-05 08:30:03 閱讀次數:3190次

   最近項目需要實現在線加載GIF圖的功能,因而我在網上翻了1番,發現有個開源項目(android-gif-drawable)可以很好的支持GIF動態圖的顯示。而且它的底層解碼使用C實現,極大的提高了解碼效力,同時很大程度上避免了OOM現象出現。

  這篇文章主要是展現如何使用該項目的Demo,以備不時之需。

  Demo內容:通過URL下載圖片,并且判斷是不是是gif圖片,顯示圖片。


布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.testgif.MainActivity" > <pl.droidsonroids.gif.GifImageView android:id="@+id/myGifView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#ffffff" android:src="@drawable/ic_launcher" /> </RelativeLayout>



Activity代碼:

package com.example.test; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import pl.droidsonroids.gif.GifDrawable; import pl.droidsonroids.gif.GifImageView; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Movie; import android.os.AsyncTask; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.view.Menu; public class MainActivity extends Activity { // protected static final String IMAGE_URL = "http://img.blog.csdn.net/20150410135837339"; protected static final String IMAGE_URL ="http://img.blog.csdn.net/20150310123909933"; protected static final String TAG = "MainActivity"; private GifImageView myGifImageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myGifImageView = (GifImageView) findViewById(R.id.myGifView); new AsyncTask<Void, Void, byte[]>() { @Override protected byte[] doInBackground(Void... params) { byte[] gifbyte = null; HttpURLConnection conn = null; try { URL url = new URL(IMAGE_URL); conn = (HttpURLConnection) url.openConnection(); ByteArrayOutputStream out = new ByteArrayOutputStream(); InputStream in = conn.getInputStream(); if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) { // 連接不成功 Log.i(TAG, "連接不成功"); return null; } byte[] buffer = new byte[1024]; int len = 0; while ((len = in.read(buffer)) > 0) { out.write(buffer, 0, len); } gifbyte = out.toByteArray(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { conn.disconnect(); } // 寫入文件 /* * FileOutputStream fos = null; try { * * File root = Environment.getExternalStorageDirectory(); File * myFile = new File(root, "test.jpg"); Log.v(TAG, * myFile.getAbsolutePath()); fos = new * FileOutputStream(myFile); fos.write(gifbyte); } catch * (FileNotFoundException e) { e.printStackTrace(); } catch * (IOException e) { e.printStackTrace(); } finally { if (fos != * null) { try { fos.close(); } catch (IOException e) { * * e.printStackTrace(); } } } */ return gifbyte; } protected void onPostExecute(byte[] gifbyte) { // 判斷是不是是gif圖 Movie gif = Movie.decodeByteArray(gifbyte, 0, gifbyte.length); if (gif != null) { Log.v(TAG, "是gif圖片"); GifDrawable gifDrawable = null; try { gifDrawable = new GifDrawable(gifbyte); } catch (IOException e) { e.printStackTrace(); } myGifImageView.setImageDrawable(gifDrawable); } else { Bitmap gifBitmap = BitmapFactory.decodeByteArray(gifbyte, 0, gifbyte.length); myGifImageView.setImageBitmap(gifBitmap); } }; }.execute(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } }

PS:下載它的開源庫,好像需要翻墻,不方便的同學可以直接從Demo中拿。

Demo:https://github.com/mandmLeee/GifDemo


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 天天做天天爱天天爽综合网 | 国内精品视频在线播放一区 | 欧美精品日韩 | 国产一区二区不卡免费观在线 | 亚洲欧美一区二区三区综合 | 免费成年人在线观看视频 | 亚洲图片欧美小说 | 天堂在线www | 女人笫一次一级毛片 | 欧美一区二区视频在线观看 | 黑人巨大xxxx | 武则天一级淫片免费放 | 欧美日韩精品 | 欧美一级毛片在线播放 | 久久99精品国产99久久 | 国产精品区一区二区免费 | 麻豆影视视频高清在线观看 | 最近中文字幕完整在线看一 | 欧美喷| 亚洲在线免费视频 | 波多野结衣中文字幕久久 | 欧美一区亚洲 | 亚洲人在线视频 | 中文字幕a∨在线乱码免费看 | 欧美一级日韩 | 国产免费一区二区在线看 | 一区二区中文字幕亚洲精品 | 欧美二区三区 | 亚洲 在线播放 | 国产片一级毛片视频 | 亚洲综合国产一区二区三区 | 性色a∨人人爽网站 | 国产精品综合一区二区三区 | 日韩精品中文字幕一区三区 | 人善交zzzxxx另类 | 亚洲自拍偷拍区 | 成人亚洲综合 | 国产欧美精品一区二区三区四区 | 久久精品国产亚洲麻豆 | 亚洲精品456 | 国产精品第1页 |