2

イメージビューに表示したい png シーケンスがあります。それぞれ最大 44kb の 745 フレームがあり、23 fps で再生したいと考えています。一部のフレームは前のフレームとは異なるか空白であるため、たとえばフレーム 100 ~ 243 および 340 ~ 400 の更新をスキップできます。したがって、ディスク上の合計サイズは約 9 MB になります (アニメーションに一時停止があり、アニメーション オブジェクトが画面から消えることがあるため、745 フレームのうち 249 の画像のみを使用する必要があります)。すべての画像は 320 x 480 で、画面に合わせてスケーリングされます。

再生中、途中でアニメーションを止めずに他のことをする必要があります。私はJavaが初めてです。疑似コードでは、次のようなことをしたいと思います:

アクティビティが読み込まれます...

x=1~745の場合

if exsists("image" & x) then 
    imageview setbackground("image" & x) (change this every 35ms)

switch (x)
case: 10 then call a function at frame 10
case: 100 then call a function that vibrates 0.5sec at frame  100
case: 200 then call different function at frame 200

ループ

アニメーションを終了します...

その後、Activty を閉じます。

問題は、Android でこれを行う方法です。

AnimationDrawable と animationlist.xml 配列を使用してみましたが、フレームが 40 を超えると Simulator VM エラーが発生します。実際のデバイスで実行するためにもう少し取得できます。

私を正しい方向に向ける助けがあれば、感謝します。

4

1 に答える 1

0

新しい質問に含めたフレームレート要件に関する新しい問題が発生しますが、タイミングループを探していた解決策を見つけることになりました。

70 ミリ秒ごとに画像を更新するだけでよい場合、このソリューションは AnimationDrawable と同じメモリ制限なしで機能するようです。

次の新しい質問を参照してください。

23fps の ImageView での 750 フレームの透過 PNG アニメーション

于 2012-11-23T11:53:22.057 に答える