日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > 綜合技術(shù) > Android下載并顯示GIF圖

Android下載并顯示GIF圖

來源:程序員人生   發(fā)布時(shí)間:2015-05-05 08:30:03 閱讀次數(shù):3194次

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

  這篇文章主要是展現(xiàn)如何使用該項(xiàng)目的Demo,以備不時(shí)之需。

  Demo內(nèi)容:通過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:下載它的開源庫,好像需要翻墻,不方便的同學(xué)可以直接從Demo中拿。

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


生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 国产精品爱啪在线线免费观看 | 国产精品一区二区久久久 | 久久成人18免费网站 | 图片区自拍偷拍 | 91cc.live 最新国产 | 精品av| 国产视频一区二区三区四区 | 国产成人综合久久 | 免费观看污污视频 | 在线国产视频 | 国产a一三三四区电影 | 玖玖色在线 | 男人av在线 | 午夜福利一级毛片 | 国产四区| 日韩精品影院 | 亚洲精品黄色 | 久久com| 在线日韩一区二区 | 青青草国产成人av片免费 | 欧美日韩精品一区二区三区蜜桃 | youjizz日本人| 亚洲精品免费视频 | 国产一区中文字幕 | 国产精品久久久久久久久久久久久 | 在线观看高清av | 99re99热 | 国产精品久久久久久久免费软件 | 99在线观看 | 99精品国产一区二区三区 | 欧美成人一区二区三区 | 九九精品视频在线 | 亚洲激情在线 | 91麻豆产精品久久久久久 | 爽爽影院在线看 | 精品一区二区三区在线视频 | 在线色综合 | 福利视频网址 | 日韩欧美影院 | 不卡的av在线播放 | 欧美a级成人淫片免费看 |