开发者

android animation when user touch on a image it has to animate gif file

I'm developing an applicati开发者_Go百科on,in this when user touch on a image he will see an animated image for a while and come back to original image . I'm able to animate gif file ,but the animation is running repeatedly , how to restrict animation, once the animation completes and comes back to image view please anybody help me regarding this, thanks in advance here is my code

package purpletalk.gifanimation;



import java.io.InputStream;


import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Movie;
import android.graphics.Point;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;

import android.widget.ImageView;
import android.view.View.OnTouchListener;
import android.view.animation.OvershootInterpolator;
public class GifAnimationDemo extends Activity implements OnTouchListener {
    /** Called when the activity is first created. */
      ImageView  image;
     static int i=0;
      AnimationDrawable  rocketAnimation;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        System.out.println("\tmoviestart121321="+i);
 image=(ImageView)findViewById(R.id.imageView1);


image.setOnTouchListener(this);

      }
@Override
public boolean onTouch(View v, MotionEvent event) {

    /*image.setBackgroundResource(R.drawable.babyanim);
     rocketAnimation = (AnimationDrawable)image.getBackground();
     if (event.getAction() == MotionEvent.ACTION_DOWN) {
            rocketAnimation.start();
            rocketAnimation.isOneShot();

            return true;
          }

       */
     if (event.getAction() == MotionEvent.ACTION_DOWN) {
      setContentView(new GIFView(this));

     }
     else
         {setContentView(R.layout.main);
         }

    return false;

}

class GIFView extends View {

    Movie movie;
    InputStream is=null;
    long moviestart;
      private long startTime;
        private long endTime;
        private long duration=100000;
    public GIFView(Context context) {
        super(context);
        is=context.getResources().openRawResource(R.drawable.baby1);

        movie=Movie.decodeStream(is);

    }


    @Override

    protected void onDraw(Canvas canvas) {
        canvas.drawColor(0xFFCCCCCC);
        super.onDraw(canvas);
    //long now=android.os.SystemClock.uptimeMillis();
 long curTime = System.currentTimeMillis();

    //  float percentTime = (float) (curTime - startTime)
     // (float) (endTime - startTime);
        //System.out.println("now="+now);
           // first time
             moviestart = 0;


      System.out.println("\tmoviestart="+i);
         int relTime = (int)((curTime - moviestart) % movie.duration()) ;

        // System.out.println("time="+relTime+"\treltime="+movie.duration());
    //  movie.setTime((int) (now+movie.duration()));

  // movie.duration();
         movie.setTime(relTime);
         movie.draw(canvas,20,20);
     this.invalidate();
    }
    @Override
    protected void onAnimationEnd() {
        // TODO Auto-generated method stub
        Log.e("Animation end","time");
        super.onAnimationEnd();
    }


    public void onAnimateMove(float dx, float dy, long duration) {

        startTime = System.currentTimeMillis();
        endTime = startTime + duration;

    }
}

}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜