如何在 android 中使用自定义高度和宽度调整 gif 大小?

how can I resize gif with custom height and width in android?

我正在使用 Koush/Ion 库将 gif 从互联网加载到图像视图中,但我无法调整 gif 的大小,在调用调整大小函数后,gif 变为静止

所以我的问题是,有没有什么方法可以在 android 中按方面调整 gif 的大小?

这是我计算图像的纵横比高度和宽度的方法,如果有帮助的话

final int newWidth = deviceWidth;
final int newHeight = (int) ((int) newWidth * (imageHeight / imageWidth));

您可以在 android 中以编程方式调整 gif 的大小。当您这样做时,gif 不会动画,因为它变成了普通图像。为了调整 gif 的大小并使其动画化,我能给你的唯一建议是使用像

这样的在线调整大小工具

稍后将调整大小的 gif 保存在您的 assets 文件夹中,然后使用您使用的 Ion library 调用它

Ion.with(yourImageView).load("yourAssetFolder/yourGifImage.gif")

我想我终于找到了解决办法, 首先用 FIT_XY 缩放图像,然后将 'newHeight' 设置为图像视图的高度

imageView.setScaleType(ScaleType.FIT_XY);
imageView.getLayoutParams().height = newHeight; 

代码片段

Ion.with(imageView)
    .animateGif(AnimateGifMode.ANIMATE)
    .load(imgUrl)
    .setCallback(new FutureCallback < ImageView > () {

    @SuppressLint("NewApi")
    @Override
    public void onCompleted(Exception arg0,
    ImageView arg1) {

        imageView.getViewTreeObserver().addOnPreDrawListener(
        new ViewTreeObserver.OnPreDrawListener() {
            public boolean onPreDraw() {

                imageView.getViewTreeObserver()
                    .removeOnPreDrawListener(this);

                imageView.setScaleType(ScaleType.FIT_XY);
                imageView.getLayoutParams().height = newHeight;

                return true;
            }
        });
    }
});