Androidプラットフォームが初めてです。私は、次のしているJavaコードでAndroid AnimationDrawableアニメーションの再生時間をオンザフライで変更するにはどうすればよいですか?
<animation-list
xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/image_1" android:duration="200" />
<item android:drawable="@drawable/image_1_25" android:duration="200" />
<item android:drawable="@drawable/image_1_5" android:duration="200" />
<item android:drawable="@drawable/image_1_75" android:duration="200" />
<item android:drawable="@drawable/image_2" android:duration="200" />
<item android:drawable="@drawable/image_2_25" android:duration="200" />
<item android:drawable="@drawable/image_2_5" android:duration="200" />
<item android:drawable="@drawable/image_2_75" android:duration="200" />
<item android:drawable="@drawable/image_3" android:duration="200" />
<item android:drawable="@drawable/image_3_25" android:duration="200" />
<item android:drawable="@drawable/image_3_5" android:duration="200" />
<item android:drawable="@drawable/image_3_75" android:duration="200" />
<item android:drawable="@drawable/image_4" android:duration="200" />
<item android:drawable="@drawable/image_4_25" android:duration="200" />
<item android:drawable="@drawable/image_4_5" android:duration="200" />
<item android:drawable="@drawable/image_4_75" android:duration="200" />
</animation-list>
:私が持っているXMLファイルで
:私は私のアプリでAminationDrawableを使用して16「フレーム」のセットをアニメーション化するには、次のように使用しています
まず、クラスを宣言し、アニメーションを設定するonCreate()
メソッドを追加します。その後、
public class MyNewActivity extends Activity
{
// member variables (accessible from within class methods below).
AnimationDrawable mainAnimation;
long mSpeed = 50;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.my_widget);
// set up image
ImageView mainImage = (ImageView) findViewById(R.id.image_widget);
mainImage.setBackgroundResource(R.drawable.animated_image);
mainAnimation = (AnimationDrawable) mainImage.getBackground();
};
<...snip...>
...後でユーザーが、私はアニメーションの移動を開始するには、次の呼び出しボタンを押したときに、私、私の描画を開始する上:
private void start()
{
// start the image rotating.
if (mainAnimation.isRunning())
mainAnimation.stop();
int numFrames = mainAnimation.getNumberOfFrames();
for (int ii = 0; ii < numFrames; ii++)
{
// change the animation speed.
Drawable d = mainAnimation.getFrame(ii);
mainAnimation.scheduleDrawable(d, mainAnimation, mSpeed);
}
}
<...snip...>
だから、他の場所で、私はに場所を持っているコードでメンバ変数mSpeed
を調整します。私がこれをしてstart()
を呼び出すと、アニメーションが始まりますが、速度は常に同じです(本質的には上記のXMLで定義されたものです)。私の質問は、このアニメーションを移動するフレームの「期間」を変更する方法ですユーザー入力に基づいてより速く/遅くなりますか?「継続時間」の状態を変更する方法はなく、上記のScheduleDrawable()
コールが図面のフレーム期間を変更するという前提の下にありました。
良い質問です。私は開発者のドキュメントを見ることからこれを行う方法はありませんが、私はその答えを見ることに興味があります。 – kcoppock