右から左に波が動くアニメーションをやりたいです。波の始まりと終わりが一致する波をイメージしました

波が動くアニメーションをやりたいのですが、animationlist400フレーム以上が必要になり、アプリケーションのサイズが大きくなります...
この唯一のフレームを右から左に移動する方法が必要です、何か助けはありますか?
Drawableを実装する独自のを作成しAnimatable、画像を右から左に移動させることができます。それは実際に持っていることは非常に便利なものになるでしょう。ただし、XMLから指定することはできず、プログラムで作成して設定する必要があります。
まず、画像srcのサイズを2倍にする必要があり、1つではなく2つの波があります。次に、imageviewのフレーム境界で遊ぶ必要があり、1つの波だけを合わせる必要があります。これが手がかりです。
画像のサイズ、特に幅に注意してください。
アニメーションには、次を使用します。
<?xml version="1.0" encoding="utf-8"?>
<translate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0%"
    android:toXDelta="-50%"
    android:fromYDelta="0%"
    android:toYDelta="0%"
    android:duration="500"
    android:repeatCount="1000"
    android:interpolator="@android:anim/linear_interpolator"
    android:zAdjustment="top" />
たとえば、res / anim/wave.xmlという名前を付けることができます
クラス活動?):
    ...
    Animation anim = AnimationUtils.loadAnimation( this, R.anim.wave);
    anim.setRepeatMode(Animation.Infinite);
    animatedIm = (ImageView) findviewbyid(<your-id>)
    animatedIm.setAnimation(anim); 
連続波を動かすには、imageviewサイズで遊ぶ必要があるかもしれません
gifを作成して、このGIFを再生することもできます。コードは次のとおりです。
クラスMainActivity:
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new MYGIFView(MainActivity.this));
    }
}
クラスMYGIFView:
import java.io.InputStream;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Movie;
import android.view.View;
class MYGIFView extends View {
    Movie movie, movie1;
    InputStream is = null, is1 = null;
    long moviestart;
    public MYGIFView(Context context) {
        super(context);
        // Provide your own gif animation file
        is = context.getResources().openRawResource(R.drawable.animation);
        movie = Movie.decodeStream(is);
    }
    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawColor(Color.WHITE);
        super.onDraw(canvas);
        long now = android.os.SystemClock.uptimeMillis();
        System.out.println("now=" + now);
        if (moviestart == 0) { // first time
            moviestart = now;
        }
        System.out.println("\tmoviestart=" + moviestart);
        int relTime = (int) ((now - moviestart) % movie.duration());
        System.out.println("time=" + relTime + "\treltime=" + movie.duration());
        movie.setTime(relTime);
        movie.draw(canvas, this.getWidth() / 2 - 20, this.getHeight() / 2 - 40);
        this.invalidate();
    }
}
ドローアブルフォルダの中にはGIF画像があります。