如何在 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;
}
});
}
});
我正在使用 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;
}
});
}
});