0

Koush/Ion ライブラリを使用してインターネットから GIF をイメージビューにロードしていますが、GIF のサイズを縦横に変更することはできません。サイズ変更関数を呼び出すと、GIF が静止します。

だから私の質問は、Androidでアスペクト比でgifのサイズを変更できる方法はありますか?

これが役立つ場合、画像の縦横の高さと幅を取得するための私の計算です

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

2 に答える 2

2

私は最終的に解決策を見つけたと思います。最初に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;
            }
        });
    }
});
于 2015-05-06T07:54:45.877 に答える
0

プログラムでAndroidのgifのサイズを変更できます。そうすると、通常の画像になるため、gif はアニメーション化されません。GIF のサイズを変更してアニメーション化するには、次のようなオンラインのサイズ変更ツールを使用することをお勧めします。

後でサイズ変更されたgifをフォルダーに保存し、次のように使用するをassets使用して呼び出しますIon library

Ion.with(yourImageView).load("yourAssetFolder/yourGifImage.gif")
于 2015-05-06T05:35:57.700 に答える