现在很多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);
}