GIF不显示在三星Galaxy Note 2 [英] GIF doesn't display on Samsung Galaxy Note 2

查看:203
本文介绍了GIF不显示在三星Galaxy Note 2的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的应用程序的问题,在三星Galaxy Note 2显示GIF(安卓4.1.1)。一切都很好,对Galaxy Nexus的7模拟器等。 下面是我的源$ C ​​$ C:

 公共类ShouldersEx1延伸活动{

查看图。

@覆盖
保护无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);

    鉴于= findViewById(R.id.image_arms_ex1);

    的setContentView(R.layout.shoulders_ex1);
}
 

}

 公共类GIFView扩展视图{
私人电影片;
专用长moviestart;

公共GIFView(上下文的背景下)抛出IOException异常{
    超(上下文);
    电影= Movie.de codeStream(getResources()getAssets()开(barki1.gif));
}

公共GIFView(上下文的背景下,ATTRS的AttributeSet)抛出IOException异常{
    超(背景下,ATTRS);
    电影= Movie.de codeStream(getResources()getAssets()开(barki1.gif));
}

公共GIFView(上下文的背景下,ATTRS的AttributeSet,诠释defStyle)抛出IOException异常{
    超(背景下,ATTRS,defStyle);
    电影= Movie.de codeStream(getResources()getAssets()开(barki1.gif));
}

@覆盖
保护无效的OnDraw(帆布油画){
    super.onDraw(画布);
    长今= android.os.SystemClock.uptimeMillis();
    涂料P =新的油漆();
    p.setAntiAlias​​(真正的);
    如果(moviestart == 0)
        moviestart =现在;
    INT reltime指示;
    reltime指示=(INT)((现 -  moviestart)%movie.duration());
    movie.setTime(reltime指示);
    movie.draw(帆布,0,0);
    this.invalidate();
}
 

}

 < LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
机器人:layout_width =FILL_PARENT
机器人:layout_height =FILL_PARENT
机器人:方向=垂直>

< com.personaltrainer.utils.GIFView
    机器人:ID =@ + ID / image_arms_ex1
    机器人:layout_width =320dp
    机器人:layout_height =240dp
    机器人:layout_gravity =中心
    机器人:layout_marginLeft =30dp>
< /com.personaltrainer.utils.GIFView>

<的TextView
    机器人:ID =@ + ID / tresc_informacje
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
    机器人:文本=@字符串/ shoulders_ex1
    机器人:TEXTSIZE =20SP
    机器人:layout_margin =3DP/>
 

什么是错的? 请注意,每个屏幕上我有以下错误:

  2月1号至4日:12:06.250:E / SpannableStringBuilder(29691):SPAN_EXCLUSIVE_EXCLUSIVE跨度不能有长度为零
 

解决方案

好了,据我知道有没有解决方法了。下面是官方报告的问题:的http:// code.google.com/p/android/issues/detail?id=3422

GIF不会在Android 4.1和较新的工作,尽管在Android模拟器,它适用于每一个Android版本的事实。

可能的解决方案我看到:

  • 等待Android开发来解决这个问题。

  • 拆分每个GIF成单独的帧和手动更改它每隔200毫秒或类似

I have problem with displaying GIF on Samsung Galaxy Note 2 (Android 4.1.1) in my app. Everything is fine on Galaxy Nexus 7 emulator and others. Here is my source code:

public class ShouldersEx1 extends Activity {

View view;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    view = findViewById(R.id.image_arms_ex1);

    setContentView(R.layout.shoulders_ex1);
}

}

public class GIFView extends View {
private Movie movie;
private long moviestart;

public GIFView(Context context) throws IOException {
    super(context);
    movie = Movie.decodeStream(getResources().getAssets().open("barki1.gif"));
}

public GIFView(Context context, AttributeSet attrs) throws IOException {
    super(context, attrs);
    movie = Movie.decodeStream(getResources().getAssets().open("barki1.gif"));
}

public GIFView(Context context, AttributeSet attrs, int defStyle) throws IOException {
    super(context, attrs, defStyle);
    movie = Movie.decodeStream(getResources().getAssets().open("barki1.gif"));
}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    long now = android.os.SystemClock.uptimeMillis();
    Paint p = new Paint();
    p.setAntiAlias(true);
    if (moviestart == 0)
        moviestart = now;
    int relTime;
    relTime = (int) ((now - moviestart) % movie.duration());
    movie.setTime(relTime);
    movie.draw(canvas, 0, 0);
    this.invalidate();
}

}

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<com.personaltrainer.utils.GIFView
    android:id="@+id/image_arms_ex1"
    android:layout_width="320dp"
    android:layout_height="240dp"
    android:layout_gravity="center"
    android:layout_marginLeft="30dp" >
</com.personaltrainer.utils.GIFView>

<TextView
    android:id="@+id/tresc_informacje"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/shoulders_ex1"
    android:textSize="20sp" 
    android:layout_margin="3dp"/>

What can be wrong? Please notice that on every screen I have following error:

01-04 02:12:06.250: E/SpannableStringBuilder(29691): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length

解决方案

Ok, as far as I know there is no workaround for it. Here is an officially reported issue: http://code.google.com/p/android/issues/detail?id=3422

GIF doesn't work on Android 4.1 and newer, despite the fact that on the Android emulator it works on every Android version.

Possible solutions I see:

  • wait for Android developers to resolve this issue

  • split every GIF into separate frames and "manually" change it every 200 ms or similar

这篇关于GIF不显示在三星Galaxy Note 2的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆