我有一个应用,当用户打开指向图片的链接,而不是打开浏览器时,会在ImageView
内创建浮动Service
并显示在所有其他应用上方(需要android.permission.SYSTEM_ALERT_WINDOW
权限)。以下是该应用的链接:Tappic。
我想使用Glide添加动画GIF支持(我也尝试过其他库,但结果总是一样)但只显示GIF的第一帧,然后停止。
以下是我在Service
:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
dataString = intent.getDataString();
if (dataString != null)
Glide.with(this).load(dataString).into(tooltipImage);
return START_NOT_STICKY;
}
您可以查看显示问题的video hosted in Google Drive。
如果我在屏幕上移动视图,您可以看到它可以正常工作。以下是处理移动的代码(tooltipContainer
是包含ImageView
的布局):
tooltipImage.setOnTouchListener(new View.OnTouchListener() {
private int initialX;
private int initialY;
private float initialTouchX;
private float initialTouchY;
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
detector.onTouchEvent(motionEvent);
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
initialX = params.x;
initialY = params.y;
initialTouchX = motionEvent.getRawX();
initialTouchY = motionEvent.getRawY();
return true;
case MotionEvent.ACTION_MOVE:
params.x = initialX + (int) (motionEvent.getRawX() - initialTouchX);
params.y = initialY + (int) (motionEvent.getRawY() - initialTouchY);
windowManager.updateViewLayout(tooltipContainer, params);
return true;
}
return false;
}
});
我不知道使GIF动画工作的问题在哪里。
答案 0 :(得分:0)
我实际上在个人项目中测试了Glide,Picasso和Fresco的动画GIF。 Glide正确加载动画GIF可能有50%的时间适合我。很多时候它还添加了一些图像伪像和/或跳过的帧。
在这三者中,Fresco实际上对动画GIF完美无缺 - 加载速度快,堆内存开销低,而且我还没有看到任何文物。给Fresco一个镜头,可能是Glide无法正确显示你的GIF。