3

movie クラスを使って gif アニメーション ファイルを再生していますが、画面に収まりません。

gifファイルを画面サイズに合わせて拡大または縮小する方法は?

GIF ビューのカスタム ビューを取得し、Movie クラスを使用してアニメーションを再生しました。

4

5 に答える 5

4

このコードでこれを行うことができます:

    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
于 2013-12-28T19:44:54.540 に答える
2

キャンバス (@surface ビュー) を使用している場合は、ゲームループでその高さと幅を取得し、その値で背景画像を描画します。そうでない場合は、

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

これで、tmp にディスプレイの高さの値が含まれます。幅についても同じ推測。これらのプロパティを使用して gif を引き伸ばします。

ただし、この関数は非推奨であり、より良い方法が必要であると言わざるを得ませんが、これは問題なく機能します:)

于 2012-12-16T07:30:31.307 に答える
1

アニメーション gif の代わりにフレームごとのアニメーションを使用して、同様の最終結果とスケーリングを得ることができます。gif から各フレームを抽出し、個々のフレームを png (または他のサポートされている形式) ファイルとして res/drawable フォルダーに配置する必要があります。アニメーション ドローアブルを作成して使用します。

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

アニメーションをスケーリングするには、 これをオンにします。

このメソッドを使用してアニメーションをスケーリングするために使用できるさまざまなscaleTypesがあります。

これが質問に直接答えないことはわかっていますが、望ましい最終結果が得られます。

于 2013-12-28T21:49:18.170 に答える
0

ここを見てみましょう。GIF を表示/再生する 3 つの異なる方法をカバーする完全なチュートリアル。どうやらそれは簡単なことではなく、Google で未解決の問題レポートがまだあります。幸運を :)

于 2012-12-16T05:06:38.807 に答える