如何适应GIF文件,以在Android的屏幕尺寸(How to fit GIF file to sc

2019-07-29 09:02发布

我使用的电影类播放GIF动画文件,但在屏幕内可能不适合。

如何缩放或适合gif文件屏幕大小?

我已GIF视图自定义视图,并使用Movie类播放动画。

Answer 1:

你可以用这个代码执行此操作:

    float scaleWidth = (float) ((screenwidth / (1f*gifwidth)));//add 1f does the trick
    float scaleHeight = (float) ((screenheight / (1f*gifheight)));
    canvas.scale(scaleWidth, scaleHeight);
    mMovie.draw(canvas, 0, 0);//mMovie is my gif picture


Answer 2:

试试这个GifImageView

设置视频的高宽屏幕高度Widht。

   init()
    {
        WindowManager wManager = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
        Display display = wManager.getDefaultDisplay();
        float screenwidth = display.getWidth();
        float screenheight = display.getHeight();

        mWidth = (int) screenwidth;
        mHeight = (int) screenheight;

        //Then force invalidated the layout of this view.

        requestLayout();
    }

当你调用从活动setGifImageResource()这个方法将被调用。

活动看起来象下面这样:

@Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.myactivity);

        GifImageView gifImageView = (GifImageView) findViewById(R.id.GifImageView);
        gifImageView.setGifImageResource(R.drawable.my_gif);
    }

同样,在我们的自定义布局,我们需要如下:

确定的视图所测得的宽度和高度。

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {     
        setMeasuredDimension(mWidth, mHeight);
}

重要的代码,同时在画布上绘制。

@Override
protected void onDraw(Canvas canvas) {

        //Other general code (included in given link)...

        if (mMovie != null) {

            //Other general code (included in given link)...

            canvas.scale((float) this.getWidth() / (float) mMovie.width(),
                    (float) this.getHeight() / (float) mMovie.height());
            mMovie.draw(canvas, 0, 0);          
            invalidate();
        }
}

我已经定制了这个观点作为我们的要求。

检查下面的链接。

https://github.com/NihalPandya/demoUpload/blob/master/GifImageView.java



Answer 3:

如果使用的是一个画布(@surface视图)采取其高度和宽度在gameloop并用其值绘制背景图像。 如果不,

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
float tmp = display.getHeight;

现在tmp目录将包含显示高度的价值。 同样guese的宽度。 使用这些属性来拉伸GIF。

但是我必须说,这种功能已被弃用,必须有一个更好的办法,这会工作得很好,虽然:)



Answer 4:

您可以使用帧动画,而不是gif动画帧得到类似的最终结果和缩放。 你需要提取从GIF每一帧,并把各个帧作为PNG(或其他支持的格式)文件在res /可绘制文件夹。 创建和使用动画绘制:

http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html

要缩放动画, 检查此 。

有各种scaleTypes你可以用用这个方法来扩展你的动画。

我知道这并不直接回答这个问题,但它会给期望的最终结果。



Answer 5:

我想看看在这里 。 全教程,涵盖3种不同的方式来显示/播放GIF的。 显然,这不是很容易,还有与谷歌开放的问题报告。 祝好运 :)



文章来源: How to fit GIF file to screen size in android