現在很多App內有播放Gif圖片的功能,這些Gif圖片一般都是在點擊或者滑動到它後纔會開始加載播放,所以我們需要在一開始只顯示Gif圖片的第一幀,那麼如何獲取呢?
1、讓後臺返回Gif的第一幀圖片
2、自己針對Gif獲取它的第一幀圖片
第二種方法的代碼如下
/**
* 獲取Gif圖片第一幀
*
* @param url
* @return
*/
public static void getGifFirstFrame(String url, OnGifListener listener) {
mGifFixThreadPool.execute(() -> {
HttpURLConnection connection;
try {
connection = (HttpURLConnection) new URL(url).openConnection();
InputStream inputStream = connection.getInputStream();
Movie gif = Movie.decodeStream(inputStream);
Bitmap firstFrame = Bitmap.createBitmap(gif.width(), gif.height(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(firstFrame);
gif.draw(canvas, 0, 0);
canvas.save();
mMainHandler.post(() -> {
listener.onFirstFrame(firstFrame);
listener.onGifSize(gif.width(), gif.height());
});
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
});
}
public interface OnGifListener {
void onGifSize(int width, int height);
void onFirstFrame(Bitmap bitmap);
}