Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中使GIF文件适合屏幕大小_Android_View_Animated Gif - Fatal编程技术网

如何在android中使GIF文件适合屏幕大小

如何在android中使GIF文件适合屏幕大小,android,view,animated-gif,Android,View,Animated Gif,我正在使用电影类播放gif动画文件,但无法在屏幕中播放 如何根据屏幕大小缩放或调整gif文件 我已经使用电影类制作了GIF视图自定义视图和播放动画。我想看一下。完整教程,涵盖3种显示/播放GIF的不同方式。显然,这并不容易,谷歌仍有公开的报告。祝你好运:)如果你使用的是画布(@surface view),请在游戏循环中获取画布的高度和宽度,并用其值绘制背景图像。 如果没有, 现在tmp将包含显示高度的值。宽度相同。 使用这些属性拉伸gif 但是,我必须指出,此函数已被弃用,必须有更好的方法,这将

我正在使用电影类播放gif动画文件,但无法在屏幕中播放

如何根据屏幕大小缩放或调整gif文件

我已经使用电影类制作了GIF视图自定义视图和播放动画。

我想看一下。完整教程,涵盖3种显示/播放GIF的不同方式。显然,这并不容易,谷歌仍有公开的报告。祝你好运:)

如果你使用的是画布(@surface view),请在游戏循环中获取画布的高度和宽度,并用其值绘制背景图像。 如果没有,

现在tmp将包含显示高度的值。宽度相同。 使用这些属性拉伸gif


但是,我必须指出,此函数已被弃用,必须有更好的方法,这将很好地工作:)

您可以使用以下代码执行此操作:

    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

可以使用逐帧动画而不是动画gif来获得类似的最终结果和缩放。 您需要从gif中提取每个帧,并将单个帧作为png(或其他支持的格式)文件放置在res/drawable文件夹中。创建并使用可绘制的动画:

要缩放动画,

使用此方法可以使用多种方法缩放动画

我知道这并不能直接回答问题,但它会给出所需的最终结果。

试试这个视图

将电影的高度宽度设置为屏幕高度宽度。 当您从“活动”调用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);
    }
同样,在我们的自定义布局中,我们需要以下内容:

确定测量的视图宽度和高度。 在画布上绘制时的重要代码。 我已经按照我们的要求定制了这个视图

检查下面的链接。

你找到解决办法了吗?基本上只是链接到另一个网站的答案通常没有多大帮助。链接也会过时或中断,所以你介意在这里总结重要的内容吗?具体地说,本教程的任何部分都涉及GIF缩放,因为这就是这个问题的内容。
   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();
    }
@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();
        }
}