【问题标题】:Android: Gif doesn't fill screenAndroid:Gif 无法填满屏幕
【发布时间】:2018-01-07 03:19:07
【问题描述】:

我有一个使用 Movie 对象在 Canvas 对象上绘制的 gif。 gif 的分辨率为 1920x1080 像素,但仅占屏幕的四分之一左右。我如何让它扩展到屏幕上,考虑到 gif 的大小是 1920x1080,为什么它还没有这样做?

这是我绘制 gif 并初始化 Movie 对象的代码。

public SplashEnvironment(Context context, Activity act) {
    super(context);
    getHolder().addCallback(this);
    this.act = act;

    InputStream is = context.getResources().openRawResource(+ R.drawable.resized);
    mMovie = Movie.decodeStream(is);
    System.out.println(mMovie.width() + "x" + mMovie.height());
    System.out.println(getWidth() + "x" + getHeight());
}

public void draw(Canvas canvas) {
    if(canvas != null) {
        super.draw(canvas);
        Paint p = new Paint();
        p.setAntiAlias(true);

        long now = android.os.SystemClock.uptimeMillis();
        if(mMovieStart == 0)
            mMovieStart = now;
        if(mMovie != null) {
            int dur = mMovie.duration();
            if(dur == 0)
                dur = 3000;
            int relTime = (int)((now - mMovieStart) % dur);
            mMovie.setTime(relTime);
            mMovie.draw(canvas, 0, 0);
            act.runOnUiThread(new Runnable() {
                public void run() {
                    invalidate();
                }
            });
        }
    }
}

然后我还有另一个问题,尽管不那么重要。当我在 Windows 中查看 gif 时,速度更快、更流畅,但在手机上绘制时速度更慢、更不稳定。为什么会这样,可以修复吗?

【问题讨论】:

    标签: java android canvas draw gif


    【解决方案1】:

    关于大小 - 您实际显示的是视图,而不是 gif 流(您将流绘制到此视图的画布中)。您需要确保为此视图设置了正确的布局参数 - 视图的大小可能有误。

    关于 gif 质量 - 我不能告诉你太多。这显然取决于调用“绘制”函数的速率。你可以看看android-gif-drawable,应该会有更好的性能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-15
      • 2012-11-02
      • 2014-11-13
      • 2014-11-27
      • 2015-09-20
      • 1970-01-01
      相关资源
      最近更新 更多